| Index: remoting/protocol/message_reader.h
|
| diff --git a/remoting/protocol/message_reader.h b/remoting/protocol/message_reader.h
|
| index 8a8abda7ef9eea5b71e503169e06a2eea07c2f9f..fb89f9170c1e0b59c4b05cdf600ab488a45d0c2d 100644
|
| --- a/remoting/protocol/message_reader.h
|
| +++ b/remoting/protocol/message_reader.h
|
| @@ -5,11 +5,11 @@
|
| #ifndef REMOTING_PROTOCOL_MESSAGE_READER_H_
|
| #define REMOTING_PROTOCOL_MESSAGE_READER_H_
|
|
|
| +#include "base/bind.h"
|
| #include "base/callback.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/message_loop_proxy.h"
|
| -#include "base/task.h"
|
| #include "net/base/completion_callback.h"
|
| #include "remoting/base/compound_buffer.h"
|
| #include "remoting/protocol/message_decoder.h"
|
| @@ -41,14 +41,15 @@ class MessageReader : public base::RefCountedThreadSafe<MessageReader> {
|
| // (|done_task|). The buffer (first argument) is owned by
|
| // MessageReader and is freed when the task specified by the second
|
| // argument is called.
|
| - typedef Callback2<CompoundBuffer*, Task*>::Type MessageReceivedCallback;
|
| + typedef base::Callback<void(CompoundBuffer*, const base::Closure&)>
|
| + MessageReceivedCallback;
|
|
|
| MessageReader();
|
| virtual ~MessageReader();
|
|
|
| // Initialize the MessageReader with a socket. If a message is received
|
| // |callback| is called.
|
| - void Init(net::Socket* socket, MessageReceivedCallback* callback);
|
| + void Init(net::Socket* socket, const MessageReceivedCallback& callback);
|
|
|
| private:
|
| void DoRead();
|
| @@ -77,7 +78,7 @@ class MessageReader : public base::RefCountedThreadSafe<MessageReader> {
|
| MessageDecoder message_decoder_;
|
|
|
| // Callback is called when a message is received.
|
| - scoped_ptr<MessageReceivedCallback> message_received_callback_;
|
| + MessageReceivedCallback message_received_callback_;
|
| };
|
|
|
| // Version of MessageReader for protocol buffer messages, that parses
|
| @@ -85,20 +86,23 @@ class MessageReader : public base::RefCountedThreadSafe<MessageReader> {
|
| template <class T>
|
| class ProtobufMessageReader {
|
| public:
|
| - typedef typename Callback2<T*, Task*>::Type MessageReceivedCallback;
|
| + typedef typename base::Callback<void(T*, const base::Closure&)>
|
| + MessageReceivedCallback;
|
|
|
| ProtobufMessageReader() { };
|
| ~ProtobufMessageReader() { };
|
|
|
| - void Init(net::Socket* socket, MessageReceivedCallback* callback) {
|
| - message_received_callback_.reset(callback);
|
| + void Init(net::Socket* socket, const MessageReceivedCallback& callback) {
|
| + DCHECK(!callback.is_null());
|
| + message_received_callback_ = callback;
|
| message_reader_ = new MessageReader();
|
| message_reader_->Init(
|
| - socket, NewCallback(this, &ProtobufMessageReader<T>::OnNewData));
|
| + socket, base::Bind(&ProtobufMessageReader<T>::OnNewData,
|
| + base::Unretained(this)));
|
| }
|
|
|
| private:
|
| - void OnNewData(CompoundBuffer* buffer, Task* done_task) {
|
| + void OnNewData(CompoundBuffer* buffer, const base::Closure& done_task) {
|
| T* message = new T();
|
| CompoundBufferInputStream stream(buffer);
|
| bool ret = message->ParseFromZeroCopyStream(&stream);
|
| @@ -107,20 +111,18 @@ class ProtobufMessageReader {
|
| delete message;
|
| } else {
|
| DCHECK_EQ(stream.position(), buffer->total_bytes());
|
| - message_received_callback_->Run(
|
| - message, NewRunnableFunction(
|
| - &ProtobufMessageReader<T>::OnDone, message, done_task));
|
| + message_received_callback_.Run(message, base::Bind(
|
| + &ProtobufMessageReader<T>::OnDone, message, done_task));
|
| }
|
| }
|
|
|
| - static void OnDone(T* message, Task* done_task) {
|
| + static void OnDone(T* message, const base::Closure& done_task) {
|
| delete message;
|
| - done_task->Run();
|
| - delete done_task;
|
| + done_task.Run();
|
| }
|
|
|
| scoped_refptr<MessageReader> message_reader_;
|
| - scoped_ptr<MessageReceivedCallback> message_received_callback_;
|
| + MessageReceivedCallback message_received_callback_;
|
| };
|
|
|
| } // namespace protocol
|
|
|