void CExternalIPResolver::OnSocketEvent(CSocketEvent& event) { if (!m_pSocket) return; switch (event.GetType()) { case CSocketEvent::read: OnReceive(); break; case CSocketEvent::connection: OnConnect(event.GetError()); break; case CSocketEvent::close: OnClose(); break; case CSocketEvent::write: OnSend(); break; default: break; } }
void CTlsSocket::OnSocketEvent(CSocketEvent& event) { wxASSERT(m_pSocket); if (!m_session) return; switch (event.GetType()) { case CSocketEvent::read: OnRead(); break; case CSocketEvent::write: OnSend(); break; case CSocketEvent::close: { m_canCheckCloseSocket = true; char tmp[100]; int error; int peeked = m_pSocketBackend->Peek(&tmp, 100, error); if (peeked >= 0) { if (peeked > 0) m_pOwner->LogMessage(Debug_Verbose, _T("CTlsSocket::OnSocketEvent(): pending data, postponing close event")); else { m_socket_eof = true; m_socketClosed = true; } OnRead(); if (peeked) return; } m_pOwner->LogMessage(Debug_Info, _T("CTlsSocket::OnSocketEvent(): close event received")); //Uninit(); CSocketEvent *evt = new CSocketEvent(m_pEvtHandler, this, CSocketEvent::close); CSocketEventDispatcher::Get().SendEvent(evt); } break; default: break; } }
void CRealControlSocket::OnSocketEvent(CSocketEvent &event) { if (!m_pBackend) return; switch (event.GetType()) { case CSocketEvent::hostaddress: { const wxString& address = event.GetData(); LogMessage(MessageType::Status, _("Connecting to %s..."), address); } break; case CSocketEvent::connection_next: if (event.GetError()) LogMessage(MessageType::Status, _("Connection attempt failed with \"%s\", trying next address."), CSocket::GetErrorDescription(event.GetError())); break; case CSocketEvent::connection: if (event.GetError()) { LogMessage(MessageType::Status, _("Connection attempt failed with \"%s\"."), CSocket::GetErrorDescription(event.GetError())); OnClose(event.GetError()); } else { if (m_pProxyBackend && !m_pProxyBackend->Detached()) { m_pProxyBackend->Detach(); m_pBackend = new CSocketBackend(this, m_pSocket); } OnConnect(); } break; case CSocketEvent::read: OnReceive(); break; case CSocketEvent::write: OnSend(); break; case CSocketEvent::close: OnClose(event.GetError()); break; default: LogMessage(MessageType::Debug_Warning, _T("Unhandled socket event %d"), event.GetType()); break; } }
void CTransferSocket::OnSocketEvent(CSocketEvent &event) { if (m_pProxyBackend) { switch (event.GetType()) { case CSocketEvent::connection: { const int error = event.GetError(); if (error) { m_pControlSocket->LogMessage(::Error, _("Proxy handshake failed: %s"), CSocket::GetErrorDescription(error).c_str()); TransferEnd(failure); } else { delete m_pProxyBackend; m_pProxyBackend = 0; OnConnect(); } } return; case CSocketEvent::close: { const int error = event.GetError(); m_pControlSocket->LogMessage(::Error, _("Proxy handshake failed: %s"), CSocket::GetErrorDescription(error).c_str()); TransferEnd(failure); } return; default: // Uninteresting return; } return; } if (m_pSocketServer) { if (event.GetType() == CSocketEvent::connection) OnAccept(event.GetError()); else m_pControlSocket->LogMessage(::Debug_Info, _T("Unhandled socket event %d from listening socket"), event.GetType()); return; } switch (event.GetType()) { case CSocketEvent::connection: OnConnect(); break; case CSocketEvent::read: OnReceive(); break; case CSocketEvent::write: OnSend(); break; case CSocketEvent::close: OnClose(event.GetError()); break; case CSocketEvent::hostaddress: // Booooring. No seriously, we connect by IP already, nothing to resolve break; default: m_pControlSocket->LogMessage(::Debug_Info, _T("Unhandled socket event %d"), event.GetType()); break; } }