tcp.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00014 #ifndef NETWORK_CORE_TCP_H
00015 #define NETWORK_CORE_TCP_H
00016
00017 #include "address.h"
00018 #include "packet.h"
00019
00020 #ifdef ENABLE_NETWORK
00021
00023 class NetworkTCPSocketHandler : public NetworkSocketHandler {
00024 private:
00025 Packet *packet_queue;
00026 Packet *packet_recv;
00027 public:
00028 SOCKET sock;
00029 bool writable;
00030
00035 bool IsConnected() const { return this->sock != INVALID_SOCKET; }
00036
00037 virtual NetworkRecvStatus CloseConnection(bool error = true);
00038 void Send_Packet(Packet *packet);
00039 bool Send_Packets(bool closing_down = false);
00040 bool IsPacketQueueEmpty();
00041
00042 Packet *Recv_Packet();
00043
00044 NetworkTCPSocketHandler(SOCKET s = INVALID_SOCKET);
00045 ~NetworkTCPSocketHandler();
00046 };
00047
00051 class TCPConnecter {
00052 private:
00053 class ThreadObject *thread;
00054 bool connected;
00055 bool aborted;
00056 bool killed;
00057 SOCKET sock;
00058
00060 void Connect();
00061
00066 static void ThreadEntry(void *param);
00067
00068 protected:
00070 NetworkAddress address;
00071
00072 public:
00077 TCPConnecter(const NetworkAddress &address);
00079 virtual ~TCPConnecter() {}
00080
00085 virtual void OnConnect(SOCKET s) {}
00086
00090 virtual void OnFailure() {}
00091
00098 static void CheckCallbacks();
00099
00101 static void KillAll();
00102 };
00103
00104 #endif
00105
00106 #endif