/* +------------------------------------+ * | 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. * * --------------------------------------------------- */ #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 }; 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[1024]; public: InspSocket(); 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(); virtual int Write(std::string data); virtual int OnIncomingConnection(); void SetState(InspSocketState s); bool Poll(); virtual void Close(); virtual ~InspSocket(); };