+public:
+ GSocket();
+ ~GSocket();
+ bool IsOk() { return m_ok; }
+
+ void Shutdown();
+ GSocketError SetLocal(GAddress *address);
+ GSocketError SetPeer(GAddress *address);
+ GAddress *GetLocal();
+ GAddress *GetPeer();
+ GSocketError SetServer();
+ GSocket *WaitConnection();
+ bool SetReusable() { return false; }
+ GSocketError SetNonOriented();
+ GSocketError Connect(GSocketStream stream);
+ int Read(char *buffer, int size);
+ int Write(const char *buffer, int size);
+ GSocketEventFlags Select(GSocketEventFlags flags);
+ void SetNonBlocking(bool non_block);
+ void SetTimeout(unsigned long millisec);
+ GSocketError WXDLLIMPEXP_NET GetError();
+ void SetCallback(GSocketEventFlags flags,
+ GSocketCallback callback, char *cdata);
+ void UnsetCallback(GSocketEventFlags flags);
+ GSocketError GetSockOpt(int level, int optname, void *optval, int *optlen)
+ { return GSOCK_INVOP; }
+ GSocketError SetSockOpt(int level, int optname,
+ const void *optval, int optlen)
+ { return GSOCK_INVOP; }
+
+protected:
+ bool m_ok;
+
+ /* Input / Output */
+ GSocketError Input_Timeout();
+ GSocketError Output_Timeout();
+ int Recv_Stream(char *buffer, int size);
+ int Recv_Dgram(char *buffer, int size);
+ int Send_Stream(const char *buffer, int size);
+ int Send_Dgram(const char *buffer, int size);
+
+ /* Callbacks */
+ void Enable_Events();
+ void Disable_Events();
+
+// TODO: Make these protected
+public: