X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/80fdcdb90ef779185492dab676d461fc34933312..438959cca892a7651634cc3a7aad4819ac49b23c:/include/wx/socket.h?ds=inline diff --git a/include/wx/socket.h b/include/wx/socket.h index 35370059e7..0d0a0d7b5c 100644 --- a/include/wx/socket.h +++ b/include/wx/socket.h @@ -30,6 +30,16 @@ class wxSocketImpl; // Types and constants // ------------------------------------------------------------------------ +// Define the type of native sockets. +#if defined(__WINDOWS__) + // Although socket descriptors are still 32 bit values, even under Win64, + // the socket type is 64 bit there. + typedef wxUIntPtr wxSOCKET_T; +#else + typedef int wxSOCKET_T; +#endif + + // Types of different socket notifications or events. // // NB: the values here should be consecutive and start with 0 as they are @@ -71,13 +81,17 @@ enum wxSocketError // socket options/flags bit masks enum { - wxSOCKET_NONE = 0, - wxSOCKET_NOWAIT = 1, - wxSOCKET_WAITALL = 2, - wxSOCKET_BLOCK = 4, - wxSOCKET_REUSEADDR = 8, - wxSOCKET_BROADCAST = 16, - wxSOCKET_NOBIND = 32 + wxSOCKET_NONE = 0x0000, + wxSOCKET_NOWAIT_READ = 0x0001, + wxSOCKET_NOWAIT_WRITE = 0x0002, + wxSOCKET_NOWAIT = wxSOCKET_NOWAIT_READ | wxSOCKET_NOWAIT_WRITE, + wxSOCKET_WAITALL_READ = 0x0004, + wxSOCKET_WAITALL_WRITE = 0x0008, + wxSOCKET_WAITALL = wxSOCKET_WAITALL_READ | wxSOCKET_WAITALL_WRITE, + wxSOCKET_BLOCK = 0x0010, + wxSOCKET_REUSEADDR = 0x0020, + wxSOCKET_BROADCAST = 0x0040, + wxSOCKET_NOBIND = 0x0080 }; typedef int wxSocketFlags; @@ -123,6 +137,8 @@ public: bool IsData() { return WaitForRead(0, 0); } bool IsDisconnected() const { return !IsConnected(); } wxUint32 LastCount() const { return m_lcount; } + wxUint32 LastReadCount() const { return m_lcount_read; } + wxUint32 LastWriteCount() const { return m_lcount_write; } wxSocketError LastError() const; void SaveState(); void RestoreState(); @@ -171,6 +187,8 @@ public: bool GetOption(int level, int optname, void *optval, int *optlen); bool SetOption(int level, int optname, const void *optval, int optlen); wxUint32 GetLastIOSize() const { return m_lcount; } + wxUint32 GetLastIOReadSize() const { return m_lcount_read; } + wxUint32 GetLastIOWriteSize() const { return m_lcount_write; } // event handling void *GetClientData() const { return m_clientData; } @@ -179,6 +197,9 @@ public: void SetNotify(wxSocketEventFlags flags); void Notify(bool notify); + // Get the underlying socket descriptor. + wxSOCKET_T GetSocket() const; + // initialize/shutdown the sockets (done automatically so there is no need // to call these functions usually) // @@ -254,6 +275,8 @@ private: bool m_writing; // busy writing? bool m_closed; // was the other end closed? wxUint32 m_lcount; // last IO transaction size + wxUint32 m_lcount_read; // last IO transaction size of Read() direction. + wxUint32 m_lcount_write; // last IO transaction size of Write() direction. unsigned long m_timeout; // IO timeout value in seconds // (TODO: remove, wxSocketImpl has it too) wxList m_states; // stack of states (TODO: remove!)