1 #include "orbsvcs/CosNotifyChannelAdminC.h"
2 #include "orbsvcs/CosNotifyCommC.h"
3 #include "orbsvcs/CosNamingC.h"
4 #include "ace/OS_NS_stdio.h"
6 #include "Messenger_i.h"
7 #include "StructuredEventSupplier_i.h"
10 Messenger_i::Messenger_i (CORBA::ORB_ptr orb
)
11 : orb_ (CORBA::ORB::_duplicate (orb
))
13 CORBA::Object_var naming_obj
=
14 orb_
->resolve_initial_references ("NameService");
16 CosNaming::NamingContext_var naming_context
=
17 CosNaming::NamingContext::_narrow (naming_obj
.in());
21 name
[0].id
= CORBA::string_dup ("NotifyEventChannelFactory");
23 CORBA::Object_var obj
= naming_context
->resolve (name
);
25 CosNotifyChannelAdmin::EventChannelFactory_var notify_factory
=
26 CosNotifyChannelAdmin::EventChannelFactory::_narrow (obj
.in ());
28 CosNotifyChannelAdmin::ChannelID id
;
29 CosNotification::QoSProperties initial_qos
;
30 CosNotification::AdminProperties initial_admin
;
32 CosNotifyChannelAdmin::EventChannel_var ec
=
33 notify_factory
->create_channel (initial_qos
,
37 name
[0].id
= CORBA::string_dup ("MyEventChannel");
39 naming_context
->rebind (name
, ec
.in());
41 CosNotifyChannelAdmin::AdminID adminid
;
42 CosNotifyChannelAdmin::InterFilterGroupOperator ifgop
=
43 CosNotifyChannelAdmin::OR_OP
;
45 CosNotifyChannelAdmin::SupplierAdmin_var supplier_admin
=
46 ec
->new_for_suppliers (ifgop
, adminid
);
48 CosNotifyChannelAdmin::ProxyID supplieradmin_proxy_id
;
50 CosNotifyChannelAdmin::ProxyConsumer_var proxy_consumer
=
51 supplier_admin
->obtain_notification_push_consumer(
52 CosNotifyChannelAdmin::STRUCTURED_EVENT
,
53 supplieradmin_proxy_id
);
55 StructuredEventSupplier_i
*servant
=
56 new StructuredEventSupplier_i(orb_
.in());
58 CORBA::Object_var poa_obj
= orb_
->resolve_initial_references ("RootPOA");
59 PortableServer::POA_var poa
= PortableServer::POA::_narrow (poa_obj
.in ());
60 PortableServer::POAManager_var mgr
= poa
->the_POAManager ();
63 PortableServer::ObjectId_var objectId
= poa
->activate_object (servant
);
65 CORBA::Object_var supplier_obj
= poa
->id_to_reference (objectId
.in ());
67 CosNotifyComm::StructuredPushSupplier_var supplier
=
68 CosNotifyComm::StructuredPushSupplier::_narrow (supplier_obj
.in ());
71 CosNotifyChannelAdmin::StructuredProxyPushConsumer::_narrow (proxy_consumer
.in());
74 connect_structured_push_supplier (supplier
.in());
78 Messenger_i::~Messenger_i ()
82 CORBA::Boolean
Messenger_i::send_message (
83 const char * user_name
,
87 ACE_OS::printf("Message from: %s\nSubject: %s\nMessage: %s\n",
88 user_name
, subject
, message
);
89 //cout << "Message from: " << user_name << endl;
90 //cout << "Subject: " << subject << endl;
91 //cout << "Message: " << message << endl;
95 CosNotification::StructuredEvent event
;
97 event
.header
.fixed_header
.event_type
.domain_name
=
98 CORBA::string_dup("OCI_TAO");
100 event
.header
.fixed_header
.event_type
.type_name
=
101 CORBA::string_dup("examples");
103 event
.header
.fixed_header
.event_name
=
104 CORBA::string_dup("myevent");
106 // OptionalHeaderFields
109 // sequence<Property>: string name, any value
110 event
.filterable_data
.length (3);
111 event
.filterable_data
[0].name
= CORBA::string_dup("Message from:");
112 event
.filterable_data
[0].value
<<= (const char *)user_name
;
113 event
.filterable_data
[1].name
= CORBA::string_dup("Subject:");
114 event
.filterable_data
[1].value
<<= (const char *)subject
;
115 event
.filterable_data
[2].name
= CORBA::string_dup("Message:");
116 event
.filterable_data
[2].value
<<= (const char *)message
;
118 std::cout
<< "pushing " << std::endl
;
119 consumer_proxy_
->push_structured_event(event
);