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 1229 #ifdef ORB_IS_OMNIORB 1231 m_poa->activate_object(m_servant);
1235 m_oid = m_poa->servant_to_id(m_servant);
1238 m_poa->activate_object_with_id(m_oid, m_servant);
1244 CORBA::Object_var obj;
1245 obj = m_poa->id_to_reference(m_oid);
1247 CORBA::String_var ior_var = orb->object_to_string(obj);
1250 #else // ORB_IS_RTORB 1254 m_oid = poa->servant_to_id(m_servant);
1255 CORBA::Object_var obj;
1256 obj = CORBA::Object_var(m_servant->__this());
1258 CORBA::String_var ior_var = orb->object_to_string(obj);
1260 #endif // ORB_IS_RTORB 1262 virtual ~CorbaProviderHolder()
1266 std::string instanceName() {
return m_instanceName; }
1267 std::string typeName() {
return m_typeName; }
1268 std::string ior() {
return m_ior; }
1269 std::string descriptor() {
return m_typeName +
"." + m_instanceName; }
1275 m_poa->activate_object_with_id(m_oid, m_servant);
1277 catch(const ::PortableServer::POA::ServantAlreadyActive &)
1290 m_poa->deactivate_object(m_oid);
1298 std::string m_typeName;
1299 std::string m_instanceName;
1300 PortableServer::RefCountServantBase* m_servant;
1301 PortableServer::ObjectId_var m_oid;
1303 PortableServer::POA_var m_poa;
1313 typedef std::vector<CorbaProviderHolder> CorbaProviderList;
1314 CorbaProviderList m_providers;
1323 class CorbaConsumerHolder
1326 CorbaConsumerHolder(
const char* type_name,
1327 const char* instance_name,
1329 : m_typeName(type_name),
1330 m_instanceName(instance_name),
1331 m_consumer(consumer),
1335 std::string instanceName() {
return m_instanceName; }
1336 std::string typeName() {
return m_typeName; }
1337 std::string descriptor() {
return m_typeName +
"." + m_instanceName; }
1339 bool setObject(
const char* ior)
1343 CORBA::Object_var obj = orb->string_to_object(ior);
1344 if (CORBA::is_nil(obj))
1349 return m_consumer->setObject(obj.in());
1351 void releaseObject()
1353 m_consumer->releaseObject();
1355 const std::string& getIor()
1360 std::string m_typeName;
1361 std::string m_instanceName;
1365 typedef std::vector<CorbaConsumerHolder> CorbaConsumerList;
1366 CorbaConsumerList m_consumers;
1378 unsubscribe(CorbaConsumerList& consumers)
1379 : m_consumers(consumers)
1383 void operator()(
const SDOPackage::NameValue& nv)
1385 for (CorbaConsumerList::iterator it(m_consumers.begin());
1386 it != m_consumers.end(); ++it)
1388 std::string name(nv.name);
1389 if (it->descriptor() == (
const char*)nv.name)
1391 it->releaseObject();
1395 CorbaConsumerList& m_consumers;
1399 #endif // RTC_CORBAPORT_H RTC's Port base class.
coil::Properties m_properties
Properties.
Definition: CorbaPort.h:1070
RT Conponent CORBA service/consumer Port.
Definition: CorbaPort.h:620
CorbaPort(const char *name)
Constructor.
Definition: CorbaConsumer.h:94
PortableServer::POA_ptr getPOA()
Get a pointer to RootPOA held by Manager.
RTC::ReturnCode_t activate(RTC::RTObject_ptr rtc, RTC::UniqueId ec_id=0)
void init(coil::Properties &prop)
Initializing properties.
virtual void activateInterfaces()
Activate all Port interfaces.
CORBA::ORB_ptr getORB()
Get the pointer to ORB (ownership duplicated)
virtual void unsubscribeInterfaces(const ConnectorProfile &connector_profile)
Unsubscribe interfaces.
Port base class.
Definition: PortBase.h:135
virtual ~CorbaPort(void)
Virtual destructor.
NameValue and NVList utility functions.
RTC::ReturnCode_t deactivate(RTC::RTObject_ptr rtc, RTC::UniqueId ec_id=0)
virtual ReturnCode_t subscribeInterfaces(const ConnectorProfile &connector_profile)
Subscribe to interface.
Class represents a set of properties.
Definition: Properties.h:101
virtual ReturnCode_t publishInterfaces(ConnectorProfile &connector_profile)
Publish information about interfaces.
bool registerConsumer(const char *instance_name, const char *type_name, CorbaConsumerBase &consumer)
Register the consumer.
bool registerProvider(const char *instance_name, const char *type_name, PortableServer::RefCountServantBase &provider)
Register the provider.
static Manager & instance()
Get instance of the manager.
virtual void deactivateInterfaces()
Deactivate all Port interfaces.