All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ITcpSocket.h
1 // Copyright eeGeo Ltd (2012-2016), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Networking.h"
7 #include <vector>
8 
9 namespace Eegeo
10 {
11  namespace Networking
12  {
13  class ITcpSocket
14  {
15  public:
16  virtual ~ITcpSocket() { }
17 
18  virtual u64 GetSocketDescriptor() const = 0;
19 
20  virtual void StartListening(int port) = 0;
21  virtual ITcpSocket* Accept() = 0;
22  virtual void SetNonBlocking() = 0;
23 
24  virtual ITcpSocketSet* GetSocketSet() = 0;
25  virtual ITcpSocketSet* GetSocketSet(const std::vector<ITcpSocket*>& clientSockets) = 0;
26 
27  virtual ssize_t Receive(char* buffer, size_t maxBufferLength) = 0;
28  virtual void Send(const char* data, int length) const = 0;
29 
30  virtual void Close() = 0;
31  };
32  }
33 }