Removed unnecessary lines from threadpsx

Renamed GSOCK_TRYAGAIN to GSOCK_WOULDBLOCK
Added GSOCK_TIMEOUT
Enabled the replacement code for timeout handling in gsocket.c
Renamed some var in gsockunx & gsocket


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3327 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Guilhem Lavaux
1999-08-09 17:35:30 +00:00
parent 4b6f0b91ff
commit 98781fa30e
4 changed files with 26 additions and 45 deletions

View File

@@ -12,6 +12,7 @@
#if wxUSE_SOCKETS #if wxUSE_SOCKETS
#include <stddef.h>
#include <sys/types.h> #include <sys/types.h>
#if !defined(__cplusplus) #if !defined(__cplusplus)
@@ -49,7 +50,8 @@ typedef enum {
GSOCK_INVSOCK, GSOCK_INVSOCK,
GSOCK_NOHOST, GSOCK_NOHOST,
GSOCK_INVPORT, GSOCK_INVPORT,
GSOCK_TRYAGAIN, GSOCK_WOULDBLOCK,
GSOCK_TIMEOUT,
GSOCK_MEMERR GSOCK_MEMERR
} GSocketError; } GSocketError;

View File

@@ -90,7 +90,7 @@ GSocket *GSocket_new()
socket->m_fd = -1; socket->m_fd = -1;
for (i=0;i<GSOCK_MAX_EVENT;i++) { for (i=0;i<GSOCK_MAX_EVENT;i++) {
socket->m_fbacks[i] = NULL; socket->m_cbacks[i] = NULL;
socket->m_iocalls[i] = FALSE; socket->m_iocalls[i] = FALSE;
} }
socket->m_local = NULL; socket->m_local = NULL;
@@ -551,7 +551,7 @@ GSocketError GSocket_GetError(GSocket *socket)
/* Callbacks */ /* Callbacks */
/* /*
Only one fallback is possible for each event (INPUT, OUTPUT, CONNECTION) Only one callback is possible for each event (INPUT, OUTPUT, CONNECTION)
INPUT: The function is called when there is at least a byte in the INPUT: The function is called when there is at least a byte in the
input buffer input buffer
OUTPUT: The function is called when the system is sure the next write call OUTPUT: The function is called when the system is sure the next write call
@@ -570,7 +570,7 @@ GSocketError GSocket_GetError(GSocket *socket)
CONNECTION -> GSocket_Accept() CONNECTION -> GSocket_Accept()
*/ */
void GSocket_SetCallback(GSocket *socket, GSocketEventFlags event, void GSocket_SetCallback(GSocket *socket, GSocketEventFlags event,
GSocketCallback fallback, char *cdata) GSocketCallback callback, char *cdata)
{ {
int count; int count;
@@ -580,7 +580,7 @@ void GSocket_SetCallback(GSocket *socket, GSocketEventFlags event,
/* We test each flag and, if it is enabled, we enable the corresponding /* We test each flag and, if it is enabled, we enable the corresponding
event */ event */
if ((event & (1 << count)) != 0) { if ((event & (1 << count)) != 0) {
socket->m_fbacks[count] = fallback; socket->m_cbacks[count] = callback;
socket->m_data[count] = cdata; socket->m_data[count] = cdata;
_GSocket_Enable(socket, count); _GSocket_Enable(socket, count);
} }
@@ -588,7 +588,7 @@ void GSocket_SetCallback(GSocket *socket, GSocketEventFlags event,
} }
/* /*
UnsetCallback will disables all fallbacks specified by "event". UnsetCallback will disables all callbacks specified by "event".
NOTE: event may be a combination of flags NOTE: event may be a combination of flags
*/ */
void GSocket_UnsetCallback(GSocket *socket, GSocketEventFlags event) void GSocket_UnsetCallback(GSocket *socket, GSocketEventFlags event)
@@ -600,16 +600,16 @@ void GSocket_UnsetCallback(GSocket *socket, GSocketEventFlags event)
for (count=0;count<GSOCK_MAX_EVENT;count++) { for (count=0;count<GSOCK_MAX_EVENT;count++) {
if ((event & (1 << count)) != 0) { if ((event & (1 << count)) != 0) {
_GSocket_Disable(socket, count); _GSocket_Disable(socket, count);
socket->m_fbacks[count] = NULL; socket->m_cbacks[count] = NULL;
} }
} }
} }
#define CALL_FALLBACK(socket, event) \ #define CALL_FALLBACK(socket, event) \
if (socket->m_iocalls[event] && \ if (socket->m_iocalls[event] && \
socket->m_fbacks[event]) {\ socket->m_cbacks[event]) {\
_GSocket_Disable(socket, event); \ _GSocket_Disable(socket, event); \
socket->m_fbacks[event](socket, event, \ socket->m_cbacks[event](socket, event, \
socket->m_data[event]); \ socket->m_data[event]); \
} }
@@ -623,48 +623,36 @@ if (socket->m_iocalls[event] && \
signal(SIGPIPE, old_handler); \ signal(SIGPIPE, old_handler); \
} }
#if 0
#ifndef CAN_USE_TIMEOUT
#define ENABLE_TIMEOUT(socket) \ #define ENABLE_TIMEOUT(socket) \
{ \ { \
struct itimerval old_ival, new_ival; \ struct itimerval old_ival, new_ival; \
void (*old_timer_sig)(int); \ void (*old_timer_sig)(int); \
\ \
new_ival.it_interval.tv_sec = socket->m_timeout / 1000; \ old_timer_sig = signal(SIGALRM, SIG_DFL); \
new_ival.it_interval.tv_usec = (socket->m_timeout % 1000) * 1000; \ siginterrupt(SIGALRM, 1); \
setitimer(ITIMER_REAL, &new_ival, &old_ival); \ new_ival.it_value.tv_sec = socket->m_timeout / 1000; \
old_timer_sig = signal(SIGALRM, SIG_DFL); new_ival.it_value.tv_usec = (socket->m_timeout % 1000) * 1000; \
new_ival.it_interval.tv_sec = 0; \
new_ival.it_interval.tv_usec = 0; \
setitimer(ITIMER_REAL, &new_ival, &old_ival);
#define DISABLE_TIMEOUT(socket) \ #define DISABLE_TIMEOUT(socket) \
signal(SIGALRM, old_timer_sig); \ signal(SIGALRM, old_timer_sig); \
siginterrupt(SIGALRM, 0); \
setitimer(ITIMER_REAL, &old_ival, NULL); \ setitimer(ITIMER_REAL, &old_ival, NULL); \
} }
#else
#define ENABLE_TIMEOUT(s)
#define DISABLE_TIMEOUT(s)
#endif
#endif
/* Temporary */
#define ENABLE_TIMEOUT(s)
#define DISABLE_TIMEOUT(s)
void _GSocket_Enable(GSocket *socket, GSocketEvent event) void _GSocket_Enable(GSocket *socket, GSocketEvent event)
{ {
socket->m_iocalls[event] = TRUE; socket->m_iocalls[event] = TRUE;
if (socket->m_fbacks[event]) if (socket->m_cbacks[event])
_GSocket_Install_Callback(socket, event); _GSocket_Install_Callback(socket, event);
} }
void _GSocket_Disable(GSocket *socket, GSocketEvent event) void _GSocket_Disable(GSocket *socket, GSocketEvent event)
{ {
socket->m_iocalls[event] = FALSE; socket->m_iocalls[event] = FALSE;
if (socket->m_fbacks[event]) if (socket->m_cbacks[event])
_GSocket_Uninstall_Callback(socket, event); _GSocket_Uninstall_Callback(socket, event);
} }
@@ -683,7 +671,7 @@ int _GSocket_Recv_Stream(GSocket *socket, char *buffer, int size)
return -1; return -1;
} }
if (errno == EWOULDBLOCK) { if (errno == EWOULDBLOCK) {
socket->m_error = GSOCK_TRYAGAIN; socket->m_error = GSOCK_WOULDBLOCK;
return -1; return -1;
} }
return ret; return ret;
@@ -707,7 +695,7 @@ int _GSocket_Recv_Dgram(GSocket *socket, char *buffer, int size)
return -1; return -1;
} }
if (errno == EWOULDBLOCK) { if (errno == EWOULDBLOCK) {
socket->m_error = GSOCK_TRYAGAIN; socket->m_error = GSOCK_WOULDBLOCK;
return -1; return -1;
} }
@@ -739,7 +727,7 @@ int _GSocket_Send_Stream(GSocket *socket, const char *buffer, int size)
return -1; return -1;
} }
if (errno == EWOULDBLOCK) { if (errno == EWOULDBLOCK) {
socket->m_error = GSOCK_TRYAGAIN; socket->m_error = GSOCK_WOULDBLOCK;
return -1; return -1;
} }
return ret; return ret;
@@ -773,7 +761,7 @@ int _GSocket_Send_Dgram(GSocket *socket, const char *buffer, int size)
return -1; return -1;
} }
if (errno == EWOULDBLOCK) { if (errno == EWOULDBLOCK) {
socket->m_error = GSOCK_TRYAGAIN; socket->m_error = GSOCK_WOULDBLOCK;
return -1; return -1;
} }

View File

@@ -29,7 +29,7 @@ struct _GSocket {
unsigned long m_timeout; unsigned long m_timeout;
/* Callbacks */ /* Callbacks */
GSocketCallback m_fbacks[GSOCK_MAX_EVENT]; GSocketCallback m_cbacks[GSOCK_MAX_EVENT];
char *m_data[GSOCK_MAX_EVENT]; char *m_data[GSOCK_MAX_EVENT];
/* IO calls associated */ /* IO calls associated */

View File

@@ -102,16 +102,7 @@ wxMutex::wxMutex()
{ {
p_internal = new wxMutexInternal; p_internal = new wxMutexInternal;
#if 0
/* I don't know where this function is supposed to exist,
and NP actually means non-portable, RR. */
pthread_mutexattr_t attr_type;
pthread_mutexattr_settype( &attr_type, PTHREAD_MUTEX_FAST_NP );
pthread_mutex_init( &(p_internal->p_mutex), (const pthread_mutexattr_t*) &attr_type );
#else
pthread_mutex_init( &(p_internal->p_mutex), (const pthread_mutexattr_t*) NULL ); pthread_mutex_init( &(p_internal->p_mutex), (const pthread_mutexattr_t*) NULL );
#endif
m_locked = 0; m_locked = 0;
} }