19 #ifndef INCLUDE_RCF_SERVERTRANSPORT_HPP 20 #define INCLUDE_RCF_SERVERTRANSPORT_HPP 30 #include <RCF/Export.hpp> 32 #include <RCF/ThreadLibrary.hpp> 43 virtual std::string string()
const 56 class RCF_EXPORT NetworkSession :
public std::enable_shared_from_this<NetworkSession>
61 virtual ~NetworkSession();
63 virtual void postRead() = 0;
65 virtual void postWrite(std::vector<ByteBuffer> &byteBuffers) = 0;
66 virtual void postClose() = 0;
69 getServerTransport() = 0;
72 getRemoteAddress() = 0;
74 virtual bool isConnected() = 0;
77 virtual void setTransportFilters(
const std::vector<FilterPtr> &filters) = 0;
78 virtual void getTransportFilters(std::vector<FilterPtr> &filters) = 0;
79 void setEnableReconnect(
bool enableReconnect);
80 bool getEnableReconnect();
82 virtual void getWireFilters(std::vector<FilterPtr> &filters);
86 std::uint64_t getTotalBytesReceived()
const;
87 std::uint64_t getTotalBytesSent()
const;
89 RcfSessionPtr getSessionPtr()
const;
91 std::uint32_t getLastActivityTimestamp()
const;
92 void setLastActivityTimestamp();
95 bool mEnableReconnect;
96 std::uint64_t mBytesReceivedCounter;
97 std::uint64_t mBytesSentCounter;
98 std::uint32_t mLastActivityTimestampMs;
100 RcfSessionPtr mRcfSessionPtr;
104 typedef std::shared_ptr<NetworkSession> NetworkSessionPtr;
105 typedef std::weak_ptr<NetworkSession> NetworkSessionWeakPtr;
108 typedef std::shared_ptr<RcfSession> RcfSessionPtr;
110 typedef RcfSessionPtr SessionPtr;
113 typedef std::shared_ptr<ThreadPool> ThreadPoolPtr;
139 void setMaxIncomingMessageLength(std::size_t maxMessageLength);
142 std::size_t getMaxIncomingMessageLength()
const;
145 void setConnectionLimit(std::size_t connectionLimit);
148 std::size_t getConnectionLimit()
const;
151 void setInitialNumberOfConnections(std::size_t initialNumberOfConnections);
154 std::size_t getInitialNumberOfConnections()
const;
157 void setThreadPool(ThreadPoolPtr threadPoolPtr);
162 void setSupportedProtocols(
const std::vector<TransportProtocol> & protocols);
165 const std::vector<TransportProtocol> & getSupportedProtocols()
const;
169 void setRpcProtocol(RpcProtocol rpcProtocol);
170 RpcProtocol getRpcProtocol()
const;
175 RpcProtocol mRpcProtocol;
180 mutable ReadWriteMutex mReadWriteMutex;
181 std::size_t mMaxMessageLength;
182 std::size_t mConnectionLimit;
183 std::size_t mInitialNumberOfConnections;
185 std::vector<TransportProtocol> mSupportedProtocols;
189 Mutex mSessionsMutex;
190 std::set<NetworkSessionWeakPtr> mSessions;
194 template<
typename Iter>
195 void enumerateSessions(
const Iter & iter)
197 Lock lock(mSessionsMutex);
198 std::copy(mSessions.begin(), mSessions.end(), iter);
203 class ServerTransportEx
207 virtual ~ServerTransportEx() {}
210 createClientTransport(
216 RcfClientPtr stubEntryPtr,
217 bool keepClientConnection) = 0;
220 createClientTransport(
221 SessionPtr sessionPtr) = 0;
225 RCF_EXPORT std::size_t getDefaultMaxMessageLength();
227 RCF_EXPORT
void setDefaultMaxMessageLength(
228 std::size_t maxMessageLength);
232 #endif // ! INCLUDE_RCF_SERVERTRANSPORT_HPP Describes the network address of a remote peer.
Definition: ServerTransport.hpp:37
Represents a server side session, associated with a client connection.
Definition: RcfSession.hpp:67
Indicates that no remote address is available.
Definition: ServerTransport.hpp:53
std::unique_ptr< ClientTransport > ClientTransportUniquePtr
Unique pointer wrapper for RCF::ClientTransport.
Definition: RcfFwd.hpp:43
Base class for all server transports.
Definition: ServerTransport.hpp:122
Base class for all network endpoint types.
Definition: Endpoint.hpp:41
Represents a server-side thread pool.
Definition: ThreadPool.hpp:79
Definition: ByteBuffer.hpp:40
TransportProtocol
Describes the transport protocols used by a RCF connection. Transport protocols are layered on top of...
Definition: Enums.hpp:63
Definition: AmiIoHandler.hpp:24
TransportType
Describes the transport types used by a RCF connection.
Definition: Enums.hpp:34
std::shared_ptr< ServerTransport > ServerTransportPtr
Unique pointer wrapper for RCF::ServerTransport.
Definition: RcfFwd.hpp:46