Merge pull request #2216 from jwillemsen/jwi-cxxversionchecks
[ACE_TAO.git] / TAO / orbsvcs / tests / Bug_3387_Regression / Messenger_i.cpp
blobf889b69ae73c55ec9dc8f74724e2c3ac49836802
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"
8 #include <iostream>
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());
19 CosNaming::Name name;
20 name.length (1);
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,
34 initial_admin,
35 id);
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 ();
62 mgr->activate ();
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 ());
70 consumer_proxy_ =
71 CosNotifyChannelAdmin::StructuredProxyPushConsumer::_narrow (proxy_consumer.in());
73 consumer_proxy_->
74 connect_structured_push_supplier (supplier.in());
78 Messenger_i::~Messenger_i ()
82 CORBA::Boolean Messenger_i::send_message (
83 const char * user_name,
84 const char * subject,
85 char *& message)
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;
94 // Event Definition
95 CosNotification::StructuredEvent event;
97 event.header.fixed_header.event_type.domain_name =
98 CORBA::string_dup("OCI_TAO");
99 // string
100 event.header.fixed_header.event_type.type_name =
101 CORBA::string_dup("examples");
102 // string
103 event.header.fixed_header.event_name =
104 CORBA::string_dup("myevent");
106 // OptionalHeaderFields
107 // PropertySeq
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);
121 return 1;