| Index: remoting/protocol/message_reader.h
|
| diff --git a/remoting/protocol/message_reader.h b/remoting/protocol/message_reader.h
|
| index fb6c92ef1b816b5714fcace7989c51f9a9b59be0..65d52d0a8bbe5cfb34965be2ef64eb982e8220e9 100644
|
| --- a/remoting/protocol/message_reader.h
|
| +++ b/remoting/protocol/message_reader.h
|
| @@ -5,12 +5,10 @@
|
| #ifndef REMOTING_PROTOCOL_MESSAGE_READER_H_
|
| #define REMOTING_PROTOCOL_MESSAGE_READER_H_
|
|
|
| -#include "base/bind.h"
|
| #include "base/callback.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/memory/weak_ptr.h"
|
| #include "base/threading/non_thread_safe.h"
|
| -#include "net/base/completion_callback.h"
|
| #include "remoting/base/compound_buffer.h"
|
| #include "remoting/protocol/message_decoder.h"
|
|
|
| @@ -41,9 +39,11 @@ class MessageReader : public base::NonThreadSafe {
|
| MessageReader();
|
| virtual ~MessageReader();
|
|
|
| - // Initialize the MessageReader with a socket. If a message is received
|
| - // |callback| is called.
|
| - void Init(net::Socket* socket, const MessageReceivedCallback& callback);
|
| + // Sets the callback to be called for each incoming message.
|
| + void SetMessageReceivedCallback(const MessageReceivedCallback& callback);
|
| +
|
| + // Starts reading from |socket|.
|
| + void StartReading(net::Socket* socket);
|
|
|
| private:
|
| void DoRead();
|
| @@ -77,47 +77,6 @@ class MessageReader : public base::NonThreadSafe {
|
| DISALLOW_COPY_AND_ASSIGN(MessageReader);
|
| };
|
|
|
| -// Version of MessageReader for protocol buffer messages, that parses
|
| -// each incoming message.
|
| -template <class T>
|
| -class ProtobufMessageReader {
|
| - public:
|
| - // The callback that is called when a new message is received. |done_task|
|
| - // must be called by the callback when it's done processing the |message|.
|
| - typedef typename base::Callback<void(scoped_ptr<T> message,
|
| - const base::Closure& done_task)>
|
| - MessageReceivedCallback;
|
| -
|
| - ProtobufMessageReader() { };
|
| - ~ProtobufMessageReader() { };
|
| -
|
| - void Init(net::Socket* socket, const MessageReceivedCallback& callback) {
|
| - DCHECK(!callback.is_null());
|
| - message_received_callback_ = callback;
|
| - message_reader_.reset(new MessageReader());
|
| - message_reader_->Init(
|
| - socket, base::Bind(&ProtobufMessageReader<T>::OnNewData,
|
| - base::Unretained(this)));
|
| - }
|
| -
|
| - private:
|
| - void OnNewData(scoped_ptr<CompoundBuffer> buffer,
|
| - const base::Closure& done_task) {
|
| - scoped_ptr<T> message(new T());
|
| - CompoundBufferInputStream stream(buffer.get());
|
| - bool ret = message->ParseFromZeroCopyStream(&stream);
|
| - if (!ret) {
|
| - LOG(WARNING) << "Received message that is not a valid protocol buffer.";
|
| - } else {
|
| - DCHECK_EQ(stream.position(), buffer->total_bytes());
|
| - message_received_callback_.Run(message.Pass(), done_task);
|
| - }
|
| - }
|
| -
|
| - scoped_ptr<MessageReader> message_reader_;
|
| - MessageReceivedCallback message_received_callback_;
|
| -};
|
| -
|
| } // namespace protocol
|
| } // namespace remoting
|
|
|
|
|