]> git.donarmstrong.com Git - bamtools.git/blob - src/api/internal/io/TcpSocketEngine_p.h
a87eafebee0340a322c16ffec10ac0f6aeed28cb
[bamtools.git] / src / api / internal / io / TcpSocketEngine_p.h
1 #ifndef TCPSOCKETENGINE_P_H
2 #define TCPSOCKETENGINE_P_H
3
4 #include "api/internal/io/HostAddress_p.h"
5 #include "api/internal/io/TcpSocket_p.h"
6
7 namespace BamTools {
8 namespace Internal {
9
10 struct TcpSocketEngine {
11
12     // ctors & dtor
13     public:
14         TcpSocketEngine(void);
15         TcpSocketEngine(const TcpSocketEngine& other);
16         ~TcpSocketEngine(void);
17
18     // TcpSocketEngine interface
19     public:
20
21         // connection-related methods
22         void Close(void);
23         bool Connect(const HostAddress& address, const uint16_t port);
24         bool Initialize(HostAddress::NetworkProtocol protocol);
25         bool IsValid(void) const;
26
27         // IO-related methods
28         int64_t NumBytesAvailable(void) const;
29         int64_t Read(char* dest, size_t max);
30         int64_t Write(const char* data, size_t length);
31
32         bool WaitForRead(int msec, bool* timedOut);
33         bool WaitForWrite(int msec, bool* timedOut);
34
35         // query connection state
36 //        HostAddress GetLocalAddress(void) const;
37 //        uint16_t GetLocalPort(void) const;
38         HostAddress GetRemoteAddress(void) const;
39         uint16_t    GetRemotePort(void) const;
40
41         int GetSocketDescriptor(void) const;
42         TcpSocket::SocketError GetSocketError(void);
43         TcpSocket::SocketState GetSocketState(void);
44
45         std::string GetErrorString(void) const;
46
47     // platform-dependent internal methods
48     // provided in the corresponding TcpSocketEngine_<OS>_p.cpp
49     private:
50         void    nativeClose(void);
51         bool    nativeConnect(const HostAddress& address, const uint16_t port);
52         bool    nativeCreateSocket(HostAddress::NetworkProtocol protocol);
53         void    nativeDisconnect(void);
54         bool    nativeFetchConnectionParameters(void);
55         int64_t  nativeNumBytesAvailable(void) const;
56         int64_t nativeRead(char* dest, size_t max);
57         int     nativeSelect(int msecs, bool isRead) const;
58         int64_t nativeWrite(const char* data, size_t length);
59
60     // data members
61     private:
62         int m_socketDescriptor;
63
64 //        HostAddress m_localAddress;
65         HostAddress m_remoteAddress;
66 //        uint16_t m_localPort;
67         uint16_t m_remotePort;
68
69         TcpSocket::SocketError m_socketError;
70         TcpSocket::SocketState m_socketState;
71         std::string m_errorString;
72 };
73
74 } // namespace Internal
75 } // namespace BamTools
76
77 #endif // TCPSOCKETENGINE_P_H