19 #ifndef INCLUDE_RCF_MULTICASTCLIENTTRANSPORT_HPP
20 #define INCLUDE_RCF_MULTICASTCLIENTTRANSPORT_HPP
26 #include <boost/shared_ptr.hpp>
28 #include <RCF/ClientTransport.hpp>
29 #include <RCF/Export.hpp>
30 #include <RCF/ThreadLibrary.hpp>
34 typedef boost::shared_ptr< ClientTransportAutoPtr > ClientTransportAutoPtrPtr;
35 typedef std::vector< ClientTransportAutoPtrPtr > ClientTransportList;
38 class RCF_EXPORT MulticastClientTransport :
public ClientTransport
42 TransportType getTransportType();
44 std::auto_ptr<ClientTransport> clone()
const;
46 EndpointPtr getEndpointPtr()
const;
48 void doSendOnTransports(
50 ClientTransportList& transportList,
51 const std::vector<ByteBuffer> & data,
52 unsigned int timeoutMs);
55 ClientTransportCallback & clientStub,
56 const std::vector<ByteBuffer> & data,
57 unsigned int timeoutMs);
60 ClientTransportCallback & clientStub,
61 ByteBuffer & byteBuffer,
62 unsigned int timeoutMs);
67 ClientTransportCallback & clientStub,
68 unsigned int timeoutMs);
71 unsigned int timeoutMs);
74 ClientTransportAutoPtr clientTransportAutoPtr);
76 void setTransportFilters(
77 const std::vector<FilterPtr> & filters);
79 void getTransportFilters(
80 std::vector<FilterPtr> & filters);
82 void setTimer(boost::uint32_t timeoutMs, ClientTransportCallback *pClientStub);
84 void dropIdleTransports();
85 void pingAllTransports();
89 std::size_t getTransportCount();
93 void bringInNewTransports();
95 Mutex mClientTransportsMutex;
96 ClientTransportList mClientTransports;
97 ClientTransportList mClientTransportsTemp;
98 ClientTransportList mClientTransportsSending;
100 Mutex mAddedClientTransportsMutex;
101 ClientTransportList mAddedClientTransports;
103 ClientTransportAutoPtr mMulticastTemp;
108 #endif // ! INCLUDE_RCF_MULTICASTCLIENTTRANSPORT_HPP