19 #ifndef INCLUDE_RCF_UNIXLOCALCLIENTTRANSPORT_HPP
20 #define INCLUDE_RCF_UNIXLOCALCLIENTTRANSPORT_HPP
22 #if defined(BOOST_WINDOWS)
23 #error Unix domain sockets not supported on Windows.
26 #include <RCF/BsdClientTransport.hpp>
27 #include <RCF/Export.hpp>
28 #include <RCF/IpClientTransport.hpp>
34 using ASIO_NS::local::stream_protocol;
35 typedef stream_protocol::socket UnixLocalSocket;
36 typedef boost::shared_ptr<UnixLocalSocket> UnixLocalSocketPtr;
38 class RCF_EXPORT UnixLocalClientTransport :
39 public BsdClientTransport
42 UnixLocalClientTransport(
const UnixLocalClientTransport &rhs);
43 UnixLocalClientTransport(
const std::string &fileName);
44 UnixLocalClientTransport(
const sockaddr_un &remoteAddr);
45 UnixLocalClientTransport(UnixLocalSocketPtr socketPtr,
const std::string & fileName);
47 ~UnixLocalClientTransport();
49 TransportType getTransportType();
51 ClientTransportAutoPtr clone()
const;
53 void implConnect(
unsigned int timeoutMs);
56 ClientTransportCallback &clientStub,
57 unsigned int timeoutMs);
59 void implConnectAsync(
60 ClientTransportCallback &clientStub,
61 unsigned int timeoutMs);
64 EndpointPtr getEndpointPtr()
const;
66 void setRemoteAddr(
const sockaddr_un &remoteAddr);
67 const sockaddr_un & getRemoteAddr()
const;
69 bool isAssociatedWithIoService();
70 void associateWithIoService(AsioIoService & ioService);
72 std::string getPipeName()
const;
77 void setupSocket(Exception & e);
79 sockaddr_un mRemoteAddr;
80 const std::string mFileName;
85 #endif // ! INCLUDE_RCF_UNIXLOCALCLIENTTRANSPORT_HPP