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

Unified Diff: chrome/browser/chromeos/gdata/test_servers/http_server.h

Issue 11088073: HTTP server for testing Google Drive. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Added the forgotten file. Created 8 years, 2 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/chromeos/gdata/test_servers/http_server.h
diff --git a/chrome/browser/chromeos/gdata/test_servers/http_server.h b/chrome/browser/chromeos/gdata/test_servers/http_server.h
new file mode 100644
index 0000000000000000000000000000000000000000..eef1c349f1e2a8030650b630351372bb6a32004f
--- /dev/null
+++ b/chrome/browser/chromeos/gdata/test_servers/http_server.h
@@ -0,0 +1,77 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_GDATA_TEST_SERVERS_HTTP_SERVER_H_
+#define CHROME_BROWSER_CHROMEOS_GDATA_TEST_SERVERS_HTTP_SERVER_H_
+
+#include <string>
+#include "base/basictypes.h"
+#include "chrome/browser/chromeos/gdata/test_servers/http_connection.h"
+#include "net/base/tcp_listen_socket.h"
+
+namespace base {
+class WaitableEvent;
+}
+
+namespace gdata {
+namespace test_servers {
+
+class HttpConnectionDelegate;
+
+// General purpose, simple http server which runs on Browser::IO thread.
+class HttpServer : public net::TCPListenSocket,
+ private net::StreamListenSocket::Delegate {
+ public:
+ // Factory method. Returns empty scoped_refptr, if creating of a server
+ // failed. Can be called from any thread. Returned object runs in the
+ // Browser::IO thread, though.
+ // Passed |connection_delegate|'s methods are called from the IO thread.
+ static scoped_refptr<HttpServer> CreateServer(
+ const std::string& address,
+ int port,
+ HttpConnectionDelegate* connection_delegate);
+
+ // Drops the http connection. It will remove reference to it from internal
+ // collections and cause closing of an underlying socket. Should be called
+ // from the IO thread.
+ void DropHttpConnection(HttpConnection* connection);
+
+ private:
+ // Creates a server on IO thread. The test server pointer is returned
+ // before signaling the waiter (if provided).
+ static void CreateServerOnIOThread(
+ const std::string& address,
+ int port,
+ HttpConnectionDelegate* connection_delegate,
+ base::WaitableEvent* waiter,
+ HttpServer** server_ptr);
+
+ virtual ~HttpServer();
+
+ // Owns the HttpConnection objects.
+ std::map<StreamListenSocket*, HttpConnection*> connections_;
+ HttpConnectionDelegate* connection_delegate_; // Does not own.
+
+ HttpServer(SocketDescriptor& socket,
+ HttpConnectionDelegate* connection_delegate);
+
+ // |server| is the original listening Socket, connection is the new
+ // Socket that was created. Ownership of |connection| is transferred
+ // to the delegate with this call.
+ virtual void DidAccept(StreamListenSocket* server,
+ StreamListenSocket* connection) OVERRIDE;
+ virtual void DidRead(StreamListenSocket* connection,
+ const char* data,
+ int length) OVERRIDE;
+ virtual void DidClose(StreamListenSocket* connection) OVERRIDE;
+
+ virtual HttpConnection* FindConnection(StreamListenSocket* socket);
+
+ DISALLOW_COPY_AND_ASSIGN(HttpServer);
+};
+
+} // namespace test_servers
+} // namespace gdata
+
+#endif // CHROME_BROWSER_CHROMEOS_GDATA_TEST_SERVERS_HTTP_SERVER_H_

Powered by Google App Engine
This is Rietveld 408576698