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

Side by Side Diff: net/socket_stream/socket_stream_throttle.h

Issue 669157: Refactor WebSocket throttling feature. (Closed)
Patch Set: Fix for tyoshino's comment Created 10 years, 9 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 unified diff | Download patch
« no previous file with comments | « net/socket_stream/socket_stream.cc ('k') | net/socket_stream/socket_stream_throttle.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef NET_SOCKET_STREAM_SOCKET_STREAM_THROTTLE_H_
6 #define NET_SOCKET_STREAM_SOCKET_STREAM_THROTTLE_H_
7
8 #include <string>
9
10 #include "base/basictypes.h"
11 #include "net/base/completion_callback.h"
12 #include "net/base/net_errors.h"
13
14 namespace net {
15
16 class SocketStream;
17
18 // Abstract interface to throttle SocketStream per URL scheme.
19 // Each URL scheme (protocol) could define own SocketStreamThrottle.
20 // These methods will be called on IO thread.
21 class SocketStreamThrottle {
22 public:
23 // Called when |socket| is about to open connection.
24 // Returns net::OK if the connection can open now.
25 // Returns net::ERR_IO_PENDING if the connection should wait. In this case,
26 // |callback| will be called when it's ready to open connection.
27 virtual int OnStartOpenConnection(SocketStream* socket,
28 CompletionCallback* callback) {
29 // No throttle by default.
30 return OK;
31 }
32
33 // Called when |socket| read |len| bytes of |data|.
34 // May wake up another waiting socket.
35 // Returns net::OK if |socket| can continue to run.
36 // Returns net::ERR_IO_PENDING if |socket| should suspend to run. In this
37 // case, |callback| will be called when it's ready to resume running.
38 virtual int OnRead(SocketStream* socket, const char* data, int len,
39 CompletionCallback* callback) {
40 // No throttle by default.
41 return OK;
42 }
43
44 // Called when |socket| wrote |len| bytes of |data|.
45 // May wake up another waiting socket.
46 // Returns net::OK if |socket| can continue to run.
47 // Returns net::ERR_IO_PENDING if |socket| should suspend to run. In this
48 // case, |callback| will be called when it's ready to resume running.
49 virtual int OnWrite(SocketStream* socket, const char* data, int len,
50 CompletionCallback* callback) {
51 // No throttle by default.
52 return OK;
53 }
54
55 // Called when |socket| is closed.
56 // May wake up another waiting socket.
57 virtual void OnClose(SocketStream* socket) {}
58
59 // Gets SocketStreamThrottle for URL |scheme|.
60 // Doesn't pass ownership of the SocketStreamThrottle.
61 static SocketStreamThrottle* GetSocketStreamThrottleForScheme(
62 const std::string& scheme);
63
64 // Registers |throttle| for URL |scheme|.
65 // Doesn't take ownership of |throttle|. Typically |throttle| is
66 // singleton instance.
67 static void RegisterSocketStreamThrottle(
68 const std::string& scheme,
69 SocketStreamThrottle* throttle);
70
71 protected:
72 SocketStreamThrottle() {}
73 virtual ~SocketStreamThrottle() {}
74
75 private:
76 DISALLOW_COPY_AND_ASSIGN(SocketStreamThrottle);
77 };
78
79 } // namespace net
80
81 #endif // NET_SOCKET_STREAM_SOCKET_STREAM_THROTTLE_H_
OLDNEW
« no previous file with comments | « net/socket_stream/socket_stream.cc ('k') | net/socket_stream/socket_stream_throttle.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698