+#ifndef _WX_UNIX_GSOCKUNX_H_
+#define _WX_UNIX_GSOCKUNX_H_
+
+class wxGSocketIOHandler;
+
+class GSocket
+{
+public:
+ GSocket();
+ virtual ~GSocket();
+ bool IsOk() { return m_ok; }
+ void Close();
+ void Shutdown();
+ GSocketError SetLocal(GAddress *address);
+ GSocketError SetPeer(GAddress *address);
+ GAddress *GetLocal();
+ GAddress *GetPeer();
+ GSocketError SetServer();
+ GSocket *WaitConnection();
+ bool SetReusable();
+ bool SetBroadcast();
+ bool DontDoBind();
+ GSocketError Connect(GSocketStream stream);
+ GSocketError SetNonOriented();
+ 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);
+ GSocketError SetSockOpt(int level, int optname,
+ const void *optval, int optlen);
+ //attach or detach from main loop
+ void Notify(bool flag);
+ virtual void Detected_Read();
+ virtual void Detected_Write();
+ void SetInitialSocketBuffers(int recv, int send)
+ {
+ m_initialRecvBufferSize = recv;
+ m_initialSendBufferSize = send;
+ }
+
+protected:
+ //enable or disable event callback using gsocket gui callback table
+ void EnableEvents(bool flag = true);
+ void DisableEvents() { EnableEvents(false); }
+ void Enable(GSocketEvent event);
+ void Disable(GSocketEvent event);
+ 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);
+ bool m_ok;
+ int m_initialRecvBufferSize;
+ int m_initialSendBufferSize;
+public:
+ /* DFE: We can't protect these data member until the GUI code is updated */
+ /* protected: */