Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1231)

Unified Diff: chrome/browser/debugger/devtools_remote_listen_socket.cc

Issue 2868036: Brushed up listen socket: (Closed)
Patch Set: Lint. Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/debugger/devtools_remote_listen_socket.cc
diff --git a/chrome/browser/debugger/devtools_remote_listen_socket.cc b/chrome/browser/debugger/devtools_remote_listen_socket.cc
index e4a84cb546512256ea302bfe1b2c6a8e4fd7bfab..87b88d0153964f8bceca274b03e1b4c46cfbd221 100644
--- a/chrome/browser/debugger/devtools_remote_listen_socket.cc
+++ b/chrome/browser/debugger/devtools_remote_listen_socket.cc
@@ -41,9 +41,8 @@ const int kReadBufSize = 200;
DevToolsRemoteListenSocket::DevToolsRemoteListenSocket(
SOCKET s,
- ListenSocketDelegate* del,
DevToolsRemoteListener* message_listener)
- : ListenSocket(s, del),
+ : ALLOW_THIS_IN_INITIALIZER_LIST(ListenSocket(s, this)),
state_(HANDSHAKE),
remaining_payload_length_(0),
message_listener_(message_listener),
@@ -86,55 +85,30 @@ DevToolsRemoteListenSocket::~DevToolsRemoteListenSocket() {}
DevToolsRemoteListenSocket*
DevToolsRemoteListenSocket::Listen(const std::string& ip,
int port,
- ListenSocketDelegate* del,
DevToolsRemoteListener* listener) {
SOCKET s = ListenSocket::Listen(ip, port);
if (s == INVALID_SOCKET) {
// TODO(apavlov): error handling
} else {
DevToolsRemoteListenSocket* sock =
- new DevToolsRemoteListenSocket(s, del, listener);
+ new DevToolsRemoteListenSocket(s, listener);
sock->Listen();
return sock;
}
return NULL;
}
-void DevToolsRemoteListenSocket::Read() {
- char buf[kReadBufSize];
- int len;
- do {
- len = HANDLE_EINTR(recv(socket_, buf, kReadBufSize, 0));
- if (len == SOCKET_ERROR) {
-#if defined(OS_WIN)
- int err = WSAGetLastError();
- if (err == WSAEWOULDBLOCK) {
-#elif defined(OS_POSIX)
- if (errno == EWOULDBLOCK || errno == EAGAIN) {
-#endif
- break;
- } else {
- // TODO(apavlov): some error handling required here
- break;
- }
- } else if (len == 0) {
- // In Windows, Close() is called by OnObjectSignaled. In POSIX, we need
- // to call it here.
-#if defined(OS_POSIX)
- Close();
-#endif
- } else {
- // TODO(apavlov): maybe change DidRead to take a length instead
- DCHECK(len > 0 && len <= kReadBufSize);
- this->DispatchRead(buf, len);
- }
- } while (len == kReadBufSize);
+void DevToolsRemoteListenSocket::DidAccept(ListenSocket *server,
+ ListenSocket *connection) {
+ connection->AddRef();
+ message_listener_->OnAcceptConnection(connection);
}
// Dispatches data from socket to socket_delegate_, extracting messages
// delimited by newlines.
-void DevToolsRemoteListenSocket::DispatchRead(char* buf, int len) {
- char* pBuf = buf;
+void DevToolsRemoteListenSocket::DidRead(ListenSocket* connection,
+ const char* pBuf,
+ int len) {
while (len > 0) {
if (state_ != PAYLOAD) {
if (cr_received_ && *pBuf == '\n') {
@@ -173,6 +147,11 @@ void DevToolsRemoteListenSocket::DispatchRead(char* buf, int len) {
}
}
+void DevToolsRemoteListenSocket::DidClose(ListenSocket *connection) {
+ message_listener_->OnConnectionLost();
+ connection->Release();
+}
+
void DevToolsRemoteListenSocket::DispatchField() {
static const std::string kHandshakeString = "ChromeDevToolsHandshake";
switch (state_) {
@@ -231,7 +210,6 @@ void DevToolsRemoteListenSocket::Accept() {
if (conn != INVALID_SOCKET) {
scoped_refptr<DevToolsRemoteListenSocket> sock =
new DevToolsRemoteListenSocket(conn,
- socket_delegate_,
message_listener_);
// it's up to the delegate to AddRef if it wants to keep it around
#if defined(OS_POSIX)

Powered by Google App Engine
This is Rietveld 408576698