123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #ifndef __AE_NON_BLOCKING_COMM_SOCKET_H
- #define __AE_NON_BLOCKING_COMM_SOCKET_H
- #include <UnixCommunicationSocket.h>
- #define MAX_EVENTS 12
- class NonBlockingUnixCommunicationSocket : public UnixCommunicationSocket
- {
- public:
- NonBlockingUnixCommunicationSocket(const char* socketbase) : UnixCommunicationSocket(socketbase), mEvents(NULL), mEpoll(-1) {}
- NonBlockingUnixCommunicationSocket(int socket) : UnixCommunicationSocket(socket), mEvents(NULL), mEpoll(-1) {}
- ~NonBlockingUnixCommunicationSocket();
- bool init();
- char* readRaw(ssize_t length);
- ssize_t writeRaw(const char* data, ssize_t length);
- int getSockDescriptor();
- bool wasTimeoutDetected();
- bool setTimeout(uint32_t milliseconds);
- void Cancel() const;
- protected:
- bool MakeNonBlocking();
- ssize_t partialRead(char* buffer, ssize_t maxLength);
-
- struct epoll_event *mEvents;
- int mEpoll;
- int mCommandPipe[2];
- private:
-
- NonBlockingUnixCommunicationSocket(const NonBlockingUnixCommunicationSocket&);
- NonBlockingUnixCommunicationSocket& operator=(const NonBlockingUnixCommunicationSocket&);
- };
- #endif
|