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 #ifndef ORO_COMP_SOCKET_MARSHALLER
00028 #define ORO_COMP_SOCKET_MARSHALLER
00029
00030 #include <rtt/Property.hpp>
00031 #include <rtt/os/Mutex.hpp>
00032 #include <list>
00033
00034 namespace OCL
00035 {
00036 class TcpReporting;
00037 namespace TCP
00038 {
00039 class Datasender;
00040 class Socket;
00041 }
00042 }
00043
00044 namespace RTT
00045 {
00049 class SocketMarshaller
00050 : public Marshaller
00051 {
00052 private:
00053 RTT::OS::MutexRecursive lock;
00054 std::list<OCL::TCP::Datasender*> _connections;
00055 OCL::TcpReporting* _reporter;
00056
00057 public:
00058 SocketMarshaller(OCL::TcpReporting* reporter);
00059 ~SocketMarshaller();
00060 virtual void flush();
00061 virtual void serialize(RTT::PropertyBase*);
00062 virtual void serialize(const PropertyBag &v);
00063 void addConnection(OCL::TCP::Socket* os);
00064 void removeConnection(OCL::TCP::Datasender* sender);
00065 void closeAllConnections();
00066 void shutdown();
00067 OCL::TcpReporting* getReporter() const;
00068 };
00069 }
00070 #endif