1 /* -------------------------------------------------------------------------
2 * Project: GSocket (Generic Socket) for WX
4 * Purpose: GSocket MSW header
6 * -------------------------------------------------------------------------
12 #ifndef __GSOCKET_STANDALONE__
16 #if wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__)
18 #ifndef __GSOCKET_STANDALONE__
19 #include "wx/gsocket.h"
24 #ifdef wxUSE_GSOCKET_CPLUSPLUS
25 #include "wx/msw/wrapwin.h"
39 #ifdef wxUSE_GSOCKET_CPLUSPLUS
40 class GSocketGUIFunctionsTableConcrete
: public GSocketGUIFunctionsTable
43 virtual bool OnInit();
44 virtual void OnExit();
45 virtual bool CanUseEventLoop();
46 virtual bool Init_Socket(GSocket
*socket
);
47 virtual void Destroy_Socket(GSocket
*socket
);
48 virtual void Enable_Events(GSocket
*socket
);
49 virtual void Disable_Events(GSocket
*socket
);
51 #endif /* def wxUSE_GSOCKET_CPLUSPLUS */
53 #if defined(__cplusplus) && !defined wxUSE_GSOCKET_CPLUSPLUS
57 /* Definition of GSocket */
58 #ifdef wxUSE_GSOCKET_CPLUSPLUS
64 #ifdef wxUSE_GSOCKET_CPLUSPLUS
68 bool IsOk() { return m_ok
; }
71 GSocketError
SetLocal(GAddress
*address
);
72 GSocketError
SetPeer(GAddress
*address
);
75 GSocketError
SetServer();
76 GSocket
*WaitConnection();
78 GSocketError
Connect(GSocketStream stream
);
79 GSocketError
SetNonOriented();
80 int Read(char *buffer
, int size
);
81 int Write(const char *buffer
, int size
);
82 GSocketEventFlags
Select(GSocketEventFlags flags
);
83 void SetNonBlocking(bool non_block
);
84 void SetTimeout(unsigned long millis
);
85 GSocketError WXDLLIMPEXP_NET
GetError();
86 void SetCallback(GSocketEventFlags flags
,
87 GSocketCallback callback
, char *cdata
);
88 void UnsetCallback(GSocketEventFlags flags
);
89 GSocketError
GetSockOpt(int level
, int optname
,
90 void *optval
, int *optlen
);
91 GSocketError
SetSockOpt(int level
, int optname
,
92 const void *optval
, int optlen
);
94 GSocketError
Input_Timeout();
95 GSocketError
Output_Timeout();
96 GSocketError
Connect_Timeout();
97 int Recv_Stream(char *buffer
, int size
);
98 int Recv_Dgram(char *buffer
, int size
);
99 int Send_Stream(const char *buffer
, int size
);
100 int Send_Dgram(const char *buffer
, int size
);
103 /* TODO: Make these protected */
105 #endif /* def wxUSE_GSOCKET_CPLUSPLUS */
109 GSocketError m_error
;
117 struct timeval m_timeout
;
120 GSocketEventFlags m_detected
;
121 GSocketCallback m_cbacks
[GSOCK_MAX_EVENT
];
122 char *m_data
[GSOCK_MAX_EVENT
];
126 #ifdef wxUSE_GSOCKET_CPLUSPLUS
127 /* TODO: Fix src/common/socket.cpp to use the new API */
128 inline void GSocket_Shutdown(GSocket
*socket
)
129 { socket
->Shutdown(); }
130 inline GSocketError
GSocket_SetLocal(GSocket
*socket
, GAddress
*address
)
131 { return socket
->SetLocal(address
); }
132 inline GSocketError
GSocket_SetPeer(GSocket
*socket
, GAddress
*address
)
133 { return socket
->SetPeer(address
); }
134 inline GAddress
*GSocket_GetLocal(GSocket
*socket
)
135 { return socket
->GetLocal(); }
136 inline GAddress
*GSocket_GetPeer(GSocket
*socket
)
137 { return socket
->GetPeer(); }
138 inline GSocketError
GSocket_SetServer(GSocket
*socket
)
139 { return socket
->SetServer(); }
140 inline GSocket
*GSocket_WaitConnection(GSocket
*socket
)
141 { return socket
->WaitConnection(); }
142 inline int GSocket_SetReusable(GSocket
*socket
)
143 { return socket
->SetReusable(); }
144 inline GSocketError
GSocket_Connect(GSocket
*socket
, GSocketStream stream
)
145 { return socket
->Connect(stream
); }
146 inline GSocketError
GSocket_SetNonOriented(GSocket
*socket
)
147 { return socket
->SetNonOriented(); }
148 inline int GSocket_Read(GSocket
*socket
, char *buffer
, int size
)
149 { return socket
->Read(buffer
,size
); }
150 inline int GSocket_Write(GSocket
*socket
, const char *buffer
, int size
)
151 { return socket
->Write(buffer
,size
); }
152 inline GSocketEventFlags
GSocket_Select(GSocket
*socket
, GSocketEventFlags flags
)
153 { return socket
->Select(flags
); }
154 inline void GSocket_SetNonBlocking(GSocket
*socket
, int non_block
)
155 { socket
->SetNonBlocking(non_block
); }
156 inline void GSocket_SetTimeout(GSocket
*socket
, unsigned long millisec
)
157 { socket
->SetTimeout(millisec
); }
158 inline GSocketError
GSocket_GetError(GSocket
*socket
)
159 { return socket
->GetError(); }
160 inline void GSocket_SetCallback(GSocket
*socket
, GSocketEventFlags flags
,
161 GSocketCallback fallback
, char *cdata
)
162 { socket
->SetCallback(flags
,fallback
,cdata
); }
163 inline void GSocket_UnsetCallback(GSocket
*socket
, GSocketEventFlags flags
)
164 { socket
->UnsetCallback(flags
); }
165 inline GSocketError
GSocket_GetSockOpt(GSocket
*socket
, int level
, int optname
,
166 void *optval
, int *optlen
)
167 { return socket
->GetSockOpt(level
,optname
,optval
,optlen
); }
168 inline GSocketError
GSocket_SetSockOpt(GSocket
*socket
, int level
, int optname
,
169 const void *optval
, int optlen
)
170 { return socket
->SetSockOpt(level
,optname
,optval
,optlen
); }
171 inline void GSocket_destroy(GSocket
*socket
)
173 #endif /* def wxUSE_GSOCKET_CPLUSPLUS */
175 #if defined(__cplusplus) && !defined wxUSE_GSOCKET_CPLUSPLUS
183 /* Definition of GAddress */
186 struct sockaddr
*m_addr
;
189 GAddressType m_family
;
192 GSocketError m_error
;
195 #ifndef wxUSE_GSOCKET_CPLUSPLUS
198 GSocketError
_GSocket_Input_Timeout(GSocket
*socket
);
199 GSocketError
_GSocket_Output_Timeout(GSocket
*socket
);
200 GSocketError
_GSocket_Connect_Timeout(GSocket
*socket
);
201 int _GSocket_Recv_Stream(GSocket
*socket
, char *buffer
, int size
);
202 int _GSocket_Recv_Dgram(GSocket
*socket
, char *buffer
, int size
);
203 int _GSocket_Send_Stream(GSocket
*socket
, const char *buffer
, int size
);
204 int _GSocket_Send_Dgram(GSocket
*socket
, const char *buffer
, int size
);
208 int _GSocket_GUI_Init(void);
209 void _GSocket_GUI_Cleanup(void);
210 int _GSocket_GUI_Init_Socket(GSocket
*socket
);
211 void _GSocket_GUI_Destroy_Socket(GSocket
*socket
);
213 LRESULT CALLBACK
_GSocket_Internal_WinProc(HWND
, UINT
, WPARAM
, LPARAM
);
215 void _GSocket_Enable_Events(GSocket
*socket
);
216 void _GSocket_Disable_Events(GSocket
*socket
);
217 #endif /* ndef wxUSE_GSOCKET_CPLUSPLUS */
221 GSocketError
_GAddress_translate_from(GAddress
*address
,
222 struct sockaddr
*addr
, int len
);
223 GSocketError
_GAddress_translate_to (GAddress
*address
,
224 struct sockaddr
**addr
, int *len
);
225 GSocketError
_GAddress_Init_INET(GAddress
*address
);
226 GSocketError
_GAddress_Init_UNIX(GAddress
*address
);
232 #endif /* wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__) */
234 #endif /* __GSOCK_MSW_H */