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

Side by Side Diff: net/tools/flip_server/spdy_interface.h

Issue 2169503002: Remove flip_server. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 unified diff | Download patch
« no previous file with comments | « net/tools/flip_server/sm_interface.h ('k') | net/tools/flip_server/spdy_interface.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) 2012 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_TOOLS_FLIP_SERVER_SPDY_INTERFACE_H_
6 #define NET_TOOLS_FLIP_SERVER_SPDY_INTERFACE_H_
7
8 #include <stddef.h>
9 #include <stdint.h>
10
11 #include <map>
12 #include <memory>
13 #include <string>
14 #include <vector>
15
16 #include "base/compiler_specific.h"
17 #include "net/spdy/buffered_spdy_framer.h"
18 #include "net/spdy/spdy_alt_svc_wire_format.h"
19 #include "net/spdy/spdy_protocol.h"
20 #include "net/tools/balsa/balsa_headers.h"
21 #include "net/tools/balsa/balsa_visitor_interface.h"
22 #include "net/tools/flip_server/output_ordering.h"
23 #include "net/tools/flip_server/sm_connection.h"
24 #include "net/tools/flip_server/sm_interface.h"
25
26 namespace net {
27
28 class FlipAcceptor;
29 class MemoryCache;
30
31 class SpdySM : public BufferedSpdyFramerVisitorInterface, public SMInterface {
32 public:
33 SpdySM(SMConnection* connection,
34 SMInterface* sm_http_interface,
35 EpollServer* epoll_server,
36 MemoryCache* memory_cache,
37 FlipAcceptor* acceptor);
38 ~SpdySM() override;
39
40 void InitSMInterface(SMInterface* sm_http_interface,
41 int32_t server_idx) override {}
42
43 void InitSMConnection(SMConnectionPoolInterface* connection_pool,
44 SMInterface* sm_interface,
45 EpollServer* epoll_server,
46 int fd,
47 std::string server_ip,
48 std::string server_port,
49 std::string remote_ip,
50 bool use_ssl) override;
51
52 // Create new SPDY framer after reusing SpdySM and negotiating new version
53 void CreateFramer();
54
55 private:
56 void set_is_request() override {}
57 SMInterface* NewConnectionInterface();
58 // virtual for tests
59 virtual SMInterface* FindOrMakeNewSMConnectionInterface(
60 const std::string& server_ip,
61 const std::string& server_port);
62 int SpdyHandleNewStream(SpdyStreamId stream_id,
63 SpdyPriority priority,
64 const SpdyHeaderBlock& headers,
65 std::string& http_data,
66 bool* is_https_scheme);
67
68 // BufferedSpdyFramerVisitorInterface:
69 void OnError(SpdyFramer::SpdyError error_code) override {}
70 void OnStreamError(SpdyStreamId stream_id,
71 const std::string& description) override {}
72
73 // Called after all the header data for HEADERS control frame is received.
74 void OnHeaders(SpdyStreamId stream_id,
75 bool has_priority,
76 int weight,
77 SpdyStreamId parent_stream_id,
78 bool exclusive,
79 bool fin,
80 const SpdyHeaderBlock& headers) override;
81
82 // Called when data frame header is received.
83 void OnDataFrameHeader(SpdyStreamId stream_id,
84 size_t length,
85 bool fin) override {}
86
87 // Called when data is received.
88 // |stream_id| The stream receiving data.
89 // |data| A buffer containing the data received.
90 // |len| The length of the data buffer.
91 void OnStreamFrameData(SpdyStreamId stream_id,
92 const char* data,
93 size_t len) override;
94
95 // Called when the other side has finished sending data on this stream.
96 // |stream_id| The stream that was receivin data.
97 void OnStreamEnd(SpdyStreamId stream_id) override;
98
99 // Called when padding is received (padding length field or padding octets).
100 // |stream_id| The stream receiving data.
101 // |len| The number of padding octets.
102 void OnStreamPadding(SpdyStreamId stream_id, size_t len) override;
103
104 // Called when a SETTINGS frame is received.
105 // |clear_persisted| True if the respective flag is set on the SETTINGS frame.
106 void OnSettings(bool clear_persisted) override {}
107
108 // Called when an individual setting within a SETTINGS frame has been parsed
109 // and validated.
110 void OnSetting(SpdySettingsIds id, uint8_t flags, uint32_t value) override {}
111
112 // Called when a PING frame has been parsed.
113 void OnPing(SpdyPingId unique_id, bool is_ack) override {}
114
115 // Called when a RST_STREAM frame has been parsed.
116 void OnRstStream(SpdyStreamId stream_id, SpdyRstStreamStatus status) override;
117
118 // Called when a GOAWAY frame has been parsed.
119 void OnGoAway(SpdyStreamId last_accepted_stream_id,
120 SpdyGoAwayStatus status,
121 base::StringPiece debug_data) override {}
122
123 // Called when a WINDOW_UPDATE frame has been parsed.
124 void OnWindowUpdate(SpdyStreamId stream_id, int delta_window_size) override {}
125
126 // Called when a PUSH_PROMISE frame has been parsed.
127 void OnPushPromise(SpdyStreamId stream_id,
128 SpdyStreamId promised_stream_id,
129 const SpdyHeaderBlock& headers) override {}
130
131 // Called when an ALTSVC frame has been parsed.
132 void OnAltSvc(SpdyStreamId stream_id,
133 base::StringPiece origin,
134 const SpdyAltSvcWireFormat::AlternativeServiceVector&
135 altsvc_vector) override {}
136
137 bool OnUnknownFrame(SpdyStreamId stream_id, int frame_type) override;
138
139 public:
140 size_t ProcessReadInput(const char* data, size_t len) override;
141 size_t ProcessWriteInput(const char* data, size_t len) override;
142 bool MessageFullyRead() const override;
143 void SetStreamID(uint32_t stream_id) override {}
144 bool Error() const override;
145 const char* ErrorAsString() const override;
146 void Reset() override {}
147 void ResetForNewInterface(int32_t server_idx) override;
148 void ResetForNewConnection() override;
149 // SMInterface's Cleanup is currently only called by SMConnection after a
150 // protocol message as been fully read. Spdy's SMInterface does not need
151 // to do any cleanup at this time.
152 // TODO(klindsay) This method is probably not being used properly and
153 // some logic review and method renaming is probably in order.
154 void Cleanup() override {}
155 // Send a settings frame
156 int PostAcceptHook() override;
157 void NewStream(uint32_t stream_id,
158 uint32_t priority,
159 const std::string& filename) override;
160 void AddToOutputOrder(const MemCacheIter& mci);
161 void SendEOF(uint32_t stream_id) override;
162 void SendErrorNotFound(uint32_t stream_id) override;
163 size_t SendSynStream(uint32_t stream_id,
164 const BalsaHeaders& headers) override;
165 size_t SendSynReply(uint32_t stream_id, const BalsaHeaders& headers) override;
166 void SendDataFrame(uint32_t stream_id,
167 const char* data,
168 int64_t len,
169 uint32_t flags,
170 bool compress) override;
171 BufferedSpdyFramer* spdy_framer() { return buffered_spdy_framer_.get(); }
172
173 const OutputOrdering& output_ordering() const {
174 return client_output_ordering_;
175 }
176
177 static std::string forward_ip_header() { return forward_ip_header_; }
178 static void set_forward_ip_header(const std::string& value) {
179 forward_ip_header_ = value;
180 }
181
182 private:
183 void SendEOFImpl(uint32_t stream_id);
184 void SendErrorNotFoundImpl(uint32_t stream_id);
185 void KillStream(uint32_t stream_id);
186 void CopyHeaders(SpdyHeaderBlock& dest, const BalsaHeaders& headers);
187 size_t SendSynStreamImpl(uint32_t stream_id, const BalsaHeaders& headers);
188 size_t SendSynReplyImpl(uint32_t stream_id, const BalsaHeaders& headers);
189 void SendDataFrameImpl(uint32_t stream_id,
190 const char* data,
191 int64_t len,
192 SpdyDataFlags flags,
193 bool compress);
194 void EnqueueDataFrame(DataFrame* df);
195 void GetOutput() override;
196
197 private:
198 std::unique_ptr<BufferedSpdyFramer> buffered_spdy_framer_;
199 bool valid_spdy_session_; // True if we have seen valid data on this session.
200 // Use this to fail fast when junk is sent to our
201 // port.
202
203 SMConnection* connection_;
204 OutputList* client_output_list_;
205 OutputOrdering client_output_ordering_;
206 uint32_t next_outgoing_stream_id_;
207 EpollServer* epoll_server_;
208 FlipAcceptor* acceptor_;
209 MemoryCache* memory_cache_;
210 std::vector<SMInterface*> server_interface_list;
211 std::vector<int32_t> unused_server_interface_list;
212 typedef std::map<uint32_t, SMInterface*> StreamToSmif;
213 StreamToSmif stream_to_smif_;
214 bool close_on_error_;
215
216 static std::string forward_ip_header_;
217 };
218
219 } // namespace net
220
221 #endif // NET_TOOLS_FLIP_SERVER_SPDY_INTERFACE_H_
OLDNEW
« no previous file with comments | « net/tools/flip_server/sm_interface.h ('k') | net/tools/flip_server/spdy_interface.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698