Вниз
Скачать: CL | DM;

2 интерфейса   Найти похожие ветки 

 
paul_shmakov ©   (2002-03-17 05:38) [0]

а второй интерфейс - это ITapiEventsImplementation чтоль? объекты первого интерфейса у вас определены как persistent. объекты второго интерфейса тоже должны быть долгоживущими? если да, то можно использовать один и тот же poa для объектов сервантов обоих типов. если нет, то нужно создать еще один poa для нового интерфейса.
ну а дальше регистрируем сервант в poa и все должно работать.
если а второй интерфейс - это все же ITapiEventsImplementation и объекты этого интерфейса дожны быть transient, а не persistent, то вот пример:

CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
PortableServer::POA_var rootPOA = PortableServer::POA::_narrow(obj);

CORBA::PolicyList policies;
policies.length(1);
policies[(CORBA::ULong)0] = rootPOA->create_lifespan_policy(PortableServer::PERSISTENT);

// get the POA Manager
PortableServer::POAManager_var poa_manager = rootPOA->the_POAManager();

// Create myPOA with the right policies
clientPOA = rootPOA->create_POA("beltel_agent_poa", poa_manager, policies);

CORBA::PolicyList tapiPolicies;
tapiPolicies.length(0); // полиси по умолчанию

tapiPOA = rootPOA->create_POA("tapi_agent_poa", poa_manager, tapiPolicies);

// Create the servant
IAgentManagerImplementation clientServant;
ITapiEventsImplementation  tapiServant;

// Decide on the ID for the servant
PortableServer::ObjectId_var managerId = PortableServer::string_to_ObjectId("BeltelAgent");

PortableServer::ObjectId_var tapiId = PortableServer::string_to_ObjectId("BeltelTapiAgent");

// Activate the servant with the ID on myPOA
clientPOA->activate_object_with_id(managerId, &clientServant);
tapiPOA->activate_object_with_id(tapiId, &tapiServant);

// Activate the POA Manager
poa_manager->activate();

CORBA::Object_var clientReference = clientPOA->servant_to_reference(&clientServant);

// ну и ссылку получаем
CORBA::Object_var tapiReference = tapiPOA->servant_to_reference(&tapiServant);

orb->run();


 
paul_shmakov ©   (2002-03-17 06:23) [1]

кстати, я не обратил внимания, но, если мне не изменяет память, то вы в полиси должны добавить id assignment policy равное user_id, так как самостоятельно указываете object id.


CORBA::PolicyList policies;
policies.length(2);
policies[0] = rootPOA->create_lifespan_policy(PortableServer::PERSISTENT);
policies[1] = rootPoa->create_id_assignment_policy(PortableServer::USER_ID);



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.021 c
4-1085132393
nexxiss
2004-05-21 13:39
2004.07.04
Цикл обработки сообщений


1-1087534220
Артем К.
2004-06-18 08:50
2004.07.04
Как определить, что изменились системные размеры ScrollBara?


1-1087329553
AAAlexeyAAA
2004-06-15 23:59
2004.07.04
Ув. мастера. К вам вопрос о представлении типов данных.


14-1087361051
Tornado
2004-06-16 08:44
2004.07.04
что случилось???


8-1082600639
Boson
2004-04-22 06:23
2004.07.04
Фильтр НЧ




   Наверх