[openrtm-users 00373] サービスポートの接続数制御について

5 個の投稿 / 0 new
最終投稿
root
オフライン
Last seen: 2日 14時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00373] サービスポートの接続数制御について

中央大学の小島です。いつも、お世話になっております。

あるコンポーネントが他のコンポーネントのフラグ値を確認し、提供する機能を変えるという
コールバック機能を、フラグ制御によってサービスポートで実現することを目指しています。

しかし、複数のサービスポートが接続し、そのフラグの制御を行ってしまうと、
望んだ動作が得られなくなってしまうことが予想できます。
(プロバイダのフラグを複数のコンシューマが値を変更する場合)

このような誤動作を防ぐために、接続数の制限を設けたいと考えたのですが、実現可能でしょうか?

(以前コールバックについての質問を拝見し、作成してみたりもしたのですが、テンプレートで作成し、
 他の人がインターフェースとして使うには、コードの記述を加えるなど複雑になってしまいました。
 そこで、こちらから提供したidlファイルを使い、インターフェースを作成するだけで
 プロバイダの機能をを使えるようにしたかったため、このような形を実現したいと考えています。)

※補足
制限に関してですが、RTC-Link上や、SimpleIOなど外部からの操作に対し、
エラーとなり接続制限がかかるという形で実現できると、なお嬉しいです。
(そこまでいくと、おそらくコアな部分をいじらないと実現できないような気がしますが・・・)

ご教授願います。

未定義
root
オフライン
Last seen: 2日 14時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00374] サービスポートの接続数制御について

産総研 清水です。

サービスポートでのサービス実装は、
CORBAサーバントそのままですので、
当然、競合状態があることを前提で
ユーザが実装すべきだと私は思います。

私の場合、リエントラントでないサービスの実装を
するときは、mutexでロックをかけるようにしています。

以上、ご参考までに。

On Mon, 18 Feb 2008 03:26:00 +0900
"Takashi Kojima" wrote:

> 中央大学の小島です。いつも、お世話になっております。
>
> あるコンポーネントが他のコンポーネントのフラグ値を確認し、提供する機能を変えるという
> コールバック機能を、フラグ制御によってサービスポートで実現することを目指しています。
>
> しかし、複数のサービスポートが接続し、そのフラグの制御を行ってしまうと、
> 望んだ動作が得られなくなってしまうことが予想できます。
> (プロバイダのフラグを複数のコンシューマが値を変更する場合)
>
> このような誤動作を防ぐために、接続数の制限を設けたいと考えたのですが、実現可能でしょうか?
>
> (以前コールバックについての質問を拝見し、作成してみたりもしたのですが、テンプレートで作成し、
>  他の人がインターフェースとして使うには、コードの記述を加えるなど複雑になってしまいました。
>  そこで、こちらから提供したidlファイルを使い、インターフェースを作成するだけで
>  プロバイダの機能をを使えるようにしたかったため、このような形を実現したいと考えています。)
>
> ※補足
> 制限に関してですが、RTC-Link上や、SimpleIOなど外部からの操作に対し、
> エラーとなり接続制限がかかるという形で実現できると、なお嬉しいです。
> (そこまでいくと、おそらくコアな部分をいじらないと実現できないような気がしますが・・・)
>
> ご教授願います。
>

root
オフライン
Last seen: 2日 14時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00376] サービスポートの接続数制御について

小島様、清水様

産総研 安藤です

> 産総研 清水です。
>
> サービスポートでのサービス実装は、
> CORBAサーバントそのままですので、
> 当然、競合状態があることを前提で
> ユーザが実装すべきだと私は思います。
> 私の場合、リエントラントでないサービスの実装を
> するときは、mutexでロックをかけるようにしています。

私も、サービスのプロバイダ側の実装はそうすべきだと思います。

> > 中央大学の小島です。いつも、お世話になっております。
> > 中略
> > このような誤動作を防ぐために、接続数の制限を設けたいと考えたのですが、実現可能でしょうか?

ただし、ポート(プロバイダインターフェースではなく)自身には、何らかの接続制限
を行う機能があってもよいのではないかと考えています。
次のバージョンではそういった機能も入れたいと思います。

いま、考えているのは、rtc.confないしはコンポーネントごとのconfigurationファイルに

rtc.conf
# 接続を2接続まで許す
mycomponent.port.port0.max_connection: 2
# 接続制限なし
mycomponent.port.port1.max_connection: -1

このように記述することで、接続数に制限をかけられるようする方法です。

これ以外にも何かいい方法がありましたら是非ともアドバイス
頂ければと存じます。

以上、よろしくお願いいたします。

root
オフライン
Last seen: 2日 14時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00378] サービスポートの接続数制御について

産総研 清水様、安藤様

中央大学の小島です。
ご教授ありがとうございます。

> > サービスポートでのサービス実装は、
> > CORBAサーバントそのままですので、
> > 当然、競合状態があることを前提で
> > ユーザが実装すべきだと私は思います。
> > 私の場合、リエントラントでないサービスの実装を
> > するときは、mutexでロックをかけるようにしています。
>
> 私も、サービスのプロバイダ側の実装はそうすべきだと思います。
>

そうですね。当然、競合状態のことをかんがえて設計すべきですね。
基本的なことだったようで恐縮です。競合状態の解消については、mutexを使うことでひとまず解決したいと思います。

ただ、質問したような問題に関しては、mutexにより解決ができますが、別の問題として
接続コンポーネントが増えると、ロックを待ち状態の時間は必然的に増えてしまうと思います。
そうなると、高速な制御周期を持つようなコンポーネントを接続した場合、問題を引き起こしかねないのではないでしょうか。
(この問題についても設計について議論があるかとおもいますが・・・)

また、今後、そういったコンポーネントは、作成者が必ずしも使うわけではないと思いますので、
あらかじめ、接続制限をしておくことで、このような問題を回避できるのではと思います。

> > > 中略
>
> ただし、ポート(プロバイダインターフェースではなく)自身には、何らかの接続制限
> を行う機能があってもよいのではないかと考えています。
> 次のバージョンではそういった機能も入れたいと思います。

是非入れていただけると、幸いです。

> いま、考えているのは、rtc.confないしはコンポーネントごとのconfigurationファイルに
>
> rtc.conf
> # 接続を2接続まで許す
> mycomponent.port.port0.max_connection: 2
> # 接続制限なし
> mycomponent.port.port1.max_connection: -1
>
> このように記述することで、接続数に制限をかけられるようする方法です。
>
> これ以外にも何かいい方法がありましたら是非ともアドバイス
> 頂ければと存じます。

可能であれば、rtc.confなどで設定するだけでなく、ソースファイルにも、接続数の制限ができることは実装できませんでしょうか?
その方が、作成時に仕様を決定でき、作成者の意図を反映しやすいのではないでしょうか?

他にもあればいいなと思うことは、
識別キーが一致しなければ、接続できないような仕組みもあってもいいのではないでしょうか?

現在のポートですと、同じ型のインターフェースであれば、接続可能です。
しかし、場合によっては、用途が違うため接続したくないこともあるでしょうし、
セキュリティ上の問題で、接続させたくないこともあると思います。

とくにセキュリティを欠けたい場合には、定期的に変更する必要があるので、
インターフェース型を変えて接続できないというような実装よりも、
識別キーを変更することで接続できなくなるような仕組みの方が
保守性が高いと思いましたが、いかがでしょうか?

既にお考えかもしれませんし、勉強はしているのですが
まだまだ知識も足りないため、的はずれなことを言っていたら
申し訳ございません。

今後ともよろしくお願いいたします。

root
オフライン
Last seen: 2日 14時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00381] fPIC switch on module compilation

Dear OpenRTM developers,

please add -fPIC switch to --cflags switch of your rtm-config utility,
otherwise shared objects (.so) will be compiled without "position
independent code" switch...

for example, please refer to
http://www.fpx.de/fp/Software/tcl-c++/tcl-c++.html

anyway, in some case it works also without -fPIC, in some case never
(for example on my PC, I added it in the Makefile by hand and everything
works), in some case it works weirdly

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2195
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク