tcp_connection.h
1 
2 #pragma once
3 
4 #include "network_condition_variable.h"
5 
6 #include <memory>
7 #include <vector>
8 #include <mutex>
9 
10 namespace clan
11 {
12  class SocketName;
13  class Event;
14  class TCPSocket;
15 
17  class TCPConnection : public NetworkEvent
18  {
19  public:
20  static void init_sockets();
21 
23  TCPConnection();
24 
26  TCPConnection(const SocketName &endpoint);
27 
29 
31  bool is_null() const { return !impl; }
32 
35 
38 
40  void close();
41 
44  int write(const void *data, int size);
45 
48  int read(void *data, int size);
49 
51  TCPConnection(const std::shared_ptr<TCPSocket> &impl);
52 
53  protected:
54  SocketHandle *get_socket_handle() override;
55 
56  private:
57  std::shared_ptr<TCPSocket> impl;
58  };
59 
60  // To do: QOSAddSocketToFlow
61 }
Definition: clanapp.h:35
bool is_null() const
Returns true if it is a null object.
Definition: tcp_connection.h:31
void close()
Close connection.
int read(void *data, int size)
Read data from TCP socket.
Socket name; container class for an IP address and port.
Definition: socket_name.h:44
SocketHandle * get_socket_handle() override
TCP/IP socket connection.
Definition: tcp_connection.h:17
SocketName get_remote_name()
Returns the socket name of the peer end point.
int write(const void *data, int size)
Write data to TCP socket.
SocketName get_local_name()
Returns the socket name of the local end point.
TCPConnection()
Create null object.
Base class for all classes that generate network events.
Definition: network_condition_variable.h:14
static void init_sockets()