Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.04;
Скачать: 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 вся ветка

Текущий архив: 2004.07.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.049 c
1-1087796059
DmitryNekl
2004-06-21 09:34
2004.07.04
Размер шрифта в TLabel


8-1082147527
temp
2004-04-17 00:32
2004.07.04
Трёхмерная модель цилиндра


14-1087029036
Godlike
2004-06-12 12:30
2004.07.04
Film


6-1083942623
Sour
2004-05-07 19:10
2004.07.04
Изменение ip для сетевого подключения и рабочей группы (домена)


9-1080063315
MIV
2004-03-23 20:35
2004.07.04
при столкновении двух обьектов уничтожается третий