void Mac_Socket_Callback(CFSocketRef s, CFSocketCallBackType callbackType, CFDataRef address, const void* data, void* info) { GSocket* socket = (GSocket*)info; struct MacGSocketData* macdata; macdata = (struct MacGSocketData*)socket->m_gui_dependent; if (!macdata) return; switch (callbackType) { case kCFSocketConnectCallBack: assert(!socket->m_server); // KH: If data is non-NULL, the connect failed, do not call Detected_Write, // which will only end up creating a spurious connect event because the // call to getsocketopt SO_ERROR inexplicably returns no error. // The change in behavior cannot be traced to any particular commit or // timeframe so I'm not sure what to think, but after so many hours, // this seems to address the issue and it's time to move on. if (data == NULL) socket->Detected_Write(); break; case kCFSocketReadCallBack: socket->Detected_Read(); break; case kCFSocketWriteCallBack: socket->Detected_Write(); break; default: break; /* We shouldn't get here. */ } }
static void _GSocket_Motif_Input(XtPointer data, int *WXUNUSED(fid), XtInputId *WXUNUSED(id)) { GSocket *socket = (GSocket *)data; socket->Detected_Read(); }
static void _GSocket_GDK_Input(gpointer data, gint source, GdkInputCondition condition) { GSocket *socket = (GSocket *)data; if (condition & GDK_INPUT_READ) socket->Detected_Read(); if (condition & GDK_INPUT_WRITE) socket->Detected_Write(); }
void Mac_Socket_Callback(CFSocketRef s, CFSocketCallBackType callbackType, CFDataRef address, const void* data, void* info) { GSocket* socket = (GSocket*)info; struct MacGSocketData* macdata; macdata = (struct MacGSocketData*)socket->m_gui_dependent; if (!macdata) return; switch (callbackType) { case kCFSocketConnectCallBack: assert(!socket->m_server); socket->Detected_Write(); break; case kCFSocketReadCallBack: socket->Detected_Read(); break; case kCFSocketWriteCallBack: socket->Detected_Write(); break; default: break; /* We shouldn't get here. */ } }
static void _GSocket_X11_Input(int *fid, void* data) { GSocket *socket = (GSocket *)data; socket->Detected_Read(); }
static void _GSocket_PM_Input(void *data) { GSocket *socket = (GSocket *) data; socket->Detected_Read(); }