diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-09-13 16:32:47 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-09-13 16:32:47 +0000 |
| commit | 495f02ebbceaf72c125d809f6ce38004b6dd580a (patch) | |
| tree | eb0fb6ddc1121aded8c92a49359c7f231ca0b90e /src/HttpConnection.cc | |
| parent | 281319e8cd3ca184dc3868c3d4740c24ab2607a4 (diff) | |
2008-09-14 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Use non-blocking socket for TCP communication to avoid possible
blocking due to buffer full.
* src/AbstractProxyRequestCommand.cc
* src/FtpConnection.cc
* src/FtpConnection.h
* src/FtpNegotiationCommand.cc
* src/FtpNegotiationCommand.h
* src/HttpConnection.cc
* src/HttpConnection.h
* src/HttpRequestCommand.cc
* src/InitiatorMSEHandshakeCommand.cc
* src/InitiatorMSEHandshakeCommand.h
* src/MSEHandshake.cc
* src/MSEHandshake.h
* src/Makefile.am
* src/PeerConnection.cc
* src/PeerConnection.h
* src/PeerInteractionCommand.cc
* src/PeerListenCommand.cc
* src/ReceiverMSEHandshakeCommand.cc
* src/ReceiverMSEHandshakeCommand.h
* src/SocketBuffer.cc
* src/SocketBuffer.h
* src/SocketCore.cc
* src/SocketCore.h
Diffstat (limited to 'src/HttpConnection.cc')
| -rw-r--r-- | src/HttpConnection.cc | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/HttpConnection.cc b/src/HttpConnection.cc index b37a6092..3ed6be78 100644 --- a/src/HttpConnection.cc +++ b/src/HttpConnection.cc @@ -72,7 +72,9 @@ HttpHeaderProcessorHandle HttpRequestEntry::getHttpHeaderProcessor() const HttpConnection::HttpConnection(int32_t cuid, const SocketHandle& socket, const Option* op): - cuid(cuid), socket(socket), option(op), logger(LogFactory::getInstance()) + cuid(cuid), socket(socket), + _socketBuffer(socket), + option(op), logger(LogFactory::getInstance()) {} std::string HttpConnection::eraseConfidentialInfo(const std::string& request) @@ -98,7 +100,7 @@ void HttpConnection::sendRequest(const HttpRequestHandle& httpRequest) { std::string request = httpRequest->createRequest(); logger->info(MSG_SENDING_REQUEST, cuid, eraseConfidentialInfo(request).c_str()); - socket->writeData(request.c_str(), request.size()); + _socketBuffer.feedAndSend(request); SharedHandle<HttpRequestEntry> entry(new HttpRequestEntry(httpRequest)); outstandingHttpRequests.push_back(entry); } @@ -107,7 +109,7 @@ void HttpConnection::sendProxyRequest(const HttpRequestHandle& httpRequest) { std::string request = httpRequest->createProxyRequest(); logger->info(MSG_SENDING_REQUEST, cuid, eraseConfidentialInfo(request).c_str()); - socket->writeData(request.c_str(), request.size()); + _socketBuffer.feedAndSend(request); SharedHandle<HttpRequestEntry> entry(new HttpRequestEntry(httpRequest)); outstandingHttpRequests.push_back(entry); } @@ -179,4 +181,14 @@ SharedHandle<HttpRequest> HttpConnection::getFirstHttpRequest() const } } +bool HttpConnection::sendBufferIsEmpty() const +{ + return _socketBuffer.sendBufferIsEmpty(); +} + +void HttpConnection::sendPendingData() +{ + _socketBuffer.send(); +} + } // namespace aria2 |
