X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/982d1607826ec0e590146ff40b1dd7068296f004..4b4d23c77e1971e8eb2df9bbd7e4ef817e8f447e:/include/wx/msw/gsockmsw.h diff --git a/include/wx/msw/gsockmsw.h b/include/wx/msw/gsockmsw.h index 848fede04d..7fad130400 100644 --- a/include/wx/msw/gsockmsw.h +++ b/include/wx/msw/gsockmsw.h @@ -21,11 +21,11 @@ #include "gsocket.h" #endif +#ifdef wxUSE_GSOCKET_CPLUSPLUS +#include "wx/msw/wrapwin.h" +#else #include #include - -#ifdef __cplusplus -extern "C" { #endif #ifndef TRUE @@ -36,9 +36,73 @@ extern "C" { #define FALSE 0 #endif +#ifdef wxUSE_GSOCKET_CPLUSPLUS +class GSocketGUIFunctionsTableConcrete: public GSocketGUIFunctionsTable +{ +public: + virtual bool OnInit(); + virtual void OnExit(); + virtual bool CanUseEventLoop(); + virtual bool Init_Socket(GSocket *socket); + virtual void Destroy_Socket(GSocket *socket); + virtual void Enable_Events(GSocket *socket); + virtual void Disable_Events(GSocket *socket); +}; +#endif /* def wxUSE_GSOCKET_CPLUSPLUS */ + +#if defined(__cplusplus) && !defined wxUSE_GSOCKET_CPLUSPLUS +extern "C" { +#endif + /* Definition of GSocket */ +#ifdef wxUSE_GSOCKET_CPLUSPLUS +class GSocket +#else struct _GSocket +#endif { +#ifdef wxUSE_GSOCKET_CPLUSPLUS +public: + GSocket(); + ~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(); + int SetReusable(); + 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 millis); + GSocketError 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); +protected: + GSocketError Input_Timeout(); + GSocketError Output_Timeout(); + GSocketError Connect_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; + +/* TODO: Make these protected */ +public: +#endif /* def wxUSE_GSOCKET_CPLUSPLUS */ SOCKET m_fd; GAddress *m_local; GAddress *m_peer; @@ -59,6 +123,61 @@ struct _GSocket int m_msgnumber; }; +#ifdef wxUSE_GSOCKET_CPLUSPLUS +/* TODO: Fix src/common/socket.cpp to use the new API */ +inline void GSocket_Shutdown(GSocket *socket) +{ socket->Shutdown(); } +inline GSocketError GSocket_SetLocal(GSocket *socket, GAddress *address) +{ return socket->SetLocal(address); } +inline GSocketError GSocket_SetPeer(GSocket *socket, GAddress *address) +{ return socket->SetPeer(address); } +inline GAddress *GSocket_GetLocal(GSocket *socket) +{ return socket->GetLocal(); } +inline GAddress *GSocket_GetPeer(GSocket *socket) +{ return socket->GetPeer(); } +inline GSocketError GSocket_SetServer(GSocket *socket) +{ return socket->SetServer(); } +inline GSocket *GSocket_WaitConnection(GSocket *socket) +{ return socket->WaitConnection(); } +inline int GSocket_SetReusable(GSocket *socket) +{ return socket->SetReusable(); } +inline GSocketError GSocket_Connect(GSocket *socket, GSocketStream stream) +{ return socket->Connect(stream); } +inline GSocketError GSocket_SetNonOriented(GSocket *socket) +{ return socket->SetNonOriented(); } +inline int GSocket_Read(GSocket *socket, char *buffer, int size) +{ return socket->Read(buffer,size); } +inline int GSocket_Write(GSocket *socket, const char *buffer, int size) +{ return socket->Write(buffer,size); } +inline GSocketEventFlags GSocket_Select(GSocket *socket, GSocketEventFlags flags) +{ return socket->Select(flags); } +inline void GSocket_SetNonBlocking(GSocket *socket, int non_block) +{ socket->SetNonBlocking(non_block); } +inline void GSocket_SetTimeout(GSocket *socket, unsigned long millisec) +{ socket->SetTimeout(millisec); } +inline void GSocket_SetCallback(GSocket *socket, GSocketEventFlags flags, + GSocketCallback fallback, char *cdata) +{ socket->SetCallback(flags,fallback,cdata); } +inline void GSocket_UnsetCallback(GSocket *socket, GSocketEventFlags flags) +{ socket->UnsetCallback(flags); } +inline GSocketError GSocket_GetSockOpt(GSocket *socket, int level, int optname, + void *optval, int *optlen) +{ return socket->GetSockOpt(level,optname,optval,optlen); } +inline GSocketError GSocket_SetSockOpt(GSocket *socket, int level, int optname, + const void *optval, int optlen) +{ return socket->SetSockOpt(level,optname,optval,optlen); } +inline void GSocket_destroy(GSocket *socket) +{ delete socket; } +#endif /* def wxUSE_GSOCKET_CPLUSPLUS */ + +#if defined(__cplusplus) && !defined wxUSE_GSOCKET_CPLUSPLUS +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + /* Definition of GAddress */ struct _GAddress { @@ -71,6 +190,7 @@ struct _GAddress GSocketError m_error; }; +#ifndef wxUSE_GSOCKET_CPLUSPLUS /* Input / output */ GSocketError _GSocket_Input_Timeout(GSocket *socket); @@ -92,6 +212,7 @@ LRESULT CALLBACK _GSocket_Internal_WinProc(HWND, UINT, WPARAM, LPARAM); void _GSocket_Enable_Events(GSocket *socket); void _GSocket_Disable_Events(GSocket *socket); +#endif /* ndef wxUSE_GSOCKET_CPLUSPLUS */ /* GAddress */