29#define DISABLE_DEBUGLOG
33#include "syncio_socket_p.h"
36#include <gwenhywfar/misc.h>
37#include <gwenhywfar/debug.h>
38#include <gwenhywfar/gui.h>
39#include <gwenhywfar/text.h>
46#define GWEN_SYNCIO_SOCKET_READ_TIMEOUT 60000
47#define GWEN_SYNCIO_SOCKET_WRITE_TIMEOUT 60000
57 GWEN_SYNCIO_SOCKET *xio;
68 xio->socketType=sockType;
69 xio->addressFamily=addressFamily;
79 GWEN_SYNCIO_SOCKET *xio;
101 GWEN_SYNCIO_SOCKET *xio;
103 xio=(GWEN_SYNCIO_SOCKET *) p;
113 GWEN_SYNCIO_SOCKET *xio;
126 GWEN_SYNCIO_SOCKET *xio;
134 xio->address=strdup(s);
143 GWEN_SYNCIO_SOCKET *xio;
156 GWEN_SYNCIO_SOCKET *xio;
169 GWEN_SYNCIO_SOCKET *xio;
194 I18N(
"Error setting up socket: %d"),
205 I18N(
"Resolving hostname \"%s\" ..."),
211 I18N(
"Unknown hostname \"%s\""),
221 addrBuf[
sizeof(addrBuf)-1]=0;
228 I18N(
"IP address is \"%s\""),
237 I18N(
"Connecting to \"%s\""),
244 I18N(
"Error connecting to \"%s\": %s"),
257 I18N(
"Connected to \"%s\""),
266 GWEN_SYNCIO_SOCKET *xio;
289 GWEN_SYNCIO_SOCKET *xio;
309 if (xio->socket==
NULL) {
364 const uint8_t *buffer,
367 GWEN_SYNCIO_SOCKET *xio;
381 if (xio->socket==
NULL) {
#define DBG_INFO(dbg_logger, format,...)
#define DBG_ERROR(dbg_logger, format,...)
#define GWEN_ERROR_INTERNAL
#define GWEN_ERROR_TIMEOUT
#define GWEN_ERROR_INVALID
#define GWEN_ERROR_NOT_CONNECTED
#define GWEN_ERROR_INTERRUPTED
GWENHYWFAR_API void GWEN_Socket_free(GWEN_SOCKET *sp)
GWENHYWFAR_API int GWEN_Socket_Close(GWEN_SOCKET *sp)
GWENHYWFAR_API int GWEN_Socket_Open(GWEN_SOCKET *sp)
GWENHYWFAR_API GWEN_SOCKET * GWEN_Socket_new(GWEN_SOCKETTYPE socketType)
GWENHYWFAR_API int GWEN_Socket_Read(GWEN_SOCKET *sp, char *buffer, int *bsize)
GWENHYWFAR_API GWEN_SOCKETTYPE GWEN_Socket_GetSocketType(GWEN_SOCKET *sp)
GWENHYWFAR_API int GWEN_Socket_Connect(GWEN_SOCKET *sp, const GWEN_INETADDRESS *addr)
GWENHYWFAR_API int GWEN_Socket_WaitForRead(GWEN_SOCKET *sp, int timeout)
GWENHYWFAR_API int GWEN_Socket_WaitForWrite(GWEN_SOCKET *sp, int timeout)
GWENHYWFAR_API int GWEN_Socket_Write(GWEN_SOCKET *sp, const char *buffer, int *bsize)
GWENHYWFAR_API int GWEN_Gui_WaitForSockets(GWEN_SOCKET_LIST2 *readSockets, GWEN_SOCKET_LIST2 *writeSockets, uint32_t guiid, int msecs)
GWENHYWFAR_API int GWEN_Gui_ProgressLog2(uint32_t id, GWEN_LOGGER_LEVEL level, const char *text,...)
GWENHYWFAR_API void GWEN_InetAddr_free(GWEN_INETADDRESS *ia)
struct GWEN_INETADDRESSSTRUCT GWEN_INETADDRESS
GWENHYWFAR_API int GWEN_InetAddr_GetAddress(const GWEN_INETADDRESS *ia, char *buffer, unsigned int bsize)
GWENHYWFAR_API int GWEN_InetAddr_SetPort(GWEN_INETADDRESS *ia, int port)
GWENHYWFAR_API GWEN_INETADDRESS * GWEN_InetAddr_new(GWEN_AddressFamily af)
GWENHYWFAR_API int GWEN_InetAddr_SetAddress(GWEN_INETADDRESS *ia, const char *addr)
GWENHYWFAR_API int GWEN_InetAddr_SetName(GWEN_INETADDRESS *ia, const char *name)
struct GWEN_SOCKET GWEN_SOCKET
#define GWEN_INHERIT_SETDATA(bt, t, element, data, fn)
#define GWEN_INHERIT(bt, t)
#define GWEN_INHERIT_GETDATA(bt, t, element)
struct GWEN_SOCKET_LIST2 GWEN_SOCKET_LIST2
void GWEN_Socket_List2_free(GWEN_SOCKET_LIST2 *l)
GWEN_SOCKET_LIST2 * GWEN_Socket_List2_new()
void GWEN_Socket_List2_PushBack(GWEN_SOCKET_LIST2 *l, GWEN_SOCKET *p)
#define GWEN_FREE_OBJECT(varname)
#define GWEN_NEW_OBJECT(typ, varname)
uint32_t GWEN_SyncIo_GetFlags(const GWEN_SYNCIO *sio)
GWEN_SYNCIO * GWEN_SyncIo_new(const char *typeName, GWEN_SYNCIO *baseIo)
GWEN_SYNCIO_READ_FN GWEN_SyncIo_SetReadFn(GWEN_SYNCIO *sio, GWEN_SYNCIO_READ_FN fn)
GWEN_SYNCIO_DISCONNECT_FN GWEN_SyncIo_SetDisconnectFn(GWEN_SYNCIO *sio, GWEN_SYNCIO_DISCONNECT_FN fn)
GWEN_SYNCIO_WRITE_FN GWEN_SyncIo_SetWriteFn(GWEN_SYNCIO *sio, GWEN_SYNCIO_WRITE_FN fn)
GWEN_SYNCIO_STATUS GWEN_SyncIo_GetStatus(const GWEN_SYNCIO *sio)
GWEN_SYNCIO_CONNECT_FN GWEN_SyncIo_SetConnectFn(GWEN_SYNCIO *sio, GWEN_SYNCIO_CONNECT_FN fn)
void GWEN_SyncIo_SetStatus(GWEN_SYNCIO *sio, GWEN_SYNCIO_STATUS st)
#define GWEN_SYNCIO_FLAGS_PASSIVE
struct GWEN_SYNCIO GWEN_SYNCIO
@ GWEN_SyncIo_Status_Connected
@ GWEN_SyncIo_Status_Disconnected
GWEN_SYNCIO * GWEN_SyncIo_Socket_TakeOver(GWEN_SOCKET *socket)
const char * GWEN_SyncIo_Socket_GetAddress(const GWEN_SYNCIO *sio)
void GWEN_SyncIo_Socket_SetPort(GWEN_SYNCIO *sio, int i)
void GWENHYWFAR_CB GWEN_SyncIo_Socket_FreeData(GWEN_UNUSED void *bp, void *p)
GWEN_SYNCIO * GWEN_SyncIo_Socket_new(GWEN_SOCKETTYPE sockType, GWEN_AddressFamily addressFamily)
int GWENHYWFAR_CB GWEN_SyncIo_Socket_Disconnect(GWEN_SYNCIO *sio)
int GWENHYWFAR_CB GWEN_SyncIo_Socket_Write(GWEN_SYNCIO *sio, const uint8_t *buffer, uint32_t size)
#define GWEN_SYNCIO_SOCKET_READ_TIMEOUT
#define GWEN_SYNCIO_SOCKET_WRITE_TIMEOUT
void GWEN_SyncIo_Socket_SetAddress(GWEN_SYNCIO *sio, const char *s)
int GWENHYWFAR_CB GWEN_SyncIo_Socket_Read(GWEN_SYNCIO *sio, uint8_t *buffer, uint32_t size)
int GWENHYWFAR_CB GWEN_SyncIo_Socket_Connect(GWEN_SYNCIO *sio)
int GWEN_SyncIo_Socket_GetPort(const GWEN_SYNCIO *sio)
#define GWEN_SYNCIO_SOCKET_TYPE
void GWEN_Text_DumpString(const char *s, unsigned int l, unsigned int insert)