19 #ifndef INCLUDE_RCF_BSDCLIENTTRANSPORT_HPP
20 #define INCLUDE_RCF_BSDCLIENTTRANSPORT_HPP
22 #include <RCF/Export.hpp>
23 #include <RCF/ConnectionOrientedClientTransport.hpp>
25 #include <boost/scoped_ptr.hpp>
29 typedef AsioSocket TcpSocket;
30 typedef boost::shared_ptr<TcpSocket> TcpSocketPtr;
32 #ifdef RCF_HAS_LOCAL_SOCKETS
34 using ASIO_NS::local::stream_protocol;
35 typedef stream_protocol::socket UnixLocalSocket;
36 typedef boost::shared_ptr<UnixLocalSocket> UnixLocalSocketPtr;
40 typedef TcpSocket UnixLocalSocket;
41 typedef TcpSocketPtr UnixLocalSocketPtr;
45 class RCF_EXPORT BsdClientTransport :
46 public ConnectionOrientedClientTransport
51 BsdClientTransport(
const BsdClientTransport & rhs);
52 BsdClientTransport(TcpSocketPtr socketPtr);
54 #ifdef RCF_HAS_LOCAL_SOCKETS
55 BsdClientTransport(UnixLocalSocketPtr socketPtr);
58 ~BsdClientTransport();
60 TcpSocketPtr releaseTcpSocket();
61 UnixLocalSocketPtr releaseLocalSocket();
63 int getNativeHandle()
const;
68 const ByteBuffer &byteBuffer,
69 std::size_t bytesRequested);
71 std::size_t implReadAsync(
72 const ByteBuffer &byteBuffer,
73 std::size_t bytesRequested);
75 std::size_t implWrite(
76 const std::vector<ByteBuffer> &byteBuffers);
78 std::size_t implWriteAsync(
79 const std::vector<ByteBuffer> &byteBuffers);
86 TcpSocketPtr mTcpSocketPtr;
87 UnixLocalSocketPtr mLocalSocketPtr;
89 AsioBuffersPtr mAsioBuffersPtr;
90 AsioIoService * mpIoService;
97 #endif // ! INCLUDE_RCF_TCPCLIENTTRANSPORT_HPP