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