#ifndef __socket_h #define __socket_h #include #include #include #include #include #include #include #include #include #include #include class eSocket: public Object { int mystate; int issocket; unsigned int last_break; private: int socketdesc; eIOBuffer readbuffer; eIOBuffer writebuffer; int writebusy; sockaddr_in serv_addr; protected: eSocketNotifier *rsn; virtual void notifier(int); public: eSocket(eMainloop *ml); eSocket(int socket, int issocket, eMainloop *ml); ~eSocket(); int connectToHost(eString hostname, int port); int getDescriptor(); int writeBlock(const char *data, unsigned int len); int setSocket(int socketfd, int issocket, eMainloop *ml); int bytesToWrite(); int readBlock(char *data, unsigned int maxlen); int bytesAvailable(); bool canReadLine(); eString readLine(); void close(); // flow control: start/stop data delivery into read buffer. void enableRead(); void disableRead(); void inject(const char *data, int len); enum State { Idle, HostLookup, Connecting, Listening, Connection, Closing }; int state(); Signal0 connectionClosed_; Signal0 connected_; Signal0 readyRead_; Signal0 hangup; Signal1 bytesWritten_; Signal1 error_; }; #endif /* __socket_h */