3#if !defined( EMSCRIPTEN )
6#include "../Platform/Atomic.h"
11 #include <sys/socket.h>
21 #define InvalidSocket INVALID_SOCKET
26 #define InvalidSocket (-1)
54 void setNonblocking(
bool val =
true);
60 bool bind(uint16_t port) {
return bind(
AddrIn((uint32_t)INADDR_ANY), port); }
61 virtual bool bind(
AddrIn ip, uint16_t port);
63 bool send(
const void* data, uint64_t byteCount, uint64_t& bytesSent);
64 bool receive(
void* buffer, uint64_t byteCount, uint64_t& bytesReceived);
66 bool sendTo(
const void *data, uint64_t byteCount, uint64_t &bytesSent,
const SockaddrIn &addr);
67 bool recvFrom(
void* buffer, uint64_t byteCount, uint64_t& bytesReceived,
SockaddrIn &addr);
77 int64_t reconnectTime = 0;
79 static constexpr uint32_t cRemove = 0x00000001;
80 static constexpr uint32_t cDelete = 0x00000002;
81 static constexpr uint32_t cDoNotProcess = 0x00000004;
101 virtual bool bind(
AddrIn ip, uint16_t port)
override;
102 virtual bool disconnect()
override;
123 virtual bool isConnected()
const override {
return (flags & (cConnected | cListening)) ? true :
false; }
126 void setNoDelay(
bool val =
true);
130 virtual bool reconnect()
override;
131 virtual bool disconnect()
override;
134 bool listen(
AddrIn ip, uint16_t port);
136 virtual bool processIncoming()
override;
142 static constexpr uint32_t cListening = 0x00010000;
143 static constexpr uint32_t cAutoReconnect = 0x00020000;
144 static constexpr uint32_t cNoDelay = 0x00040000;
145 static constexpr uint32_t cConnected = 0x00080000;
147 int64_t connectTimeout = 0;
#define InvalidSocket
Definition: Connection.h:26
#define COGSFOUNDATION_API
Definition: FoundationBase.h:31
Definition: Connection.h:32
bool shouldDelete() const
Definition: Connection.h:52
const SockaddrIn & getAddress() const
Definition: Connection.h:46
virtual bool isConnected() const
Definition: Connection.h:50
void remove()
Definition: Connection.h:43
Socket getSocket() const
Definition: Connection.h:41
int64_t getReconnectTime() const
Definition: Connection.h:47
virtual IPProto proto() const =0
virtual bool processOutgoing()
Definition: Connection.h:69
void setDoNotProcess()
Definition: Connection.h:55
virtual bool processIncoming()
Definition: Connection.h:70
virtual bool reconnect()
Definition: Connection.h:57
virtual ~ConnectionBase()
Definition: Connection.h:35
virtual bool disconnect()=0
virtual bool isAutoConnectEnabled() const
Definition: Connection.h:49
bool bind(uint16_t port)
Definition: Connection.h:60
ConnectionBase()
Definition: Connection.h:34
void removeAndDelete()
Definition: Connection.h:44
virtual SocketType type() const =0
Family family() const
Definition: Connection.h:37
bool shouldRemove() const
Definition: Connection.h:51
Definition: Connection.h:111
virtual bool isAutoConnectEnabled() const override
Definition: Connection.h:122
void disableAutoReconnect()
Definition: Connection.h:121
void enableAutoReconnect()
Definition: Connection.h:120
virtual bool isConnected() const override
Definition: Connection.h:123
IPProto proto() const override
Definition: Connection.h:118
bool listen(uint16_t port)
Definition: Connection.h:133
ConnectionTCP()
Definition: Connection.h:113
virtual ConnectionTCP * accept(Socket, const SockaddrIn &)
Definition: Connection.h:138
void setConnectTimeout(int64_t milliseconds)
Definition: Connection.h:125
SocketType type() const override
Definition: Connection.h:117
Definition: Connection.h:91
void setMulticastAdapter(const AddrIn &addr)
Definition: Connection.h:99
IPProto proto() const override
Definition: Connection.h:97
SocketType type() const override
Definition: Connection.h:96
AddrIn multicastAdapter
Definition: Connection.h:105
int SocketType
Definition: Connection.h:24
int Socket
Definition: Connection.h:23
int IPProto
Definition: Connection.h:25
sa_family_t Family
Definition: Address.h:23
Main Cogs namespace.
Definition: MortonCode.h:5
std::atomic< T > Atomic
Definition: Atomic.h:107