RCFProto
 All Classes Functions Typedefs
BsdClientTransport.hpp
1 
2 //******************************************************************************
3 // RCF - Remote Call Framework
4 //
5 // Copyright (c) 2005 - 2013, Delta V Software. All rights reserved.
6 // http://www.deltavsoft.com
7 //
8 // RCF is distributed under dual licenses - closed source or GPL.
9 // Consult your particular license for conditions of use.
10 //
11 // If you have not purchased a commercial license, you are using RCF
12 // under GPL terms.
13 //
14 // Version: 2.0
15 // Contact: support <at> deltavsoft.com
16 //
17 //******************************************************************************
18 
19 #ifndef INCLUDE_RCF_BSDCLIENTTRANSPORT_HPP
20 #define INCLUDE_RCF_BSDCLIENTTRANSPORT_HPP
21 
22 #include <RCF/Export.hpp>
23 #include <RCF/ConnectedClientTransport.hpp>
24 
25 #include <boost/scoped_ptr.hpp>
26 
27 namespace RCF {
28 
29  class RCF_EXPORT BsdClientTransport :
30  public ConnectedClientTransport
31  {
32  public:
33 
34  BsdClientTransport();
35  BsdClientTransport(const BsdClientTransport & rhs);
36  BsdClientTransport(TcpSocketPtr socketPtr);
37 
38 #ifdef RCF_HAS_LOCAL_SOCKETS
39  BsdClientTransport(UnixLocalSocketPtr socketPtr);
40 #endif
41 
42  ~BsdClientTransport();
43 
44  TcpSocketPtr releaseTcpSocket();
45  UnixLocalSocketPtr releaseLocalSocket();
46 
47  int getNativeHandle() const;
48 
49  private:
50 
51  std::size_t implRead(
52  const ByteBuffer &byteBuffer,
53  std::size_t bytesRequested);
54 
55  std::size_t implReadAsync(
56  const ByteBuffer &byteBuffer,
57  std::size_t bytesRequested);
58 
59  std::size_t implWrite(
60  const std::vector<ByteBuffer> &byteBuffers);
61 
62  std::size_t implWriteAsync(
63  const std::vector<ByteBuffer> &byteBuffers);
64 
65  bool isConnected();
66 
67  protected:
68 
69  int mFd;
70  TcpSocketPtr mTcpSocketPtr;
71  UnixLocalSocketPtr mLocalSocketPtr;
72 
73  AsioIoService * mpIoService;
74 
75  int mWriteCounter;
76  };
77 
78 } // namespace RCF
79 
80 #endif // ! INCLUDE_RCF_TCPCLIENTTRANSPORT_HPP