Index: content/browser/devtools/protocol/io_handler.cc |
diff --git a/content/browser/devtools/protocol/io_handler.cc b/content/browser/devtools/protocol/io_handler.cc |
index 64dfd954029d9adb98821bd40f880e89e66af4d5..f77bf674a0761b2e200e8b118f7b427ce0217056 100644 |
--- a/content/browser/devtools/protocol/io_handler.cc |
+++ b/content/browser/devtools/protocol/io_handler.cc |
@@ -17,10 +17,7 @@ |
#include "content/public/browser/browser_thread.h" |
namespace content { |
-namespace devtools { |
-namespace io { |
- |
-using Response = DevToolsProtocolClient::Response; |
+namespace protocol { |
IOHandler::IOHandler(DevToolsIOContext* io_context) |
: io_context_(io_context) |
@@ -28,42 +25,50 @@ IOHandler::IOHandler(DevToolsIOContext* io_context) |
IOHandler::~IOHandler() {} |
-void IOHandler::SetClient(std::unique_ptr<Client> client) { |
- client_.swap(client); |
+void IOHandler::Wire(UberDispatcher* dispatcher) { |
+ frontend_.reset(new IO::Frontend(dispatcher->channel())); |
+ IO::Dispatcher::wire(dispatcher, this); |
+} |
+ |
+Response IOHandler::Disable() { |
+ return Response::OK(); |
} |
-Response IOHandler::Read(DevToolsCommandId command_id, |
- const std::string& handle, const int* offset, const int* max_size) { |
+void IOHandler::Read( |
+ const std::string& handle, |
+ Maybe<int> offset, |
+ Maybe<int> max_size, |
+ std::unique_ptr<ReadCallback> callback) { |
static const size_t kDefaultChunkSize = 10 * 1024 * 1024; |
scoped_refptr<DevToolsIOContext::Stream> stream = |
io_context_->GetByHandle(handle); |
- if (!stream) |
- return Response::InvalidParams("Invalid stream handle"); |
- stream->Read(offset ? *offset : -1, |
- max_size && *max_size ? *max_size : kDefaultChunkSize, |
+ if (!stream) { |
+ callback->sendFailure(Response::Error("Invalid stream handle")); |
caseq
2016/11/15 18:33:59
let's keep different error codes -- just make a me
dgozman
2016/11/17 21:51:07
Done.
|
+ return; |
+ } |
+ stream->Read(offset.fromMaybe(-1), |
+ max_size.fromMaybe(kDefaultChunkSize), |
base::Bind(&IOHandler::ReadComplete, |
- weak_factory_.GetWeakPtr(), command_id)); |
- return Response::OK(); |
+ weak_factory_.GetWeakPtr(), |
+ base::Passed(std::move(callback)))); |
} |
-void IOHandler::ReadComplete(DevToolsCommandId command_id, |
+void IOHandler::ReadComplete(std::unique_ptr<ReadCallback> callback, |
const scoped_refptr<base::RefCountedString>& data, |
int status) { |
if (status == DevToolsIOContext::Stream::StatusFailure) { |
- client_->SendError(command_id, Response::ServerError("Read failed")); |
+ callback->sendFailure(Response::Error("Read failed")); |
return; |
} |
bool eof = status == DevToolsIOContext::Stream::StatusEOF; |
- client_->SendReadResponse(command_id, |
- ReadResponse::Create()->set_data(data->data())->set_eof(eof)); |
+ callback->sendSuccess(data->data(), eof); |
} |
Response IOHandler::Close(const std::string& handle) { |
return io_context_->Close(handle) ? Response::OK() |
- : Response::InvalidParams("Invalid stream handle"); |
+ : Response::Error("Invalid stream handle"); |
} |
-} // namespace io |
-} // namespace devtools |
+} // namespace protocol |
} // namespace content |