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 |