19 #ifndef INCLUDE_RCF_UNIXLOCALSERVERTRANSPORT_HPP 20 #define INCLUDE_RCF_UNIXLOCALSERVERTRANSPORT_HPP 22 #include <RCF/Asio.hpp> 25 #error Unix domain sockets not supported on Windows. 28 #ifndef RCF_HAS_LOCAL_SOCKETS 29 #error Unix domain sockets not supported by this version of Boost.Asio. 32 #include <RCF/AsioServerTransport.hpp> 33 #include <RCF/Export.hpp> 37 using ASIO_NS::local::stream_protocol;
38 typedef stream_protocol::socket UnixLocalSocket;
39 typedef std::shared_ptr<UnixLocalSocket> UnixLocalSocketPtr;
41 class UnixLocalServerTransport;
43 class RCF_EXPORT UnixLocalNetworkSession :
public AsioNetworkSession
46 UnixLocalNetworkSession(
47 UnixLocalServerTransport & transport,
48 AsioIoService & ioService);
50 const RemoteAddress & implGetRemoteAddress();
52 void implRead(
char * buffer, std::size_t bufferLen);
54 void implWrite(
const std::vector<ByteBuffer> & buffers);
60 bool implIsConnected();
64 void implCloseAfterWrite();
68 void implTransferNativeFrom(ClientTransport & clientTransport);
70 int getNativeHandle();
73 UnixLocalSocketPtr mSocketPtr;
74 std::string mRemoteFileName;
75 NoRemoteAddress mRemoteAddress;
78 class RCF_EXPORT UnixLocalServerTransport :
79 public AsioServerTransport
83 UnixLocalServerTransport(
const std::string & fileName);
89 AsioNetworkSessionPtr implCreateNetworkSession();
94 const Endpoint &endpoint);
96 std::string getPipeName()
const;
98 void onServerStart(RcfServer & server);
99 void onServerStop(RcfServer & server);
103 const std::string mFileName;
108 #endif // ! INCLUDE_RCF_UNIXLOCALSERVERTRANSPORT_HPP std::unique_ptr< ClientTransport > ClientTransportUniquePtr
Unique pointer wrapper for RCF::ClientTransport.
Definition: RcfFwd.hpp:43
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