#include "wx/sckaddr.h"
#include "wx/socket.h"
-// GRG: Why is this needed?
-#ifdef __WXGTK__
-#include <gtk/gtk.h>
-#define wxYield() gtk_main_iteration()
-#endif
+#if defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMOTIF__) || defined(__WXMAC__)
+ #define PROCESS_EVENTS() wxYield()
+#elif defined(__WXGTK__)
+ #include <gtk/gtk.h>
+ #define PROCESS_EVENTS() gtk_main_iteration()
+#endif
+
// --------------------------------------------------------------
// ClassInfos
public:
bool notify_state;
GSocketEventFlags evt_notify_state;
- wxSocketBase::wxSockFlags socket_flags;
+ wxSockFlags socket_flags;
wxSocketBase::wxSockCbk c_callback;
char *c_callback_data;
// wxSocketBase ctor and dtor
// --------------------------------------------------------------
-wxSocketBase::wxSocketBase(wxSocketBase::wxSockFlags _flags,
- wxSocketBase::wxSockType _type) :
+wxSocketBase::wxSocketBase(wxSockFlags _flags, wxSockType _type) :
wxEvtHandler(),
m_socket(NULL), m_id(-1),
m_flags(_flags), m_type(_type),
DoDefer();
}
- // Wait for buffer completion.
+ // Wait for buffer completion.
while (m_defer_buffer != NULL)
- wxYield();
+ PROCESS_EVENTS();
timer.Stop();
// If the socket is not connected, or we have got the whole
// needed buffer, return immedately
- if (!m_connected || !m_socket || !nbytes)
+ if (!m_connected || !m_socket || !nbytes)
return total;
// Possible combinations (they are checked in this order)
// NOWAIT
// SPEED | WAITALL
- // SPEED
+ // SPEED
// WAITALL
// NONE
//
if (sig != 0xfeeddead)
{
- wxLogMessage(_T("Warning: invalid signature returned to ReadMsg"));
+ wxLogMessage(wxT("Warning: invalid signature returned to ReadMsg"));
goto exit;
}
if (sig != 0xdeadfeed)
{
- //wxLogMessage(_T("Warning: invalid signature returned to ReadMsg"));
+ //wxLogMessage(wxT("Warning: invalid signature returned to ReadMsg"));
goto exit;
}
DoDefer();
}
- // Wait for buffer completion.
+ // Wait for buffer completion.
while (m_defer_buffer != NULL)
- wxYield();
+ PROCESS_EVENTS();
timer.Stop();
m_defering = NO_DEFER;
wxString s;
- s.Printf("Saliendo de DeferWrite: total %d bytes", nbytes-m_defer_nbytes);
+ s.Printf(wxT("Saliendo de DeferWrite: total %d bytes"), nbytes-m_defer_nbytes);
//wxLogMessage(s);
return nbytes-m_defer_nbytes;
// Possible combinations (they are checked in this order)
// NOWAIT
// SPEED | WAITALL
- // SPEED
+ // SPEED
// WAITALL
// NONE
//
// TODO: TriggerRead
return *this;
-
+
#undef MAX_BUFSIZE
}
// they poll the socket, using GSocket_Select(), to check for
// the specified combination of event flags, until an event
// occurs or until the timeout ellapses. The polling loop
-// calls wxYield(), so this won't block the GUI.
+// calls PROCESS_EVENTS(), so this won't block the GUI.
bool wxSocketBase::_Wait(long seconds, long milliseconds, wxSocketEventFlags flags)
{
}
if (timeout != 0)
- wxYield();
+ PROCESS_EVENTS();
}
while ((state == -1) && timeout);
{
m_flags = _flags;
}
-
+
// --------------------------------------------------------------
// wxSocketBase callback management
// --------------------------------------------------------------