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
00033
00034
00049 #ifndef _CORBASINK_H
00050 #define _CORBASINK_H
00051
00052 #include <OpenTracker/OpenTracker.h>
00053 #include <OpenTracker/tool/OT_ACE_Log.h>
00054 #include <OpenTracker/skeletons/OT_CORBA.hh>
00055 #include <OpenTracker/network/CORBAUtils.h>
00064 namespace ot {
00065
00066 class CORBAModule;
00067
00068 class OPENTRACKER_API CORBASink : public Node
00069 {
00070
00071 public:
00073 OT_CORBA::Node_var corba_sink;
00075 int frequency;
00076 int cycle;
00077
00078
00079
00080 protected:
00081 CORBASink() :
00082 frequency( 1 ),
00083 cycle( 0 )
00084 {
00085
00086 };
00087
00091 CORBASink( OT_CORBA::Node_var corba_sink_, int frequency_) :
00092 Node(),
00093 corba_sink( corba_sink_ ),
00094 frequency( frequency_ ),
00095 cycle ( 0 )
00096 {}
00097 virtual ~CORBASink() {
00098
00099 std::cout << "CORBASink destructor" << std::endl;
00100 }
00101
00102 public:
00106 virtual int isEventGenerator()
00107 {
00108 return 1;
00109
00110 }
00111
00121 virtual void onEventGenerated( Event& event, Node& generator)
00122 {
00123
00124 if ((cycle++ % frequency) == 0) {
00125 OT_CORBA::Event corba_event = event.getCORBAEvent();
00126
00127 try {
00128 corba_sink->setEvent(corba_event);
00129 }
00130 catch (CORBA::COMM_FAILURE) {
00131 std::cerr << "Caught CORBA::COMM_FAILURE" << std::endl;
00132 }
00133 catch (CORBA::TRANSIENT) {
00134 std::cerr << "Caught CORBA::TRANSIENT" << std::endl;
00135 }
00136 updateObservers( event );
00137 }
00138 }
00139
00140 friend class CORBAModule;
00141 };
00142
00143 }
00144
00145 #endif