/* +------------------------------------+ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * * Inspire is copyright (C) 2002-2004 ChatSpike-Dev. * E-mail: * * * * Written by Craig Edwards, Craig McLure, and others. * This program is free but copyrighted software; see * the file COPYING for details. * * --------------------------------------------------- */ #ifndef __INSP_SOCKET_H__ #define __INSP_SOCKET_H__ #include #include #include #include #include #include enum InspSocketState { I_DISCONNECTED, I_CONNECTING, I_CONNECTED, I_LISTENING, I_ERROR }; enum InspSocketError { I_ERR_TIMEOUT, I_ERR_SOCKET, I_ERR_CONNECT, I_ERR_BIND }; class InspSocket { private: int fd; std::string host; int port; InspSocketState state; sockaddr_in addr; in_addr addy; time_t timeout_end; bool timeout; pollfd polls; char ibuf[16384]; std::string IP; sockaddr_in client; sockaddr_in server; socklen_t length; public: InspSocket(); InspSocket(int newfd, char* ip); InspSocket(std::string host, int port, bool listening, unsigned long maxtime); virtual bool OnConnected(); virtual void OnError(InspSocketError e); virtual int OnDisconnect(); virtual bool OnDataReady(); virtual void OnTimeout(); virtual void OnClose(); virtual char* Read(); std::string GetIP(); virtual int Write(std::string data); virtual int OnIncomingConnection(int newfd, char* ip); void SetState(InspSocketState s); InspSocketState GetState(); bool Poll(); int GetFd(); virtual void Close(); virtual ~InspSocket(); }; #endif