+ SocketThread* parent;
+ int send_fd;
+ public:
+ ThreadSignalSocket(SocketThread* p, int recvfd, int sendfd) :
+ parent(p), send_fd(sendfd)
+ {
+ SetFd(recvfd);
+ SocketEngine::NonBlocking(fd);
+ SocketEngine::AddFd(this, FD_WANT_FAST_READ | FD_WANT_NO_WRITE);
+ }
+
+ ~ThreadSignalSocket()
+ {
+ close(send_fd);
+ SocketEngine::Close(this);
+ }
+
+ void Notify()
+ {
+ static const char dummy = '*';
+ write(send_fd, &dummy, 1);
+ }