Publisher1.C
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include "Ice/IceStorm/Publisher1.H"
00039 #include "Image/ColorOps.H"
00040
00041 Publisher1I::Publisher1I(OptionManager& mgr,
00042 const std::string& descrName,
00043 const std::string& tagName ) :
00044 ModelComponent(mgr, descrName, tagName)
00045 {
00046 }
00047
00048 void Publisher1I::initSimEvents(Ice::CommunicatorPtr icPtr, Ice::ObjectPrx objectPrx)
00049 {
00050
00051 Ice::ObjectPrx obj = icPtr->stringToProxy("SimEvents/TopicManager:tcp -p 10000");
00052 IceStorm::TopicManagerPrx topicManager =
00053 IceStorm::TopicManagerPrx::checkedCast(obj);
00054
00055
00056 IceStorm::TopicPrx topic;
00057 try {
00058 topic = topicManager->retrieve("Publisher1Message");
00059 } catch (const IceStorm::NoSuchTopic&) {
00060 topic = topicManager->create("Publisher1Message");
00061 }
00062
00063 Ice::ObjectPrx pub = topic->getPublisher()->ice_oneway();
00064 itsMessagePub = EventsNS::EventsPrx::uncheckedCast(pub);
00065 }
00066
00067
00068 void Publisher1I::evolve(const EventsNS::EventPtr& e,
00069 const Ice::Current&)
00070 {
00071 LINFO("Got message");
00072
00073 }
00074
00075 void Publisher1I::run()
00076 {
00077 int i = 0;
00078 while(1)
00079 {
00080 EventsNS::Message1Ptr msg1 = new EventsNS::Message1;
00081 msg1->id = 10;
00082 msg1->m = i;
00083 msg1->msg = "This is message 1";
00084 LINFO("Sending message 1: %i", i);
00085 itsMessagePub->evolve(msg1);
00086 i++;
00087 usleep(10000);
00088 }
00089 }
00090
00091
00092 class Publisher1Service : public Ice::Service {
00093 protected:
00094 virtual bool start(int, char* argv[]);
00095 virtual bool stop() {
00096 if (itsMgr)
00097 delete itsMgr;
00098 return true;
00099 }
00100
00101 private:
00102 Ice::ObjectAdapterPtr itsAdapter;
00103 ModelManager *itsMgr;
00104 };
00105
00106 bool Publisher1Service::start(int argc, char* argv[])
00107 {
00108
00109 itsMgr = new ModelManager("Publisher1Service");
00110
00111 nub::ref<Publisher1I> p1(new Publisher1I(*itsMgr));
00112 itsMgr->addSubComponent(p1);
00113
00114 itsMgr->parseCommandLine((const int)argc, (const char**)argv, "", 0, 0);
00115
00116 itsAdapter = communicator()->createObjectAdapterWithEndpoints("Publisher1Adapter", "default -p 20000");
00117
00118 Ice::ObjectPtr object = p1.get();
00119 Ice::ObjectPrx objectPrx = itsAdapter->add(object, communicator()->stringToIdentity("Publisher1"));
00120 p1->initSimEvents(communicator(), objectPrx);
00121 itsAdapter->activate();
00122
00123 itsMgr->start();
00124
00125
00126 IceUtil::ThreadPtr p1Thread = p1.get();
00127 p1Thread->start();
00128
00129 return true;
00130 }
00131
00132
00133 int main(int argc, char** argv) {
00134
00135 Publisher1Service svc;
00136 return svc.main(argc, argv);
00137 }
00138
00139