20 #ifndef RTC_CORBAPORT_H 21 #define RTC_CORBAPORT_H 733 PortableServer::RefCountServantBase& provider);
1073 class CorbaConsumerHolder;
1104 virtual bool findProvider(
const NVList& nv, CorbaConsumerHolder& cons,
1105 std::string& iorstr);
1141 virtual bool findProviderOld(
const NVList&nv, CorbaConsumerHolder& cons,
1142 std::string& iorstr);
1171 bool setObject(
const std::string& ior, CorbaConsumerHolder& cons);
1199 bool releaseObject(
const std::string& ior, CorbaConsumerHolder& cons);
1217 class CorbaProviderHolder
1220 CorbaProviderHolder(
const char* type_name,
1221 const char* instance_name,
1222 PortableServer::RefCountServantBase* servant)
1223 : m_typeName(type_name),
1224 m_instanceName(instance_name),
1228 #ifndef ORB_IS_RTORB 1233 getPOA()->activate_object_with_id(m_oid, m_servant);
1239 CORBA::Object_var obj;
1242 CORBA::String_var ior_var = orb->object_to_string(obj);
1245 #else // ORB_IS_RTORB 1249 CORBA::Object_var obj;
1250 obj = CORBA::Object_var(m_servant->__this());
1252 CORBA::String_var ior_var = orb->object_to_string(obj);
1254 #endif // ORB_IS_RTORB 1256 virtual ~CorbaProviderHolder()
1260 std::string instanceName() {
return m_instanceName; }
1261 std::string typeName() {
return m_typeName; }
1262 std::string ior() {
return m_ior; }
1263 std::string descriptor() {
return m_typeName +
"." + m_instanceName; }
1270 getPOA()->activate_object_with_id(m_oid, m_servant);
1272 catch(const ::PortableServer::POA::ServantAlreadyActive &)
1293 std::string m_typeName;
1294 std::string m_instanceName;
1295 PortableServer::RefCountServantBase* m_servant;
1296 PortableServer::ObjectId_var m_oid;
1307 typedef std::vector<CorbaProviderHolder> CorbaProviderList;
1308 CorbaProviderList m_providers;
1317 class CorbaConsumerHolder
1320 CorbaConsumerHolder(
const char* type_name,
1321 const char* instance_name,
1323 : m_typeName(type_name),
1324 m_instanceName(instance_name),
1325 m_consumer(consumer),
1329 std::string instanceName() {
return m_instanceName; }
1330 std::string typeName() {
return m_typeName; }
1331 std::string descriptor() {
return m_typeName +
"." + m_instanceName; }
1333 bool setObject(
const char* ior)
1337 CORBA::Object_var obj = orb->string_to_object(ior);
1338 if (CORBA::is_nil(obj))
1343 return m_consumer->setObject(obj.in());
1345 void releaseObject()
1347 m_consumer->releaseObject();
1349 const std::string& getIor()
1354 std::string m_typeName;
1355 std::string m_instanceName;
1359 typedef std::vector<CorbaConsumerHolder> CorbaConsumerList;
1360 CorbaConsumerList m_consumers;
1372 unsubscribe(CorbaConsumerList& consumers)
1373 : m_consumers(consumers)
1377 void operator()(
const SDOPackage::NameValue& nv)
1379 for (CorbaConsumerList::iterator it(m_consumers.begin());
1380 it != m_consumers.end(); ++it)
1382 std::string name(nv.name);
1383 if (it->descriptor() == (
const char*)nv.name)
1385 it->releaseObject();
1389 CorbaConsumerList& m_consumers;
1393 #endif // RTC_CORBAPORT_H RTC's Port base class.
coil::Properties m_properties
プロパティ
Definition: CorbaPort.h:1070
RT コンポーネント CORBA provider/consumer 用 Port.
Definition: CorbaPort.h:620
CorbaPort(const char *name)
コンストラクタ
オブジェクトリファレンスを保持するプレースホルダ基底クラス ...
Definition: CorbaConsumer.h:94
PortableServer::POA_ptr getPOA()
Manager が持つ RootPOA のポインタを取得する
void init(coil::Properties &prop)
プロパティの初期化
virtual void activateInterfaces()
Port の全てのインターフェースを activates する
CORBA::ORB_ptr getORB()
ORB のポインタを取得する
virtual void unsubscribeInterfaces(const ConnectorProfile &connector_profile)
Interface への接続を解除する
Port の基底クラス
Definition: PortBase.h:134
virtual ~CorbaPort(void)
仮想デストラクタ
NameValue and NVList utility functions.
virtual ReturnCode_t subscribeInterfaces(const ConnectorProfile &connector_profile)
Provider Interface 情報を取得する
プロパティセットを表現するクラス
Definition: Properties.h:101
virtual ReturnCode_t publishInterfaces(ConnectorProfile &connector_profile)
Provider Interface 情報を公開する
bool registerConsumer(const char *instance_name, const char *type_name, CorbaConsumerBase &consumer)
Consumer を登録する
bool registerProvider(const char *instance_name, const char *type_name, PortableServer::RefCountServantBase &provider)
Provider を登録する
static Manager & instance()
マネージャのインスタンスの取得
virtual void deactivateInterfaces()
全ての Port のインターフェースを deactivates する