|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectorg.omg.PortableServer.Servant
RTC.PortServicePOA
jp.go.aist.rtm.RTC.port.PortBase
public abstract class PortBase
Portサーバントのベース実装となるクラスです。
Portは、UMLにおけるポートの概念をほぼ継承しており、ほぼ同等のものとみなすことができます。 RTコンポーネントのコンセプトにおいては、Portはコンポーネントに付属するものであり、 コンポーネントが他のコンポーネントと相互作用を行う接点であり、 通常は幾つかのインターフェースと関連付けられます。
コンポーネントはPortを通して外部に対してインターフェースを提供または要求 することができ、Portはその接続を管理する役割を担っています。
Portの具象クラスは、通常はRTコンポーネントインスタンス生成時に同時に生成され、 提供・要求インターフェースを登録した後、RTコンポーネントに登録され、 外部からアクセス可能なPortとして機能することを想定しています。
Portは、CORBAインターフェースとして以下のオペレーションを提供します。
上記のオペレーションのうち、get_port_profile(), get_connector_profiles(), get_connector_profile(), connect(), disconnect(), disconnect_all()は、 サブクラスにおいて特に振る舞いを変更する必要がないため、オーバーライドすることは推奨されません。
notify_connect(), notify_disconnect()については、サブクラスが提供・要求するインターフェースの 種類に応じて、振る舞いを変更する必要が生ずるかもしれませんが、これらを直接オーバーライドすることは 推奨されず、後述のnotify_connect(), notify_disconnect()の項にも記述されている通りに、 これらのメソッドに関連したprotectedメソッドをオーバーライドすることにより振る舞いを変更することが 推奨されます。
入れ子のクラスの概要 | |
---|---|
protected class |
PortBase.connect_func
ポート接続のためのヘルパクラスです。 |
protected class |
PortBase.disconnect_all_func
ポート接続解除のためのヘルパクラスです。 |
protected class |
PortBase.disconnect_func
ポート接続解除のためのヘルパクラスです。 |
protected class |
PortBase.find_conn_id
指定された接続IDを持つ接続プロファイルを検索するためのヘルパクラスです。 |
protected class |
PortBase.find_interface
指定されたインスタンス名と属性を持つインタフェースを検索するためのヘルパクラスです。 |
protected class |
PortBase.find_port_ref
指定されたPortオブジェクトと同じCORBAオブジェクト参照を持つPortオブジェクトを 検索するためのヘルパクラスです。 |
フィールドの概要 | |
---|---|
protected PortService |
m_objref
当該ポートのCORBAオブジェクト参照です。 |
protected ConnectionCallback |
m_onConnected
|
protected ConnectionCallback |
m_onConnectionLost
|
protected ConnectionCallback |
m_onDisconnected
|
protected ConnectionCallback |
m_onPublishInterfaces
Callback functor objects |
protected ConnectionCallback |
m_onSubscribeInterfaces
|
protected ConnectionCallback |
m_onUnsubscribeInterfaces
|
protected PortProfile |
m_profile
当該ポートに関連付けられているPortProfileオブジェクトです。 |
protected static java.lang.String |
m_profile_mutex
|
protected Logbuf |
rtcout
|
コンストラクタの概要 | |
---|---|
PortBase()
デフォルトコンストラクタです。 |
|
PortBase(java.lang.String name)
本コンストラクタでは、オブジェクトの初期化処理を行うと同時に、 自身をCORBAオブジェクトとして活性化します。 |
メソッドの概要 | ||
---|---|---|
PortService |
_this()
当該PortのCORBAオブジェクト参照を取得します。 |
|
abstract void |
activateInterfaces()
Activate all Port interfaces This operation activate all interfaces that is registered in the ports. |
|
protected
|
addProperty(java.lang.String key,
T value,
java.lang.Class<T> klass)
当該ポートが持つPortProfile内のpropertiesメンバに、 指定されたキーと値を持つNameValueオブジェクトを追加します。 |
|
protected boolean |
appendInterface(java.lang.String instance_name,
java.lang.String type_name,
PortInterfacePolarity polarity)
当該ポートが持つPortProfile内に含まれるPortInterfaceProfileメンバに、 引数で指定された情報を追加します。 |
|
protected void |
appendProperty(java.lang.String key,
java.lang.String value)
Add NameValue data to PortProfile's properties Add NameValue data to PortProfile's properties. |
|
ReturnCode_t |
connect(ConnectorProfileHolder connector_profile)
ポート間の接続を行います。 |
|
protected ReturnCode_t |
connectNext(ConnectorProfileHolder connector_profile)
当該ポートの次のポートに対して接続通知を行います。 |
|
abstract void |
deactivateInterfaces()
Deactivate all Port interfaces This operation deactivate all interfaces that is registered in the ports. |
|
protected boolean |
deleteInterface(java.lang.String instance_name,
PortInterfacePolarity polarity)
指定されたインスタンス名と属性を持つインタフェースを、当該ポートが持つPortProfile内の PortInterfaceProfileから削除します。 |
|
ReturnCode_t |
disconnect_all()
当該ポートに関連したすべての接続を解除します。 |
|
ReturnCode_t |
disconnect(java.lang.String connector_id)
ポートの接続を解除します。 |
|
protected ReturnCode_t |
disconnectNext(ConnectorProfile connector_profile)
当該ポートの次のポートに対して接続解除通知を行います。 |
|
protected boolean |
eraseConnectorProfile(java.lang.String connector_id)
指定された接続IDに対応する接続プロファイルを、当該ポートのPortProfileから削除します。 |
|
protected ConnectorProfile |
findConnProfile(java.lang.String id)
指定された接続IDを持つ接続プロファイルが、当該ポートのPortProfileに設定されている ConnectorProfileオブジェクトシーケンス内に存在するかどうかを調べ、存在する場合は そのConnectorProfileオブジェクトが取得されます。 |
|
protected int |
findConnProfileIndex(java.lang.String id)
指定された接続IDを持つ接続プロファイルが、当該ポートのPortProfileに設定されている ConnectorProfileオブジェクトシーケンス内に存在するかどうかを調べ、存在する場合は そのConnectorProfileオブジェクトのシーケンス内でのインデクスが取得されます。 |
|
ConnectorProfile |
get_connector_profile(java.lang.String connector_id)
指定されたコネクタIDに対応する接続プロファイルを取得します。 |
|
ConnectorProfile[] |
get_connector_profiles()
ConnectorProfileリストを取得します。 |
|
PortProfile |
get_port_profile()
PortProfileを取得します。 |
|
PortProfile |
getPortProfile()
[Local interface] PortProfileを取得します。 |
|
PortService |
getPortRef()
当該ポートのPortProfileが保持している、当該ポート自身のCORBAオブジェクト参照を取得します。 |
|
PortProfile |
getProfile()
当該ポートが保持しているPortProfileオブジェクトを取得します。 |
|
protected java.lang.String |
getUUID()
UUIDを生成します。 |
|
protected boolean |
isEmptyId(ConnectorProfile connector_profile)
指定されたConnectorProfileオブジェクト内のconnector_idメンバが空かどうか判定します。 |
|
protected boolean |
isExistingConnId(java.lang.String id)
指定された接続IDを持つ接続プロファイルが、当該ポートのPortProfileに設定されている ConnectorProfileオブジェクトシーケンス内に存在するかどうかを判定します。 |
|
ReturnCode_t |
notify_connect(ConnectorProfileHolder connector_profile)
ポートの接続通知を行います。 |
|
ReturnCode_t |
notify_disconnect(java.lang.String connector_id)
ポートの接続解除通知を行います。 |
|
protected abstract ReturnCode_t |
publishInterfaces(ConnectorProfileHolder connector_profile)
Interface情報を公開します。 |
|
void |
setName(java.lang.String name)
ポート名を設定します。 |
|
void |
setOnConnected(ConnectionCallback on_connected)
Setting callback called on connection established This operation sets a functor that is called when connection between ports established. |
|
void |
setOnConnectionLost(ConnectionCallback on_connection_lost)
|
|
void |
setOnDisconnected(ConnectionCallback on_disconnected)
Setting callback called on disconnected This operation sets a functor that is called when connection between ports is destructed. |
|
void |
setOnPublishInterfaces(ConnectionCallback on_publish)
Setting callback called on publish interfaces This operation sets a functor that is called after publishing interfaces process when connecting between ports. |
|
void |
setOnSubscribeInterfaces(ConnectionCallback on_subscribe)
Setting callback called on publish interfaces This operation sets a functor that is called before subscribing interfaces process when connecting between ports. |
|
void |
setOnUnsubscribeInterfaces(ConnectionCallback on_unsubscribe)
Setting callback called on unsubscribe interfaces This operation sets a functor that is called before unsubscribing interfaces process when disconnecting between ports. |
|
void |
setOwner(RTObject owner)
当該ポートのオーナーRTObjectを設定します。 |
|
void |
setPortRef(PortService port_ref)
指定されたポートCORBAオブジェクト参照を設定します。 |
|
protected void |
setUUID(ConnectorProfileHolder connector_profile)
UUIDを生成し、指定されたConnectorProfileオブジェクトのconnector_idメンバに設定します。 |
|
protected abstract ReturnCode_t |
subscribeInterfaces(ConnectorProfileHolder connector_profile)
Interface 情報を公開します。 |
|
protected abstract void |
unsubscribeInterfaces(ConnectorProfile connector_profile)
Interfaceの接続を解除します。 |
|
protected void |
updateConnectorProfile(ConnectorProfile connector_profile)
指定された接続プロファイルを、当該ポートのPortProfileに追加します。 |
クラス RTC.PortServicePOA から継承されたメソッド |
---|
_all_interfaces, _invoke, _this |
クラス org.omg.PortableServer.Servant から継承されたメソッド |
---|
_default_POA, _get_delegate, _get_interface_def, _is_a, _non_existent, _object_id, _orb, _poa, _set_delegate, _this_object, _this_object |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
---|
protected PortProfile m_profile
当該ポートに関連付けられているPortProfileオブジェクトです。
protected static java.lang.String m_profile_mutex
protected PortService m_objref
当該ポートのCORBAオブジェクト参照です。
protected Logbuf rtcout
protected ConnectionCallback m_onPublishInterfaces
Callback functor objects
protected ConnectionCallback m_onSubscribeInterfaces
protected ConnectionCallback m_onConnected
protected ConnectionCallback m_onUnsubscribeInterfaces
protected ConnectionCallback m_onDisconnected
protected ConnectionCallback m_onConnectionLost
コンストラクタの詳細 |
---|
public PortBase(java.lang.String name)
本コンストラクタでは、オブジェクトの初期化処理を行うと同時に、 自身をCORBAオブジェクトとして活性化します。さらに、自分自身のPortProfileの port_refメンバに、自身のCORBAオブジェクト参照を格納します。
name
- ポート名public PortBase()
デフォルトコンストラクタです。ポート名には空文字列が割り当てられます。
メソッドの詳細 |
---|
public PortService _this()
当該PortのCORBAオブジェクト参照を取得します。
PortServicePOA
内の _this
public PortProfile get_port_profile()
PortProfileを取得します。なお、PortProfileは次のメンバを持っています。
public final PortProfile getPortProfile()
[Local interface] PortProfileを取得します。
public ConnectorProfile[] get_connector_profiles()
ConnectorProfileリストを取得します。 ConnectorProfileはポート間の接続プロファイル情報を保持するクラスであり、 接続時にポート間で情報交換を行い、関連するすべてのポートで同一の値が保持されます。
ConnectorProfileは以下のメンバを保持しています。
public ConnectorProfile get_connector_profile(java.lang.String connector_id)
指定されたコネクタIDに対応する接続プロファイルを取得します。
connector_id
- コネクタID
public ReturnCode_t connect(ConnectorProfileHolder connector_profile)
ポート間の接続を行います。指定された接続プロファイルにしたがってポート間の接続を確立します。
アプリケーションプログラム側は、幾つかのコンポーネントが持つ複数のポート間を接続したい場合、 適切な値を設定した接続プロファイルを引数として渡すことにより、関連するポート間の接続を確立できます。
本メソッドの呼び出しにあたっては、ConnectorProfileオブジェクトのメンバのうち、 次のものについて値を設定しておかねばなりません。
connector_profile
- 接続プロファイル
public ReturnCode_t notify_connect(ConnectorProfileHolder connector_profile)
ポートの接続通知を行います。本メソッドは、ポート間で接続が行われる際に、 ポート間で内部的に呼び出されます。
connector_profile
- 接続プロファイル
public ReturnCode_t disconnect(java.lang.String connector_id)
ポートの接続を解除します。このメソッドは、接続確立時に接続に対して与えられるコネクタIDに 対応するピア・ポートとの接続を解除します。
connector_id
- コネクタID
public ReturnCode_t notify_disconnect(java.lang.String connector_id)
ポートの接続解除通知を行います。本メソッドは、ポート間の接続解除が行われる際に、 ポート間で内部的に呼び出されます。
connector_id
- コネクタID
public ReturnCode_t disconnect_all()
当該ポートに関連したすべての接続を解除します。
public abstract void activateInterfaces()
Activate all Port interfaces
This operation activate all interfaces that is registered in the ports.
public abstract void deactivateInterfaces()
Deactivate all Port interfaces
This operation deactivate all interfaces that is registered in the ports.
public void setName(java.lang.String name)
ポート名を設定します。指定されたポート名は、PortProfileのnameメンバに設定されます。
name
- ポート名public final PortProfile getProfile()
当該ポートが保持しているPortProfileオブジェクトを取得します。
public void setPortRef(PortService port_ref)
指定されたポートCORBAオブジェクト参照を設定します。
本メソッドは、当該ポート自身のCORBAオブジェクト参照を設定するために用います。 当該ポートのCORBAオブジェクト参照以外は設定しないでください。
port_ref
- 当該ポートのCORBAオブジェクト参照public PortService getPortRef()
当該ポートのPortProfileが保持している、当該ポート自身のCORBAオブジェクト参照を取得します。
public void setOwner(RTObject owner)
当該ポートのオーナーRTObjectを設定します。 指定されたRTObjectオブジェクトが、PortProfileのownerメンバに設定されます。
owner
- 当該ポートを所有するRTObjectのCORBAオブジェクト参照public void setOnPublishInterfaces(ConnectionCallback on_publish)
Setting callback called on publish interfaces
This operation sets a functor that is called after publishing interfaces process when connecting between ports.
Since the ownership of the callback functor object is owned by the caller, it has the responsibility of object destruction.
The callback functor is called after calling publishInterfaces() that is virtual member function of the PortBase class with an argument of ConnectorProfile type that is same as the argument of publishInterfaces() function. Although by using this functor, you can modify the ConnectorProfile published by publishInterfaces() function, the modification should be done carefully for fear of causing connection inconsistency.
on_publish
- ConnectionCallback's subclassespublic void setOnSubscribeInterfaces(ConnectionCallback on_subscribe)
Setting callback called on publish interfaces
This operation sets a functor that is called before subscribing interfaces process when connecting between ports.
Since the ownership of the callback functor object is owned by the caller, it has the responsibility of object destruction.
The callback functor is called before calling subscribeInterfaces() that is virtual member function of the PortBase class with an argument of ConnectorProfile type that is same as the argument of subscribeInterfaces() function. Although by using this functor, you can modify ConnectorProfile argument for subscribeInterfaces() function, the modification should be done carefully for fear of causing connection inconsistency.
on_subscribe
- ConnectionCallback's subclassespublic void setOnConnected(ConnectionCallback on_connected)
Setting callback called on connection established
This operation sets a functor that is called when connection between ports established.
Since the ownership of the callback functor object is owned by the caller, it has the responsibility of object destruction.
The callback functor is called only when notify_connect() function successfully returns. In case of error, the functor will not be called.
Since this functor is called with ConnectorProfile argument that is same as out-parameter of notify_connect() function, you can get all the information of published interfaces of related ports in the connection. Although by using this functor, you can modify ConnectorProfile argument for out-paramter of notify_connect(), the modification should be done carefully for fear of causing connection inconsistency.
on_connected
- ConnectionCallback's subclassespublic void setOnUnsubscribeInterfaces(ConnectionCallback on_unsubscribe)
Setting callback called on unsubscribe interfaces
This operation sets a functor that is called before unsubscribing interfaces process when disconnecting between ports.
Since the ownership of the callback functor object is owned by the caller, it has the responsibility of object destruction.
The callback functor is called before calling unsubscribeInterfaces() that is virtual member function of the PortBase class with an argument of ConnectorProfile type that is same as the argument of unsubscribeInterfaces() function. Although by using this functor, you can modify ConnectorProfile argument for unsubscribeInterfaces() function, the modification should be done carefully for fear of causing connection inconsistency.
on_unsubscribe
- ConnectionCallback's subclassespublic void setOnDisconnected(ConnectionCallback on_disconnected)
Setting callback called on disconnected
This operation sets a functor that is called when connection between ports is destructed.
Since the ownership of the callback functor object is owned by the caller, it has the responsibility of object destruction.
The callback functor is called just before notify_disconnect() that is disconnection execution function returns.
This functor is called with argument of corresponding ConnectorProfile. Since this ConnectorProfile will be destructed after calling this functor, modifications never affect others.
on_disconnected
- ConnectionCallback's subclassespublic void setOnConnectionLost(ConnectionCallback on_connection_lost)
protected abstract ReturnCode_t publishInterfaces(ConnectorProfileHolder connector_profile)
Interface情報を公開します。 このメソッドは、notify_connect()処理シーケンスの始めに呼び出されるテンプレートメソッドです。
notify_connect()内では、以下の順にテンプレートメソッドが呼び出されて接続処理が行われます。
具象Portクラスでは、このメソッドをオーバーライドし、引数として与えられた ConnectorProfileに従って処理を行い、パラメータが不適切であれば、ReturnCode_t型の エラーコードを返します。
通常、publishInterafaces()内においては、このポートに属するインターフェースに関する情報を ConnectorProfileに対して適切に設定し、他のポートに通知しなければなりません。 また、このメソッドが呼び出される段階では、他のポートのInterfaceに関する情報は すべては含まれていないので、他のポートのInterfaceを取得する処理はsubscribeInterfaces()内で 行われるべきです。
このメソッドは、新規のコネクタIDに対しては接続の生成が、既存のコネクタIDに対しては更新が 適切に行われる必要があります。
connector_profile
- 接続プロファイル
protected ReturnCode_t connectNext(ConnectorProfileHolder connector_profile)
当該ポートの次のポートに対して接続通知を行います。
ConnectorProfile内に設定されているPortのシーケンスを調べて、 当該Portの次のPortを特定し、そのPortに対してnotify_connect()を呼び出します。
connector_profile
- 接続プロファイルprotected ReturnCode_t disconnectNext(ConnectorProfile connector_profile)
当該ポートの次のポートに対して接続解除通知を行います。
ConnectorProfile内に設定されているPortのシーケンスを調べて、 当該Portの次のPortを特定し、そのPortに対してnotify_disconnect()を呼び出します。
connector_profile
- 接続プロファイルprotected abstract ReturnCode_t subscribeInterfaces(ConnectorProfileHolder connector_profile)
Interface 情報を公開します。
このメソッドは、notify_connect()処理シーケンスの中間に呼び出されるテンプレートメソッドです。 notify_connect()では、
このメソッドの処理は、新規のconnector_idに対しては接続の生成が適切に行われる必要があります。
また、既存のconnector_idに対しては更新が適切に行われる必要があります。
connector_profile
- 接続プロファイル情報
protected abstract void unsubscribeInterfaces(ConnectorProfile connector_profile)
Interfaceの接続を解除します。
このメソッドは、notify_disconnect()処理シーケンスの終わりに呼び出されるテンプレートメソッドです。 notify_disconnect()では、
具象クラスでは、このメソッドをオーバーライドし、引数として 与えられた ConnectorProfile に従い接続解除処理を行います。
connector_profile
- 接続プロファイル情報protected boolean isEmptyId(ConnectorProfile connector_profile)
指定されたConnectorProfileオブジェクト内のconnector_idメンバが空かどうか判定します。
protected java.lang.String getUUID()
UUIDを生成します。
protected void setUUID(ConnectorProfileHolder connector_profile)
UUIDを生成し、指定されたConnectorProfileオブジェクトのconnector_idメンバに設定します。
connector_profile
- 設定先となるConnectorProfileオブジェクトprotected boolean isExistingConnId(java.lang.String id)
指定された接続IDを持つ接続プロファイルが、当該ポートのPortProfileに設定されている ConnectorProfileオブジェクトシーケンス内に存在するかどうかを判定します。
protected ConnectorProfile findConnProfile(java.lang.String id)
指定された接続IDを持つ接続プロファイルが、当該ポートのPortProfileに設定されている ConnectorProfileオブジェクトシーケンス内に存在するかどうかを調べ、存在する場合は そのConnectorProfileオブジェクトが取得されます。
id
- 接続ID
protected int findConnProfileIndex(java.lang.String id)
指定された接続IDを持つ接続プロファイルが、当該ポートのPortProfileに設定されている ConnectorProfileオブジェクトシーケンス内に存在するかどうかを調べ、存在する場合は そのConnectorProfileオブジェクトのシーケンス内でのインデクスが取得されます。
protected void updateConnectorProfile(ConnectorProfile connector_profile)
指定された接続プロファイルを、当該ポートのPortProfileに追加します。 同一の接続IDを持つ接続プロファイルがすでにある場合は、その内容を上書きします。
connector_profile
- 追加もしくは更新する接続プロファイルprotected boolean eraseConnectorProfile(java.lang.String connector_id)
指定された接続IDに対応する接続プロファイルを、当該ポートのPortProfileから削除します。
connector_id
- 削除対象となる接続プロファイルの接続ID
protected boolean appendInterface(java.lang.String instance_name, java.lang.String type_name, PortInterfacePolarity polarity)
当該ポートが持つPortProfile内に含まれるPortInterfaceProfileメンバに、 引数で指定された情報を追加します。この情報は、get_port_profile()メソッドによって 得られるPortProfileにうち、PortInterfaceProfileの値を変更するのみであり、 実際にインタフェースを提供したり要求したりする場合には、サブクラス側で publishInterface(), subscribeInterface()などのメソッドを適切にオーバライドし、 インタフェースの提供や要求処理を行う必要があります。
なお、インタフェース(のインスタンス)名は、ポート内で一意でなければなりません。
instance_name
- インタフェースのインスタンス名type_name
- インタフェースの型名称polarity
- インタフェースの属性(提供インタフェースまたは要求インタフェース)
protected boolean deleteInterface(java.lang.String instance_name, PortInterfacePolarity polarity)
指定されたインスタンス名と属性を持つインタフェースを、当該ポートが持つPortProfile内の PortInterfaceProfileから削除します。
instance_name
- 削除対象インタフェースのインスタンス名polarity
- 削除対象インタフェースの属性
protected <T> void addProperty(java.lang.String key, T value, java.lang.Class<T> klass)
当該ポートが持つPortProfile内のpropertiesメンバに、 指定されたキーと値を持つNameValueオブジェクトを追加します。
key
- キーvalue
- 値protected void appendProperty(java.lang.String key, java.lang.String value)
Add NameValue data to PortProfile's properties
Add NameValue data to PortProfile's properties. Type of additional data is specified by ValueType.
key
- The name of propertiesvalue
- The value of properties
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |