⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messenger_i.cpp

📁 corba 通知服务的源代码
💻 CPP
字号:
#include <orbsvcs/CosNotifyChannelAdminC.h>#include <orbsvcs/CosNotifyCommC.h>#include <orbsvcs/CosNamingC.h>#include "Messenger_i.h"#include "StructuredEventSupplier_i.h"#include <ace/os.h>#include <iostream>Messenger_i::Messenger_i (CORBA::ORB_ptr orb)  : orb_ (CORBA::ORB::_duplicate (orb)){  CORBA::Object_var naming_obj =     orb_->resolve_initial_references ("NameService");        CosNaming::NamingContext_var naming_context =    CosNaming::NamingContext::_narrow (naming_obj.in());  CosNaming::Name name;  name.length (1);  name[0].id = CORBA::string_dup ("NotifyEventChannelFactory");    CORBA::Object_var obj = naming_context->resolve (name);  CosNotifyChannelAdmin::EventChannelFactory_var notify_factory =    CosNotifyChannelAdmin::EventChannelFactory::_narrow (obj.in ());        CosNotifyChannelAdmin::ChannelID id;  CosNotification::QoSProperties initial_qos;  CosNotification::AdminProperties initial_admin;    CosNotifyChannelAdmin::EventChannel_var ec =    notify_factory->create_channel (initial_qos,				    initial_admin,				    id);  name[0].id = CORBA::string_dup ("MyEventChannel");    naming_context->rebind (name, ec.in());    CosNotifyChannelAdmin::AdminID adminid;   CosNotifyChannelAdmin::InterFilterGroupOperator ifgop =     CosNotifyChannelAdmin::OR_OP;      CosNotifyChannelAdmin::SupplierAdmin_var supplier_admin =    ec->new_for_suppliers (ifgop, adminid);    CosNotifyChannelAdmin::ProxyID supplieradmin_proxy_id;    CosNotifyChannelAdmin::ProxyConsumer_var proxy_consumer =    supplier_admin->obtain_notification_push_consumer(				 CosNotifyChannelAdmin::STRUCTURED_EVENT,				 supplieradmin_proxy_id);    StructuredEventSupplier_i *servant =     new StructuredEventSupplier_i(orb_.in());    CORBA::Object_var poa_obj = orb_->resolve_initial_references ("RootPOA");  PortableServer::POA_var poa = PortableServer::POA::_narrow (poa_obj.in ());  PortableServer::POAManager_var mgr = poa->the_POAManager ();  mgr->activate ();  PortableServer::ObjectId_var objectId = poa->activate_object (servant);  CORBA::Object_var supplier_obj = poa->id_to_reference (objectId.in ());  CosNotifyComm::StructuredPushSupplier_var supplier =     CosNotifyComm::StructuredPushSupplier::_narrow (supplier_obj.in ());    consumer_proxy_ =     CosNotifyChannelAdmin::StructuredProxyPushConsumer::_narrow (proxy_consumer.in());    consumer_proxy_->    connect_structured_push_supplier (supplier.in());}Messenger_i::~Messenger_i (void){}CORBA::Boolean Messenger_i::send_message (    const char * user_name,    const char * subject,    char *& message)  throw (CORBA::SystemException){  	std::cout << "Message from: " << user_name << std::endl;	std::cout << "Subject:      " << subject << std::endl;	std::cout << "Message:      " << message << std::endl;     // Event Definition  CosNotification::StructuredEvent event;     event.header.fixed_header.event_type.domain_name =     CORBA::string_dup("TAO1.2a");  // string  event.header.fixed_header.event_type.type_name =     CORBA::string_dup("examples");  // string  event.header.fixed_header.event_name =     CORBA::string_dup("myevent");    // OptionalHeaderFields  // PropertySeq               // sequence<Property>: string name, any value  event.filterable_data.length (1);  event.filterable_data[0].name = CORBA::string_dup("Message from:");  event.filterable_data[0].value <<= (const char *)user_name;  event.filterable_data.length (2);  event.filterable_data[1].name = CORBA::string_dup("Subject:");  event.filterable_data[1].value <<= (const char *)subject;  event.filterable_data.length (3);  event.filterable_data[2].name = CORBA::string_dup("Message:");  event.filterable_data[2].value <<= (const char *)message;    std::cout << "pushing " << std::endl;  consumer_proxy_->push_structured_event(event);  return 1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -