summaryrefslogtreecommitdiff
path: root/src/HttpServerResponseCommand.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-03-20 21:42:09 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-03-20 21:42:09 +0900
commitf4e2c7f0603fdb0609bf163ee5ea683a44b98d69 (patch)
tree18227134780ec9417ecc7b24969f35725a377e04 /src/HttpServerResponseCommand.cc
parentf16511012e28d1303e300e695b310d01b6200c2c (diff)
Added JSON-RPC over WebSocket.
Wslay library must be placed under deps/wslay.
Diffstat (limited to 'src/HttpServerResponseCommand.cc')
-rw-r--r--src/HttpServerResponseCommand.cc57
1 files changed, 11 insertions, 46 deletions
diff --git a/src/HttpServerResponseCommand.cc b/src/HttpServerResponseCommand.cc
index a44560e7..eabcf22b 100644
--- a/src/HttpServerResponseCommand.cc
+++ b/src/HttpServerResponseCommand.cc
@@ -40,9 +40,6 @@
#include "LogFactory.h"
#include "HttpServerCommand.h"
#include "RequestGroupMan.h"
-#include "RecoverableException.h"
-#include "wallclock.h"
-#include "util.h"
#include "fmt.h"
namespace aria2 {
@@ -52,54 +49,22 @@ HttpServerResponseCommand::HttpServerResponseCommand
const SharedHandle<HttpServer>& httpServer,
DownloadEngine* e,
const SharedHandle<SocketCore>& socket)
- : Command(cuid),
- e_(e),
- socket_(socket),
- httpServer_(httpServer)
-{
- setStatus(Command::STATUS_ONESHOT_REALTIME);
- e_->addSocketForWriteCheck(socket_, this);
-}
+ : AbstractHttpServerResponseCommand(cuid, httpServer, e, socket)
+{}
HttpServerResponseCommand::~HttpServerResponseCommand()
-{
- e_->deleteSocketForWriteCheck(socket_, this);
-}
+{}
-bool HttpServerResponseCommand::execute()
+void HttpServerResponseCommand::afterSend
+(const SharedHandle<HttpServer>& httpServer,
+ DownloadEngine* e)
{
- if(e_->getRequestGroupMan()->downloadFinished() || e_->isHaltRequested()) {
- return true;
- }
- try {
- httpServer_->sendResponse();
- } catch(RecoverableException& e) {
- A2_LOG_INFO_EX
- (fmt("CUID#%lld - Error occurred while transmitting response body.",
- getCuid()),
- e);
- return true;
- }
- if(httpServer_->sendBufferIsEmpty()) {
- A2_LOG_INFO(fmt("CUID#%lld - HttpServer: all response transmitted.",
+ if(httpServer->supportsPersistentConnection()) {
+ A2_LOG_INFO(fmt("CUID#%lld - Persist connection.",
getCuid()));
- if(httpServer_->supportsPersistentConnection()) {
- A2_LOG_INFO(fmt("CUID#%lld - Persist connection.",
- getCuid()));
- e_->addCommand
- (new HttpServerCommand(getCuid(), httpServer_, e_, socket_));
- }
- return true;
- } else {
- if(timeoutTimer_.difference(global::wallclock()) >= 10) {
- A2_LOG_INFO(fmt("CUID#%lld - HttpServer: Timeout while trasmitting"
- " response.",
- getCuid()));
- return true;
- } else {
- e_->addCommand(this);
- return false;
- }
+ e->addCommand
+ (new HttpServerCommand(getCuid(), httpServer, e,
+ httpServer->getSocket()));
}
}