From f6e6cf4d9a3bd41d92d147c8ae3c0247a6ea0b2c Mon Sep 17 00:00:00 2001 From: David Brodsky Date: Tue, 24 Oct 2006 10:11:45 +0200 Subject: [PATCH] Add ready() method to Tairon::Net::Socket class. This method registers socket for reading in the polling system. The previous solution is bad becuase it causes lost of signals that were connected after the socket was registered and possibly notified about incoming data. --- src/net-core/socket.cpp | 9 +++++++-- src/net-core/socket.h | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/net-core/socket.cpp b/src/net-core/socket.cpp index 5abe671..afbbc31 100644 --- a/src/net-core/socket.cpp +++ b/src/net-core/socket.cpp @@ -52,8 +52,6 @@ Socket::Socket(int sd) : fd(sd) notifier->setReadyReadFunctor(Tairon::Core::methodFunctor(this, &Socket::readyRead)); notifier->setReadyWriteFunctor(Tairon::Core::methodFunctor(this, &Socket::readyWrite)); - - Poll::self()->registerSocketToRead(fd, notifier); } /* }}} */ @@ -197,6 +195,13 @@ size_t Socket::readTo(void *buf, size_t length) } /* }}} */ +/* {{{ Socket::ready() */ +void Socket::ready() +{ + Poll::self()->registerSocketToRead(fd, notifier); +} +/* }}} */ + /* {{{ Socket::readyWrite() */ void Socket::readyWrite() { diff --git a/src/net-core/socket.h b/src/net-core/socket.h index 7473e55..68def3e 100644 --- a/src/net-core/socket.h +++ b/src/net-core/socket.h @@ -108,6 +108,10 @@ class Socket */ size_t readTo(void *buf, size_t length); + /** Tells this socket that all setup has been done. + */ + void ready(); + /** Writes data to the socket and returns the number of characters * written to the socket. * -- 2.11.4.GIT