本文整理汇总了C++中portableserver::POA_var::servant_to_reference方法的典型用法代码示例。如果您正苦于以下问题:C++ POA_var::servant_to_reference方法的具体用法?C++ POA_var::servant_to_reference怎么用?C++ POA_var::servant_to_reference使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类portableserver::POA_var
的用法示例。
在下文中一共展示了POA_var::servant_to_reference方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: lock
SignalObserver::Observer_ptr
Task::getObserver()
{
PortableServer::POA_var poa = singleton::tofSession_i::instance()->poa();
if ( ! pObserver_ ) {
acewrapper::scoped_mutex_t<> lock( mutex_ );
if ( ! pObserver_ )
pObserver_.reset( new tofObserver_i( *this ) );
// add Traces
SignalObserver::Description desc;
desc.axis_x_decimals = 3;
desc.axis_y_decimals = 2;
desc.trace_display_name = CORBA::wstring_dup( L"TIC" );
desc.trace_id = CORBA::wstring_dup( L"MS.TIC" );
desc.trace_method = SignalObserver::eTRACE_TRACE;
boost::shared_ptr< traceObserver_i > p( new traceObserver_i( *this ) );
p->setDescription( desc );
pTraceObserverVec_.push_back( p );
do {
CORBA::Object_ptr obj = poa->servant_to_reference( p.get() );
pObserver_->addSibling( SignalObserver::Observer::_narrow( obj ) );
} while(0);
#if 0
// add mass chromatograms
std::wstring trace_id = L"MS.CHROMATOGRAM.";
for ( int i = 0; i < 3; ++i ) {
boost::shared_ptr< traceObserver_i > p( new traceObserver_i( *this ) );
desc.trace_display_name = CORBA::wstring_dup( L"Chromatogram.%1%" );
desc.trace_id = CORBA::wstring_dup( (trace_id + boost::lexical_cast<std::wstring>(i + 1)).c_str() );
p->setDescription( desc );
pTraceObserverVec_.push_back( p );
do {
CORBA::Object_ptr obj = poa->servant_to_reference( p.get() );
pObserver_->addSibling( SignalObserver::Observer::_narrow( obj ) );
} while(0);
}
#endif
}
CORBA::Object_ptr obj = poa->servant_to_reference( pObserver_.get() );
return SignalObserver::Observer::_narrow( obj );
}
示例2: getPort
CORBA::Object* PortSupplier_impl::getPort (const char* name) throw (CORBA::SystemException, CF::PortSupplier::UnknownPort)
{
PortServantMap::iterator port = _portServants.find(name);
if (port != _portServants.end()) {
PortBase* servant = port->second;
PortableServer::POA_var poa = servant->_default_POA();
return poa->servant_to_reference(port->second);
}
throw CF::PortSupplier::UnknownPort();
}
示例3: lock
SignalObserver::Observer_ptr
iTask::getObserver()
{
PortableServer::POA_var poa = adcontroller::manager_i::instance()->poa();
if ( ! pMasterObserver_ ) {
std::lock_guard< std::mutex > lock( mutex_ );
if ( ! pMasterObserver_ )
pMasterObserver_.reset( new observer_i() );
}
CORBA::Object_ptr obj = poa->servant_to_reference( pMasterObserver_.get() );
try {
return SignalObserver::Observer::_narrow( obj );
} catch ( CORBA::Exception& ) {
}
return 0;
}
示例4: getServantManager
ControlServer::Session_ptr
manager_i::getSession( const CORBA::WChar * token )
{
PortableServer::POA_var poa = manager_i::instance()->poa(); // getServantManager()->root_poa();
if ( CORBA::is_nil( poa ) )
return 0;
if ( session_list_.empty() )
adcontroller::iTaskManager::instance()->manager_initialize();
session_map_type::iterator it = session_list_.find( token );
if ( it == session_list_.end() )
session_list_[ token ].reset( new adcontroller::session_i() );
CORBA::Object_ptr obj = poa->servant_to_reference( session_list_[ token ].get() );
return ControlServer::Session::_narrow( obj );
}
示例5: iorFile
int
main( int argc, char *argv[] )
{
try
{
// Initialize orb
CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
//Get reference to Root POA
CORBA::Object_var obj = orb->resolve_initial_references( "RootPOA" );
PortableServer::POA_var poa = PortableServer::POA::_narrow( obj.in() );
PortableServer::POAManager_var mgr = poa->the_POAManager();
// Activate POA Manager
mgr->activate();
// Create an object
GoodDay_i servant;
// Register the servant with the RootPOA, obtain its object
// reference, stringify it, and write it to a file.
obj = poa->servant_to_reference( &servant );
CORBA::String_var str = orb->object_to_string( obj.in() );
ofstream iorFile( "IOR" );
iorFile << str.in() << endl;
iorFile.close();
cout << "IOR written to file IOR" << endl;
// Accept requests
orb->run();
orb->destroy();
}
catch( const CORBA::Exception &ex )
{
cerr << "Uncaught CORBA exception: " << ex <<endl;
return 1;
}
return 0;
}
示例6: INTERNAL
void
TAO_ECG_UDP_Sender::reconnect (const RtecEventChannelAdmin::ConsumerQOS& sub)
{
// Obtain our object reference from the POA.
RtecEventComm::PushConsumer_var consumer_ref;
PortableServer::POA_var poa = this->_default_POA ();
CORBA::Object_var obj = poa->servant_to_reference (this);
consumer_ref =
RtecEventComm::PushConsumer::_narrow (obj.in ());
if (CORBA::is_nil (consumer_ref.in ()))
{
throw CORBA::INTERNAL ();
}
// Reconnect.
this->supplier_proxy_->connect_push_consumer (consumer_ref.in (),
sub);
}
示例7: main
int main(int argc, char **argv)
{
// Removes ORB related arguments
CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
// Program options
std::string register_servant;
std::string proxy_reference;
_po::options_description _desc("Proxy Server options");
_desc.add_options()
("help,h", "produce help message")
("register-servant,r", _po::value< std::string >(®ister_servant),
"register the servant into the name service")
("proxy-reference,p", _po::value< std::string >(&proxy_reference),
"forward received calls to another servant");
_po::variables_map _vm;
_po::store(_po::parse_command_line(argc, argv, _desc), _vm);
_po::notify(_vm);
if (_vm.count("help"))
{
std::cout << _desc << std::endl;
return 0;
}
bool reference_is_ns_entry = false;
// TODO
// Name Service
CosNaming::NamingContextExt_var nc;
if (reference_is_ns_entry || !register_servant.empty())
{
try {
CORBA::Object_var ncObj = orb->resolve_initial_references("NameService");
nc = CosNaming::NamingContextExt::_narrow(ncObj);
} catch(...) {
}
if (CORBA::is_nil(nc))
std::cerr << "Name service unavailable!" << std::endl;
}
// Proxy reference
prueba::Iface_var reference;
if (!proxy_reference.empty())
{
CORBA::Object_var refObj;
if (reference_is_ns_entry && !CORBA::is_nil(nc))
refObj = nc->resolve_str(proxy_reference.c_str());
else
refObj = orb->string_to_object(proxy_reference.c_str());
reference = prueba::Iface::_narrow(refObj);
}
// Servant
prueba_Iface_impl _impl(reference.in());
CORBA::Object_var rootPOAObj =
orb->resolve_initial_references("RootPOA");
PortableServer::POA_var rootPOA =
PortableServer::POA::_narrow(rootPOAObj.in());
PortableServer::POAManager_var manager = rootPOA->the_POAManager();
PortableServer::ObjectId_var myObjID =
rootPOA->activate_object(&_impl);
CORBA::Object_var obj = rootPOA->servant_to_reference(&_impl);
// Displaying reference
CORBA::String_var ref = orb->object_to_string(obj);
std::cout << ref << std::endl;
// Registring servant
CosNaming::Name_var name;
if (!register_servant.empty() && !CORBA::is_nil(nc))
{
name = nc->to_name(register_servant.c_str());
nc->rebind(name, obj);
}
/*PROTECTED REGION ID(prueba_Iface_impl_server::___main) ENABLED START*/
/*PROTECTED REGION END*/
// Running
manager->activate();
orb->run();
// Unbinding servant
if (!CORBA::is_nil(nc) && name)
//.........这里部分代码省略.........
示例8: init
//.........这里部分代码省略.........
info.the_factory = ::PortableGroup::GenericFactory::_narrow(this_obj.in ());
info.the_location.length(1);
info.the_location[0].id = CORBA::string_dup(this->location_.c_str ());
info.the_criteria.length(1);
info.the_criteria[0].nam.length(1);
info.the_criteria[0].nam[0].id = CORBA::string_dup(PortableGroup::role_criterion);
info.the_criteria[0].val <<= CORBA::string_dup(roleName);
ACE_ERROR (( LM_INFO,
"Factory: %[email protected]%C registering with factory registry\n",
roleName,
location_.c_str ()
));
char const * replica_repository_id =
FT_TEST::_tc_TestReplica->id ();
this->factory_registry_->register_factory(
roleName,
replica_repository_id,
info);
}
this->registered_ = 1;
}
int identified = 0; // bool
if (this->roles_.size() > 0)
{
this->identity_ = ACE_TEXT("Factory");
if (this->location_.length () != 0)
{
this->identity_ += ACE_TEXT("@");
this->identity_ += ACE_TEXT_CHAR_TO_TCHAR(this->location_.c_str ());
}
identified = 1;
}
if (this->ior_output_file_ != 0)
{
if (!identified)
{
this->identity_ = ACE_TEXT("file:");
this->identity_ += this->ior_output_file_;
// note: don't set identified--ns identity overrides file identitiy
}
result = write_ior (this->ior_output_file_, this->ior_. in ());
}
else
{
if (this->registered_)
{
// if we didn't register with a FactoryRegistry
// and no IOR file specified,
// then always try to register with name service
this->ns_name_ = "FT_ReplicaFactory";
}
}
if (this->ns_name_.length () != 0)
{
if (!identified)
{
this->identity_ = ACE_TEXT("name:");
this->identity_ += ACE_TEXT_CHAR_TO_TCHAR(this->ns_name_.c_str ());
}
CORBA::Object_var naming_obj =
this->orb_->resolve_initial_references ("NameService");
if (CORBA::is_nil(naming_obj.in ())){
ACE_ERROR_RETURN ((LM_ERROR,
"%T %n (%P|%t) Unable to find the Naming Service\n"),
1);
}
this->naming_context_ =
CosNaming::NamingContext::_narrow (naming_obj.in ());
this->this_name_.length (1);
this->this_name_[0].id = CORBA::string_dup (this->ns_name_.c_str ());
this->naming_context_->rebind (this->this_name_, this_obj.in());
}
// if we're testing. Create a replica at startup time
if (this->test_output_file_ != 0)
{
// shouldn't be necessary, but create_replica assumes this
ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, guard, this->internals_, 1);
FT_TestReplica_i * replica = create_replica ("test");
PortableServer::POA_var poa = replica->_default_POA ();
::CORBA::Object_var replica_obj = poa->servant_to_reference(replica);
::CORBA::String_var replicaIOR = this->orb_->object_to_string(replica_obj.in ());
write_ior (this->test_output_file_, replicaIOR.in ());
}
return result;
}
示例9: main
//.........这里部分代码省略.........
ACE_ERROR ((LM_ERROR,
ACE_TEXT("(%P|%t) ::main: ")
ACE_TEXT("Failed to configure the transport.\n")));
exit(1);
}
// jhoffert - End of transport configuration changes
// Attach the subscriber to the transport.
TAO::DCPS::SubscriberImpl* sub_impl =
::TAO::DCPS::reference_to_servant< TAO::DCPS::SubscriberImpl,
DDS::Subscriber_ptr> (sub.in ());
if (0 == sub_impl) {
cerr << "Failed to obtain subscriber servant\n" << endl;
exit(1);
}
TAO::DCPS::AttachStatus status = sub_impl->attach_transport(tcp_impl.in());
if (status != TAO::DCPS::ATTACH_OK) {
std::string status_str;
switch (status) {
case TAO::DCPS::ATTACH_BAD_TRANSPORT:
status_str = "ATTACH_BAD_TRANSPORT";
break;
case TAO::DCPS::ATTACH_ERROR:
status_str = "ATTACH_ERROR";
break;
case TAO::DCPS::ATTACH_INCOMPATIBLE_QOS:
status_str = "ATTACH_INCOMPATIBLE_QOS";
break;
default:
status_str = "Unknown Status";
break;
}
cerr << "Failed to attach to the transport. Status == "
<< status_str.c_str() << endl;
exit(1);
}
// activate the listener
DataReaderListenerImpl listener_servant;
PortableServer::POA_var poa = TheServiceParticipant->the_poa ();
CORBA::Object_var obj = poa->servant_to_reference(&listener_servant);
DDS::DataReaderListener_var listener =
DDS::DataReaderListener::_narrow (obj.in ());
if (CORBA::is_nil (listener.in ())) {
cerr << "listener is nil." << endl;
exit(1);
}
// To Do: Get default data reader QoS and create the data reader.
DDS::DataReaderQos dr_qos;
sub->get_default_datareader_qos (dr_qos);
DDS::DataReader_var dr = sub->create_datareader(topic.in (),
dr_qos,
listener.in ());
if (CORBA::is_nil (dr.in ())) {
cerr << "create_datareader failed." << endl;
exit(1);
}
// End: Get default data reader QoS and create the data reader.
// To Do: Set up the constraints for when the subscriber is done
// receiving updates.
int expected = 10;
while ( listener_servant.num_reads() < expected) {
ACE_OS::sleep (1);
}
// End: Set up the constraints for how long the subscriber should
// receive updates.
// To Do: Delete the participant's contained entities
if (!CORBA::is_nil (participant.in ())) {
participant->delete_contained_entities();
}
// End: Delete the participant's contained entities
if (!CORBA::is_nil (dpf.in ())) {
dpf->delete_participant(participant.in ());
}
::DDS::InstanceHandleSeq handles;
while (1)
{
ACE_OS::sleep(1);
dr->get_matched_publications(handles);
if (handles.length() == 0)
break;
}
ACE_OS::sleep(2);
TheTransportFactory->release();
TheServiceParticipant->shutdown ();
} catch (CORBA::Exception& e) {
cerr << "Exception caught in main ():" << endl << e << endl;
return 1;
}
return 0;
}