diff --git a/include/wx/gsocket.h b/include/wx/gsocket.h index 096cff1666..fce739e20e 100644 --- a/include/wx/gsocket.h +++ b/include/wx/gsocket.h @@ -3,19 +3,6 @@ * Name: gsocket.h * Purpose: GSocket include file (system independent) * CVSID: $Id$ - * Log: $Log$ - * Log: Revision 1.1 1999/07/22 17:51:47 GL - * Log: Added GSocket for Unix (only GTK for the moment) - * Log: Updated wxSocket to use GSocket API - * Log: Added a progress bar to client.cpp - * Log: Added CopyTo to wxMemoryOutputStream to copy the internal buffer to a specified buffer. - * Log: Various changes/fixes to the high-level protocols FTP/HTTP - * Log: Various Unicode fixes - * Log: Removed sckint.* - * Log: - * Log: Revision 1.2 1999/07/18 15:54:28 guilhem - * Log: Copyright, etc. - * Log: * ------------------------------------------------------------------------- */ #ifndef __GSOCKET_H diff --git a/include/wx/socket.h b/include/wx/socket.h index b2dcf6056a..1b23f7c075 100644 --- a/include/wx/socket.h +++ b/include/wx/socket.h @@ -39,7 +39,8 @@ class WXDLLEXPORT wxSocketBase : public wxEvtHandler DECLARE_CLASS(wxSocketBase) public: - enum wxSockFlags { NONE=0, NOWAIT=1, WAITALL=2, SPEED=4 }; + enum { NONE=0, NOWAIT=1, WAITALL=2, SPEED=4 }; + typedef int wxSockFlags; // Type of request enum wxSockType { SOCK_CLIENT, SOCK_SERVER, SOCK_INTERNAL, SOCK_UNINIT }; diff --git a/src/common/socket.cpp b/src/common/socket.cpp index 4e12e8971b..08af3c1959 100644 --- a/src/common/socket.cpp +++ b/src/common/socket.cpp @@ -83,7 +83,7 @@ wxSocketBase::wxSocketBase(wxSocketBase::wxSockFlags _flags, wxSocketBase::wxSocketBase() : wxEvtHandler(), - m_socket(NULL), m_flags((wxSockFlags)SPEED | WAITALL), m_type(SOCK_UNINIT), + m_socket(NULL), m_flags(SPEED | WAITALL), m_type(SOCK_UNINIT), m_neededreq(GSOCK_INPUT_FLAG | GSOCK_LOST_FLAG), m_lcount(0), m_timeout(3600), m_unread(NULL), m_unrd_size(0), m_unrd_cur(0), @@ -413,7 +413,7 @@ void wxSocketBase::Discard() size_t recv_size = MAX_BUFSIZE; SaveState(); - SetFlags((wxSockFlags)(NOWAIT | SPEED)); + SetFlags(NOWAIT | SPEED); while (recv_size == MAX_BUFSIZE) { diff --git a/src/gtk/gsockgtk.c b/src/gtk/gsockgtk.c index 85816cbddb..2750b73318 100644 --- a/src/gtk/gsockgtk.c +++ b/src/gtk/gsockgtk.c @@ -1,3 +1,10 @@ +/* ------------------------------------------------------------------------- + * Project: GSocket (Generic Socket) for WX + * Name: gsockgtk.c + * Purpose: GSocket: GTK part + * CVSID: $Id$ + * ------------------------------------------------------------------------- + */ #include #include #include diff --git a/src/gtk1/gsockgtk.c b/src/gtk1/gsockgtk.c index 85816cbddb..2750b73318 100644 --- a/src/gtk1/gsockgtk.c +++ b/src/gtk1/gsockgtk.c @@ -1,3 +1,10 @@ +/* ------------------------------------------------------------------------- + * Project: GSocket (Generic Socket) for WX + * Name: gsockgtk.c + * Purpose: GSocket: GTK part + * CVSID: $Id$ + * ------------------------------------------------------------------------- + */ #include #include #include diff --git a/src/motif/Makefile.am b/src/motif/Makefile.am index 1e501e5d2d..385230ebcf 100644 --- a/src/motif/Makefile.am +++ b/src/motif/Makefile.am @@ -31,6 +31,8 @@ libwx_motif_la_SOURCES = \ extended.c \ parser.c \ xmcombo.c \ + gsocket.c \ + gsockmot.cpp \ \ cmndata.cpp \ dynarray.cpp \ @@ -90,7 +92,6 @@ libwx_motif_la_SOURCES = \ resource.cpp \ sckaddr.cpp \ sckfile.cpp \ - sckint.cpp \ sckipc.cpp \ sckstrm.cpp \ serbase.cpp \ diff --git a/src/motif/gsockmot.cpp b/src/motif/gsockmot.cpp new file mode 100644 index 0000000000..fa5b3d8e99 --- /dev/null +++ b/src/motif/gsockmot.cpp @@ -0,0 +1,120 @@ +// ------------------------------------------------------------------------- +// Project: GSocket (Generic Socket) for WX +// Name: gsockmot.cpp +// Purpose: GSocket: Motif part +// CVSID: $Id$ +// Log: $Log$ +// Log: Revision 1.1 1999/07/23 17:24:24 GL +// Log: Added GSocket motif (it compiles but I didn't tested it) +// Log: Changed wxSockFlags type (switched to int) +// Log: +// ------------------------------------------------------------------------- +#include +#include +#include +#include +#include "../unix/gsockunx.h" + +#define wxAPP_CONTEXT ((XtAppContext)wxTheApp->GetAppContext()) + +static void _GSocket_Motif_Input(XtPointer data, int *fid, + XtInputId *id) +{ + GSocket *socket = (GSocket *)data; + + _GSocket_Detected_Read(socket); +} + +static void _GSocket_Motif_Output(XtPointer data, int *fid, + XtInputId *id) +{ + GSocket *socket = (GSocket *)data; + + _GSocket_Detected_Write(socket); +} + +void _GSocket_GUI_Init(GSocket *socket) +{ + int i; + int *m_id; + + socket->m_gui_dependent = (char *)malloc(sizeof(int)*3); + m_id = (int *)(socket->m_gui_dependent); + + for (i=0;i<3;i++) + m_id[i] = -1; +} + +void _GSocket_GUI_Destroy(GSocket *socket) +{ + int i; + int *m_id; + + m_id = (int *)(socket->m_gui_dependent); + + for (i=0;i<3;i++) + if (m_id[i] == -1) + XtRemoveInput(m_id[i]); + + free(socket->m_gui_dependent); +} + +void _GSocket_Install_Fallback(GSocket *socket, GSocketEvent event) +{ + int *m_id; + + m_id = (int *)(socket->m_gui_dependent); + + switch (event) { + case GSOCK_CONNECTION: + case GSOCK_LOST: + case GSOCK_INPUT: + if (m_id[0] != -1) + XtRemoveInput(m_id[0]); + m_id[0] = XtAppAddInput(wxAPP_CONTEXT, socket->m_fd, + (XtPointer *)XtInputReadMask, + (XtInputCallbackProc) _GSocket_Motif_Input, + (XtPointer) socket); + break; + case GSOCK_OUTPUT: + if (m_id[1] != -1) + XtRemoveInput(m_id[1]); + m_id[1] = XtAppAddInput(wxAPP_CONTEXT, socket->m_fd, + (XtPointer *)XtInputWriteMask, + (XtInputCallbackProc) _GSocket_Motif_Output, + (XtPointer) socket); + break; + default: return; + } +} + +void _GSocket_Uninstall_Fallback(GSocket *socket, GSocketEvent event) +{ + int c; + int *m_id; + + m_id = (int *)(socket->m_gui_dependent); + + switch (event) { + case GSOCK_CONNECTION: + case GSOCK_LOST: + case GSOCK_INPUT: c = 0; break; + case GSOCK_OUTPUT: c = 1; break; + break; + default: return; + } + + if (m_id[c] != -1) + XtRemoveInput(m_id[c]); + + m_id[c] = -1; +} + +unsigned long GSocket_GetEventID(GSocket *socket) +{ + return 0; +} + +void GSocket_DoEvent(unsigned long evt_id) +{ +} diff --git a/src/unix/gsocket.c b/src/unix/gsocket.c index 7d489ecdd0..f1af4f0c47 100644 --- a/src/unix/gsocket.c +++ b/src/unix/gsocket.c @@ -3,22 +3,6 @@ * Name: gsocket.c * Purpose: GSocket main Unix file * CVSID: $Id$ - * Log: $Log$ - * Log: Revision 1.2 1999/07/23 09:48:31 KB - * Log: Fixed stupid new bugs :-( - * Log: - * Log: Revision 1.1 1999/07/22 17:51:54 GL - * Log: Added GSocket for Unix (only GTK for the moment) - * Log: Updated wxSocket to use GSocket API - * Log: Added a progress bar to client.cpp - * Log: Added CopyTo to wxMemoryOutputStream to copy the internal buffer to a specified buffer. - * Log: Various changes/fixes to the high-level protocols FTP/HTTP - * Log: Various Unicode fixes - * Log: Removed sckint.* - * Log: - * Log: Revision 1.2 1999/07/18 15:52:34 guilhem - * Log: * Copyright, etc. - * Log: * ------------------------------------------------------------------------- */ @@ -89,11 +73,11 @@ void GSocket_destroy(GSocket *socket) { assert(socket != NULL); - _GSocket_GUI_Destroy(socket); - if (socket->m_fd != -1) GSocket_Shutdown(socket); + _GSocket_GUI_Destroy(socket); + if (socket->m_local) GAddress_destroy(socket->m_local); diff --git a/src/unix/gsockunx.h b/src/unix/gsockunx.h index 5294e6f84b..380a93b10f 100644 --- a/src/unix/gsockunx.h +++ b/src/unix/gsockunx.h @@ -1,3 +1,10 @@ +/* ------------------------------------------------------------------------- + * Project: GSocket (Generic Socket) for WX + * Name: gsockunx.h + * Purpose: GSocket Unix header + * CVSID: $Id$ + * ------------------------------------------------------------------------- + */ #ifndef __GSOCK_UNX_H #define __GSOCK_UNX_H