Index: chrome/browser/extensions/api/socket/socket.h |
diff --git a/chrome/browser/extensions/api/socket/socket.h b/chrome/browser/extensions/api/socket/socket.h |
index 9f3ab8b35237b7bdcd8c595471bed7db6e43a254..3db74b769fd5c508f7dccee9051332e74a709683 100644 |
--- a/chrome/browser/extensions/api/socket/socket.h |
+++ b/chrome/browser/extensions/api/socket/socket.h |
@@ -6,11 +6,14 @@ |
#define CHROME_BROWSER_EXTENSIONS_API_SOCKET_SOCKET_H_ |
#pragma once |
+#include <queue> |
#include <string> |
+#include <utility> |
#include "base/callback.h" |
#include "base/memory/ref_counted.h" |
#include "chrome/browser/extensions/api/api_resource.h" |
+#include "net/base/completion_callback.h" |
#include "net/base/io_buffer.h" |
namespace net { |
@@ -52,9 +55,9 @@ class Socket : public APIResource { |
// case |event_notifier| (supplied at socket creation) will eventually be |
// called with the final result (again, either a nonnegative number of bytes |
// written, or a negative error). |
- virtual void Write(scoped_refptr<net::IOBuffer> io_buffer, |
- int byte_count, |
- const CompletionCallback& callback) = 0; |
+ void Write(scoped_refptr<net::IOBuffer> io_buffer, |
+ int byte_count, |
+ const CompletionCallback& callback); |
virtual void RecvFrom(int count, |
const RecvFromCompletionCallback& callback) = 0; |
@@ -77,9 +80,34 @@ class Socket : public APIResource { |
protected: |
explicit Socket(APIResourceEventNotifier* event_notifier); |
+ |
jeremya
2012/05/17 01:09:06
nit: extra blank line
Peng
2012/05/17 15:05:13
Done.
|
+ |
+ void WriteData(); |
+ virtual int WriteImpl(net::IOBuffer* io_buffer, |
+ int io_buffer_size, |
+ const net::CompletionCallback& callback) = 0; |
+ virtual void OnWriteComplete(int result); |
+ |
const std::string address_; |
int port_; |
bool is_connected_; |
+ |
+ private: |
+ struct WriteRequest { |
+ WriteRequest(scoped_refptr<net::IOBuffer> io_buffer, |
+ int byte_count, |
+ const CompletionCallback& callback) |
+ : io_buffer(io_buffer), |
+ byte_count(byte_count), |
+ callback(callback), |
+ byte_written(0) {} |
jeremya
2012/05/17 01:09:06
bytes_written
Peng
2012/05/17 15:05:13
Done.
|
+ scoped_refptr<net::IOBuffer> io_buffer; |
+ int byte_count; |
+ CompletionCallback callback; |
+ int byte_written; |
+ }; |
+ std::queue<WriteRequest> write_queue_; |
+ scoped_refptr<net::IOBuffer> io_buffer_write_; |
}; |
} // namespace extensions |