+class WXDLLEXPORT wxSocketBase : public wxEvtHandler
+{
+ DECLARE_CLASS(wxSocketBase)
+public:
+
+ enum
+ {
+ NONE = wxSOCKET_NONE,
+ NOWAIT = wxSOCKET_NOWAIT,
+ WAITALL = wxSOCKET_WAITALL,
+ SPEED = wxSOCKET_BLOCK
+ };
+
+ typedef void (*wxSockCbk)(wxSocketBase& sock, wxSocketNotify evt, char *cdata);
+
+protected:
+ GSocket *m_socket; // GSocket
+ wxEvtHandler *m_evt_handler; // event handler
+ int m_id; // Socket id (for event handler)
+
+ // Attributes
+ wxSockFlags m_flags; // wxSocket flags
+ wxSockType m_type; // wxSocket type
+ wxSocketEventFlags m_neededreq; // Event mask
+ bool m_notify_state; // Notify events to users?
+
+ // State
+ bool m_connected; // Connected?
+ bool m_establishing; // Establishing connection?
+ bool m_reading; // Busy reading?
+ bool m_writing; // Busy writing?
+ bool m_error; // Did last IO call fail?
+ wxUint32 m_lcount; // Last IO transaction size
+ unsigned long m_timeout; // IO timeout value
+ wxList m_states; // Stack of states
+ bool m_interrupt; // Interrupt ongoing wait operations
+
+ // Pushback buffer
+ char *m_unread; // Pushback buffer
+ wxUint32 m_unrd_size; // Pushback buffer size
+ wxUint32 m_unrd_cur; // Pushback pointer (index into buffer)
+
+ // Callback
+ wxSockCbk m_cbk; // C callback
+ char *m_cdata; // C callback data