You.i Engine
YiTCPSocket.h
Go to the documentation of this file.
1 #ifndef _YI_TCPSOCKET_H_
2 #define _YI_TCPSOCKET_H_
3 
4 #include "framework/YiPredef.h"
5 #include "network/YiSocket.h"
6 #include "utility/YiString.h"
7 
8 class CYITCPSocketPriv;
9 
22 class CYITCPSocket : public IYISocket
23 {
24 public:
29  static std::unique_ptr<CYITCPSocket> Create(const CYIString &host, uint16_t uPort);
30 
35  static std::unique_ptr<CYITCPSocket> Create(int32_t nSocketDescriptor, const CYIString &host, uint16_t uPort);
36 
37  virtual ~CYITCPSocket();
38 
39  virtual bool Connect() override;
40  virtual bool Disconnect() override;
41  virtual bool IsConnected() const override;
42 
43  virtual IYISocket::SOCKET_RESULT Send(const char *pBuffer, size_t uLength) override;
44  virtual IYISocket::SOCKET_RESULT Send(const char *pBuffer, size_t uLength, size_t &uSent) override;
45 
46  virtual IYISocket::SOCKET_RESULT Receive(char *pBuffer, size_t uLength, size_t &uReceived) override;
47 
48  virtual IYISocket::SOCKET_RESULT TryReceive(char *pBuffer, size_t uLength, size_t &uReceived);
49  virtual IYISocket::SOCKET_RESULT TryReceive(char *pBuffer, size_t uLength, size_t &uReceived, int16_t uTimeout);
50 
51  virtual uint64_t GetTotalBytesSent() const override;
52  virtual uint64_t GetTotalBytesReceived() const override;
53 
54  virtual void SetConnectionTimeoutMs(uint32_t uTimeoutMs) override;
55  virtual uint32_t GetConnectionTimeoutMs() const override;
56 
64  bool SetSocketOptions(int32_t nLevel, int32_t nName, void *pOption, uint32_t uSize);
65 
66  bool SetSocketBlockingEnabled(bool bBlocking) override;
67 
77  bool Bind();
78 
82  bool IsBound() const;
83 
89  bool Listen(int32_t bBacklog) const;
90 
96  std::unique_ptr<CYITCPSocket> Accept() const;
97  std::unique_ptr<CYITCPSocket> TryAccept() const;
98 
99 protected:
100  CYITCPSocket(const CYIString &host, uint16_t uPort);
101  CYITCPSocket(int32_t nSocketDescriptor, const CYIString &host, uint16_t uPort);
102 
103 private:
104  YI_DISALLOW_COPY_AND_ASSIGN(CYITCPSocket);
105 
106  CYITCPSocketPriv *m_pPriv;
107 };
108 
113 #endif /* _YI_TCPSOCKET_H_ */
114 
virtual void SetConnectionTimeoutMs(uint32_t uTimeoutMs) override
virtual bool Disconnect() override
SOCKET_RESULT
Possible return values from socket operations.
Definition: YiSocket.h:25
bool Listen(int32_t bBacklog) const
CYITCPSocket(const CYIString &host, uint16_t uPort)
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
std::unique_ptr< CYITCPSocket > Accept() const
virtual IYISocket::SOCKET_RESULT TryReceive(char *pBuffer, size_t uLength, size_t &uReceived)
bool IsBound() const
static std::unique_ptr< CYITCPSocket > Create(const CYIString &host, uint16_t uPort)
virtual ~CYITCPSocket()
virtual uint64_t GetTotalBytesReceived() const override
virtual bool IsConnected() const override
virtual IYISocket::SOCKET_RESULT Receive(char *pBuffer, size_t uLength, size_t &uReceived) override
virtual IYISocket::SOCKET_RESULT Send(const char *pBuffer, size_t uLength) override
bool SetSocketBlockingEnabled(bool bBlocking) override
virtual uint64_t GetTotalBytesSent() const override
virtual uint32_t GetConnectionTimeoutMs() const override
The IYISocket defines the interface to be implemented by any class fulfilling sockets services...
Definition: YiSocket.h:19
std::unique_ptr< CYITCPSocket > TryAccept() const
virtual bool Connect() override
Implements a basic TCP socket.
Definition: YiTCPSocket.h:22
bool SetSocketOptions(int32_t nLevel, int32_t nName, void *pOption, uint32_t uSize)