クラス RTC::PortBase

Port の基底クラス [詳細]

#include <PortBase.h>

RTC::PortBaseに対する継承グラフ

RTC::CorbaPort RTC::DataInPort RTC::DataOutPort

すべてのメンバ一覧

Public メソッド

 PortBase (const char *name="")
 コンストラクタ
virtual ~PortBase ()
 デストラクタ
virtual PortProfile * get_port_profile () throw (CORBA::SystemException)
 [CORBA interface] PortProfileを取得する
const PortProfile & getPortProfile () const
 PortProfile を取得する。
virtual
ConnectorProfileList * 
get_connector_profiles () throw (CORBA::SystemException)
 [CORBA interface] ConnectorProfileListを取得する
virtual
ConnectorProfile * 
get_connector_profile (const char *connector_id) throw (CORBA::SystemException)
 [CORBA interface] ConnectorProfile を取得する
virtual ReturnCode_t connect (ConnectorProfile &connector_profile) throw (CORBA::SystemException)
 [CORBA interface] Port の接続を行う
virtual ReturnCode_t notify_connect (ConnectorProfile &connector_profile) throw (CORBA::SystemException)
 [CORBA interface] Port の接続通知を行う
virtual ReturnCode_t disconnect (const char *connector_id) throw (CORBA::SystemException)
 [CORBA interface] Port の接続を解除する
virtual ReturnCode_t notify_disconnect (const char *connector_id) throw (CORBA::SystemException)
 [CORBA interface] Port の接続解除通知を行う
virtual ReturnCode_t disconnect_all () throw (CORBA::SystemException)
 [CORBA interface] Port の全接続を解除する
void setName (const char *name)
 Port の名前を設定する
const PortProfile & getProfile () const
 PortProfileを取得する
void setPortRef (Port_ptr port_ref)
 Port のオブジェクト参照を設定する
Port_ptr getPortRef ()
 Port のオブジェクト参照を取得する
void setOwner (RTObject_ptr owner)
 Port の owner の RTObject を指定する

Protected 型

typedef ACE_Guard
< ACE_Recursive_Thread_Mutex > 
Guard

Protected メソッド

virtual ReturnCode_t publishInterfaces (ConnectorProfile &connector_profile)=0
 Interface 情報を公開する
virtual ReturnCode_t connectNext (ConnectorProfile &connector_profile)
 次の Port に対して notify_connect() をコールする
virtual ReturnCode_t disconnectNext (ConnectorProfile &connector_profile)
 次の Port に対して notify_disconnect() をコールする
virtual ReturnCode_t subscribeInterfaces (const ConnectorProfile &connector_profile)=0
 Interface 情報を公開する
virtual void unsubscribeInterfaces (const ConnectorProfile &connector_profile)=0
 Interface の接続を解除する
bool isEmptyId (const ConnectorProfile &connector_profile) const
 ConnectorProfile の connector_id フィールドが空かどうか判定
const std::string getUUID () const
 UUIDを生成する
void setUUID (ConnectorProfile &connector_profile) const
 UUIDを生成し ConnectorProfile にセットする
bool isExistingConnId (const char *id)
 id が既存の ConnectorProfile のものかどうか判定する
ConnectorProfile findConnProfile (const char *id)
 id を持つ ConnectorProfile を探す
CORBA::Long findConnProfileIndex (const char *id)
 id を持つ ConnectorProfile を探す
void updateConnectorProfile (const ConnectorProfile &connector_profile)
 ConnectorProfile の追加もしくは更新
bool eraseConnectorProfile (const char *id)
 ConnectorProfile を削除する
bool appendInterface (const char *name, const char *type_name, PortInterfacePolarity pol)
 PortInterfaceProfile に インターフェースを登録する
bool deleteInterface (const char *name, PortInterfacePolarity pol)
 PortInterfaceProfile からインターフェース登録を削除する
template<class ValueType>
void addProperty (const char *key, ValueType value)
 PortProfile の properties に NameValue 値を追加する

Protected 変数

PortProfile m_profile
 Port の PortProfile
RTC::Port_var m_objref
 Port の オブジェクト参照
ACE_Recursive_Thread_Mutex m_profile_mutex

構成

struct  connect_func
 Port の接続を行う Functor [詳細]
struct  disconnect_all_func
 Port の全接続解除を行う Functor [詳細]
struct  disconnect_func
 Port の接続解除を行う Functor [詳細]
struct  find_conn_id
 id を持つ ConnectorProfile を探す Functor [詳細]
struct  find_interface
 name と polarity から interface を探す Functor [詳細]
struct  find_port_ref
 コンストラクタ引数 port_ref と同じオブジェクト参照を探す Functor [詳細]
struct  if_name
 instance_name を持つ PortInterfaceProfile を探す Functor [詳細]


説明

Port の基底クラス

RTC::Port の基底となるクラス。 RTC::Port はほぼ UML Port の概念を継承しており、ほぼ同等のものとみなす ことができる。RT コンポーネントのコンセプトにおいては、 Port はコンポーネントに付属し、コンポーネントが他のコンポーネントと相互作用 を行う接点であり、通常幾つかのインターフェースと関連付けられる。 コンポーネントは Port を通して外部に対しインターフェースを提供または要求 することができ、Portはその接続を管理する役割を担う。

Port の具象クラスは、通常 RT コンポーネントインスタンス生成時に同時に 生成され、提供・要求インターフェースを登録した後、RT コンポーネントに 登録され、外部からアクセス可能な Port として機能することを想定している。

RTC::Port は CORBA インターフェースとして以下のオペレーションを提供する。

このクラスでは、これらのオペレーションの実装を提供する。

これらのオペレーションのうち、get_port_profile(), get_connector_profiles(), get_connector_profile(), connect(), disconnect(), disconnect_all() は、 サブクラスにおいて特に振る舞いを変更する必要がないため、オーバーライド することは推奨されない。

notify_connect(), notify_disconnect() については、サブクラスが提供・要求 するインターフェースの種類に応じて、振る舞いを変更する必要が生ずる かもしれないが、これらを直接オーバーライドすることは推奨されず、 後述の notify_connect(), notify_disconnect() の項においても述べられる通り これらの関数に関連した protected 関数をオーバーライドすることにより 振る舞いを変更することが推奨される。

から:
0.4.0

型定義

typedef ACE_Guard<ACE_Recursive_Thread_Mutex> RTC::PortBase::Guard [protected]


コンストラクタとデストラクタ

RTC::PortBase::PortBase ( const char *  name = ""  ) 

コンストラクタ

PortBase のコンストラクタは Port 名 name を引数に取り初期化を行う と同時に、自分自身を CORBA Object として活性化し、自身の PortProfile の port_ref に自身のオブジェクトリファレンスを格納する。

引数:
name Port の名前(デフォルト値:"")

virtual RTC::PortBase::~PortBase (  )  [virtual]

デストラクタ

デストラクタ


関数

virtual PortProfile* RTC::PortBase::get_port_profile (  )  throw (CORBA::SystemException) [virtual]

[CORBA interface] PortProfileを取得する

Portが保持するPortProfileを返す。 PortProfile 構造体は以下のメンバーを持つ。

戻り値:
PortProfile

const PortProfile& RTC::PortBase::getPortProfile (  )  const

PortProfile を取得する。

本ポートの PortProfile を取得する。

戻り値:
PortProfile

virtual ConnectorProfileList* RTC::PortBase::get_connector_profiles (  )  throw (CORBA::SystemException) [virtual]

[CORBA interface] ConnectorProfileListを取得する

Portが保持する ConnectorProfile の sequence を返す。 ConnectorProfile は Port 間の接続プロファイル情報を保持する構造体であり、 接続時にPort間で情報交換を行い、関連するすべての Port で同一の値が 保持される。 ConnectorProfile は以下のメンバーを保持している。

戻り値:
この Port が保持する ConnectorProfile

virtual ConnectorProfile* RTC::PortBase::get_connector_profile ( const char *  connector_id  )  throw (CORBA::SystemException) [virtual]

[CORBA interface] ConnectorProfile を取得する

connector_id で指定された ConnectorProfile を返す。 指定した connector_id を持つ ConnectorProfile を保持していない場合は、 空の ConnectorProfile を返す。

引数:
connector_id ConnectorProfile の ID
戻り値:
connector_id で指定された ConnectorProfile

virtual ReturnCode_t RTC::PortBase::connect ( ConnectorProfile &  connector_profile  )  throw (CORBA::SystemException) [virtual]

[CORBA interface] Port の接続を行う

与えられた ConnectoionProfile の情報を基に、Port間の接続を確立する。 アプリケーションプログラム側は、幾つかのコンポーネントが持つ複数の Port を接続したい場合、適切な値をセットした ConnectorProfile を connect() の引数として与えてコールすることにより、関連する Port の 接続を確立する。

connect() に与える ConnectorProfile のメンバーのうち、name, ports, properties メンバーに対してデータをセットしなければならない。

OutPort 側の connect() では以下のシーケンスで処理が行われる。

1. OutPort に関連する connector 情報の生成およびセット

2. InPortに関連する connector 情報の取得

3. PortBase::connect() をコール Portの接続の基本処理が行われる。

4. 上記2.でInPortのリファレンスが取得できなければ、再度InPortに 関連する connector 情報を取得する。

5. ConnectorProfile::properties で与えられた情報から、 OutPort側の初期化処理を行う。

6. 上記の処理のうち一つでもエラーであれば、エラーリターンする。 正常に処理が行われた場合は RTC::RTC_OK でリターンする。

引数:
connector_profile ConnectorProfile
戻り値:
ReturnCode_t 型のリターンコード

virtual ReturnCode_t RTC::PortBase::notify_connect ( ConnectorProfile &  connector_profile  )  throw (CORBA::SystemException) [virtual]

[CORBA interface] Port の接続通知を行う

このオペレーションは、Port間の接続が行われる際に、Port間で内部的に 呼ばれるオペレーションである。 ConnectorProfile には接続対象 Port のリスト情報が保持されている。Port は ConnectorProfile を保持するとともに、リスト中の次 Port の notify_connect を呼び出す。そして、ポートをコネクタに追加した後、ConnectorProfile に 呼びだし先の Port を設定し、呼びだし元に返す。このように ConnectorProfile を使用して接続通知が伝達されていく。

引数:
connector_profile ConnectorProfile
戻り値:
ReturnCode_t 型のリターンコード

virtual ReturnCode_t RTC::PortBase::disconnect ( const char *  connector_id  )  throw (CORBA::SystemException) [virtual]

[CORBA interface] Port の接続を解除する

このオペレーションは接続確立時に接続に対して与えられる connector_id に 対応するピア Port との接続を解除する。 Port は ConnectorProfile 中のポートリストに含まれる1つのポートの notify_disconnect を呼びだす。接続解除の通知は notify_disconnect によって 実行される。

引数:
connector_id ConnectorProfile の ID
戻り値:
ReturnCode_t 型のリターンコード

virtual ReturnCode_t RTC::PortBase::notify_disconnect ( const char *  connector_id  )  throw (CORBA::SystemException) [virtual]

[CORBA interface] Port の接続解除通知を行う

このオペレーションは、Port間の接続解除が行われる際に、Port間で内部的に 呼ばれるオペレーションである。 このオペレーションは、該当する Port と接続されている他の Port に接続解除 を通知する。接続解除対象の Port はIDによって指定される。Port は ConnectorProfile 中のポートリスト内の次 Port の notify_disconnect を呼び 出す。ポートの接続が解除されると ConnectorProfile から該当する Port の 情報が削除される。このように notify_disconnect を使用して接続解除通知が 伝達されていく。

引数:
connector_id ConnectorProfile の ID
戻り値:
ReturnCode_t 型のリターンコード

virtual ReturnCode_t RTC::PortBase::disconnect_all (  )  throw (CORBA::SystemException) [virtual]

[CORBA interface] Port の全接続を解除する

このオペレーションはこの Port に関連した全ての接続を解除する。

戻り値:
ReturnCode_t 型のリターンコード

void RTC::PortBase::setName ( const char *  name  ) 

Port の名前を設定する

Port の名前を設定する。この名前は Port が保持する PortProfile.name に反映される。

引数:
name Port の名前

const PortProfile& RTC::PortBase::getProfile (  )  const

PortProfileを取得する

Portが保持する PortProfile の const 参照を返す。

戻り値:
この Port の PortProfile

void RTC::PortBase::setPortRef ( Port_ptr  port_ref  ) 

Port のオブジェクト参照を設定する

このオペレーションは Port の PortProfile にこの Port 自身の オブジェクト参照を設定する。

引数:
port_ref この Port のオブジェクト参照

Port_ptr RTC::PortBase::getPortRef (  ) 

Port のオブジェクト参照を取得する

このオペレーションは Port の PortProfile が保持している この Port 自身のオブジェクト参照を取得する。

戻り値:
この Port のオブジェクト参照

void RTC::PortBase::setOwner ( RTObject_ptr  owner  ) 

Port の owner の RTObject を指定する

このオペレーションは Port の PortProfile.owner を設定する。

引数:
owner この Port を所有する RTObject の参照

virtual ReturnCode_t RTC::PortBase::publishInterfaces ( ConnectorProfile &  connector_profile  )  [protected, pure virtual]

Interface 情報を公開する

このオペレーションは、notify_connect() 処理シーケンスの始めにコール される純粋仮想関数である。 notify_connect() では、

の順に protected 関数がコールされ接続処理が行われる。
具象 Port ではこのオペレーションをオーバーライドし、引数として 与えられた ConnectorProfile に従い処理を行い、パラメータが不適切 であれば、RteurnCode_t 型のエラーコードを返す。 通常 publishInterafaces() 内においては、この Port に属する インターフェースに関する情報を ConnectorProfile に対して適切に設定し 他の Port に通知しなければならない。
また、この関数がコールされる段階では、他の Port の Interface に関する 情報はすべて含まれていないので、他の Port の Interface を取得する処理 は subscribeInterfaces() 内で行われるべきである。
このオペレーションは、新規の connector_id に対しては接続の生成、 既存の connector_id に対しては更新が適切に行われる必要がある。

引数:
connector_profile 接続に関するプロファイル情報
戻り値:
ReturnCode_t 型のリターンコード

RTC::CorbaPort, RTC::DataInPort, と RTC::DataOutPortで実装されています。

virtual ReturnCode_t RTC::PortBase::connectNext ( ConnectorProfile &  connector_profile  )  [protected, virtual]

次の Port に対して notify_connect() をコールする

ConnectorProfile の port_ref 内に格納されている Port のオブジェクト リファレンスのシーケンスの中から、自身の Port の次の Port に対して notify_connect() をコールする。

引数:
connector_profile 接続に関するプロファイル情報
戻り値:
ReturnCode_t 型のリターンコード

virtual ReturnCode_t RTC::PortBase::disconnectNext ( ConnectorProfile &  connector_profile  )  [protected, virtual]

次の Port に対して notify_disconnect() をコールする

ConnectorProfile の port_ref 内に格納されている Port のオブジェクト リファレンスのシーケンスの中から、自身の Port の次の Port に対して notify_disconnect() をコールする。

引数:
connector_profile 接続に関するプロファイル情報
戻り値:
ReturnCode_t 型のリターンコード

virtual ReturnCode_t RTC::PortBase::subscribeInterfaces ( const ConnectorProfile &  connector_profile  )  [protected, pure virtual]

Interface 情報を公開する

このオペレーションは、notify_connect() 処理シーケンスの中間にコール される純粋仮想関数である。 notify_connect() では、

の順に protected 関数がコールされ接続処理が行われる。
具象 Port ではこのオペレーションをオーバーライドし、引数として 与えられた ConnectorProfile に従い処理を行い、パラメータが不適切 であれば、RteurnCode_t 型のエラーコードを返す。 引数 ConnectorProfile には他の Port の Interface に関する情報が 全て含まれている。 通常 subscribeInterafaces() 内においては、この Port が使用する Interface に関する情報を取得し、要求側のインターフェースに対して 情報を設定しなければならない。
このオペレーションは、新規の connector_id に対しては接続の生成、 既存の connector_id に対しては更新が適切に行われる必要がある。

引数:
connector_profile 接続に関するプロファイル情報
戻り値:
ReturnCode_t 型のリターンコード

RTC::CorbaPort, RTC::DataInPort, と RTC::DataOutPortで実装されています。

virtual void RTC::PortBase::unsubscribeInterfaces ( const ConnectorProfile &  connector_profile  )  [protected, pure virtual]

Interface の接続を解除する

このオペレーションは、notify_disconnect() 処理シーケンスの終わりにコール される純粋仮想関数である。 notify_disconnect() では、

引数:
connector_profile 接続に関するプロファイル情報

RTC::CorbaPort, RTC::DataInPort, と RTC::DataOutPortで実装されています。

bool RTC::PortBase::isEmptyId ( const ConnectorProfile &  connector_profile  )  const [protected]

ConnectorProfile の connector_id フィールドが空かどうか判定

指定された ConnectorProfile の connector_id が空であるかどうかの判定を 行う。

引数:
connector_profile 判定対象コネクタプロファイル
戻り値:
引数で与えられた ConnectorProfile の connector_id が空であれば、 true、そうでなければ false を返す。

const std::string RTC::PortBase::getUUID (  )  const [protected]

UUIDを生成する

このオペレーションは UUID を生成する。

戻り値:
uuid

void RTC::PortBase::setUUID ( ConnectorProfile &  connector_profile  )  const [protected]

UUIDを生成し ConnectorProfile にセットする

このオペレーションは UUID を生成し、ConnectorProfile にセットする。

引数:
connector_profile connector_id をセットする ConnectorProfile

bool RTC::PortBase::isExistingConnId ( const char *  id  )  [protected]

id が既存の ConnectorProfile のものかどうか判定する

このオペレーションは与えられた ID が既存の ConnectorProfile のリスト中に 存在するかどうか判定する。

引数:
id 判定する connector_id
戻り値:
id の存在判定結果

ConnectorProfile RTC::PortBase::findConnProfile ( const char *  id  )  [protected]

id を持つ ConnectorProfile を探す

このオペレーションは与えられた ID を持つ ConnectorProfile を Port が もつ ConnectorProfile のリスト中から探す。 もし、同一の id を持つ ConnectorProfile がなければ、空の ConnectorProfile が返される。

引数:
id 検索する connector_id
戻り値:
connector_id を持つ ConnectorProfile

CORBA::Long RTC::PortBase::findConnProfileIndex ( const char *  id  )  [protected]

id を持つ ConnectorProfile を探す

このオペレーションは与えられた ID を持つ ConnectorProfile を Port が もつ ConnectorProfile のリスト中から探しインデックスを返す。 もし、同一の id を持つ ConnectorProfile がなければ、-1 を返す。

引数:
id 検索する connector_id
戻り値:
Port の ConnectorProfile リストのインデックス

void RTC::PortBase::updateConnectorProfile ( const ConnectorProfile &  connector_profile  )  [protected]

ConnectorProfile の追加もしくは更新

このオペレーションは与えられた ConnectorProfile を Port に追加もしくは 更新保存する。 与えられた ConnectorProfile の connector_id と同じ ID を持つ ConnectorProfile がリストになければ、リストに追加し、 同じ ID が存在すれば ConnectorProfile を上書き保存する。

引数:
connector_profile 追加もしくは更新する ConnectorProfile

bool RTC::PortBase::eraseConnectorProfile ( const char *  id  )  [protected]

ConnectorProfile を削除する

このオペレーションは Port の PortProfile が保持している ConnectorProfileList のうち与えられた id を持つ ConnectorProfile を削除する。

引数:
id 削除する ConnectorProfile の id
戻り値:
正常に削除できた場合は true、 指定した ConnectorProfile が見つからない場合は false を返す

bool RTC::PortBase::appendInterface ( const char *  name,
const char *  type_name,
PortInterfacePolarity  pol 
) [protected]

PortInterfaceProfile に インターフェースを登録する

このオペレーションは Port が持つ PortProfile の、PortInterfaceProfile にインターフェースの情報を追加する。 この情報は、get_port_profile() によって得られる PortProfile のうち PortInterfaceProfile の値を変更するのみであり、実際にインターフェースを 提供したり要求したりする場合には、サブクラスで、 publishInterface() , subscribeInterface() 等の関数を適切にオーバーライドしインターフェースの 提供、要求処理を行わなければならない。

インターフェース(のインスタンス)名は Port 内で一意でなければならない。 同名のインターフェースがすでに登録されている場合、この関数は false を 返す。

引数:
name インターフェースのインスタンスの名前
type_name インターフェースの型の名前
pol インターフェースの属性 (RTC::PROVIDED もしくは RTC:REQUIRED)
戻り値:
インターフェース登録処理結果。 同名のインターフェースが既に登録されていれば false を返す。

bool RTC::PortBase::deleteInterface ( const char *  name,
PortInterfacePolarity  pol 
) [protected]

PortInterfaceProfile からインターフェース登録を削除する

このオペレーションは Port が持つ PortProfile の、PortInterfaceProfile からインターフェースの情報を削除する。

引数:
name インターフェースのインスタンスの名前
pol インターフェースの属性 (RTC::PROVIDED もしくは RTC:REQUIRED)
戻り値:
インターフェース削除処理結果。 インターフェースが登録されていなければ false を返す。

template<class ValueType>
void RTC::PortBase::addProperty ( const char *  key,
ValueType  value 
) [inline, protected]

PortProfile の properties に NameValue 値を追加する

PortProfile の properties に NameValue 値を追加する。 追加するデータの型をValueTypeで指定する。

引数:
key properties の name
value properties の value


変数

PortProfile RTC::PortBase::m_profile [protected]

Port の PortProfile

RTC::Port_var RTC::PortBase::m_objref [protected]

Port の オブジェクト参照

ACE_Recursive_Thread_Mutex RTC::PortBase::m_profile_mutex [mutable, protected]


OpenRTMに対してWed May 21 05:17:25 2008に生成されました。  doxygen 1.5.3