Remote Call Framework 3.3
BsdClientTransport.hpp
1 
2 //******************************************************************************
3 // RCF - Remote Call Framework
4 //
5 // Copyright (c) 2005 - 2022, Delta V Software. All rights reserved.
6 // https://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 under GPL terms.
12 //
13 // Version: 3.3
14 // Contact: support <at> deltavsoft.com
15 //
16 //******************************************************************************
17 
18 #ifndef INCLUDE_RCF_BSDCLIENTTRANSPORT_HPP
19 #define INCLUDE_RCF_BSDCLIENTTRANSPORT_HPP
20 
21 #include <RCF/Export.hpp>
22 #include <RCF/ConnectedClientTransport.hpp>
23 
24 namespace RCF {
25 
26  class RCF_EXPORT BsdClientTransport :
27  public ConnectedClientTransport
28  {
29  public:
30 
31  BsdClientTransport();
32  BsdClientTransport(const BsdClientTransport & rhs);
33  BsdClientTransport(TcpSocketPtr socketPtr);
34 
35 #ifdef RCF_HAS_LOCAL_SOCKETS
36  BsdClientTransport(UnixLocalSocketPtr socketPtr);
37 #endif
38 
39  ~BsdClientTransport();
40 
41  TcpSocketPtr releaseTcpSocket();
42  UnixLocalSocketPtr releaseLocalSocket();
43 
44  int getNativeHandle() const;
45 
46  private:
47 
48  std::size_t implRead(
49  const ByteBuffer &byteBuffer,
50  std::size_t bytesRequested);
51 
52  std::size_t implReadAsync(
53  const ByteBuffer &byteBuffer,
54  std::size_t bytesRequested);
55 
56  std::size_t implWrite(
57  const std::vector<ByteBuffer> &byteBuffers);
58 
59  std::size_t implWriteAsync(
60  const std::vector<ByteBuffer> &byteBuffers);
61 
62  bool isConnected();
63 
64  protected:
65 
66  int mFd;
67  TcpSocketPtr mTcpSocketPtr;
68  UnixLocalSocketPtr mLocalSocketPtr;
69 
70  AsioIoService * mpIoService;
71 
72  int mWriteCounter;
73  };
74 
75 } // namespace RCF
76 
77 #endif // ! INCLUDE_RCF_TCPCLIENTTRANSPORT_HPP
Definition: AmiIoHandler.hpp:23