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

Side by Side Diff: net/websockets/websocket_deflate_stream.cc

Issue 1324113002: Introduce WebSocketDeflateParameters. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/websockets/websocket_deflate_stream.h" 5 #include "net/websockets/websocket_deflate_stream.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
14 #include "base/memory/scoped_vector.h" 14 #include "base/memory/scoped_vector.h"
15 #include "net/base/completion_callback.h" 15 #include "net/base/completion_callback.h"
16 #include "net/base/io_buffer.h" 16 #include "net/base/io_buffer.h"
17 #include "net/base/net_errors.h" 17 #include "net/base/net_errors.h"
18 #include "net/websockets/websocket_deflate_parameters.h"
18 #include "net/websockets/websocket_deflate_predictor.h" 19 #include "net/websockets/websocket_deflate_predictor.h"
19 #include "net/websockets/websocket_deflater.h" 20 #include "net/websockets/websocket_deflater.h"
20 #include "net/websockets/websocket_errors.h" 21 #include "net/websockets/websocket_errors.h"
21 #include "net/websockets/websocket_frame.h" 22 #include "net/websockets/websocket_frame.h"
22 #include "net/websockets/websocket_inflater.h" 23 #include "net/websockets/websocket_inflater.h"
23 #include "net/websockets/websocket_stream.h" 24 #include "net/websockets/websocket_stream.h"
24 25
25 class GURL; 26 class GURL;
26 27
27 namespace net { 28 namespace net {
28 29
29 namespace { 30 namespace {
30 31
31 const int kWindowBits = 15; 32 const int kWindowBits = 15;
32 const size_t kChunkSize = 4 * 1024; 33 const size_t kChunkSize = 4 * 1024;
33 34
34 } // namespace 35 } // namespace
35 36
36 WebSocketDeflateStream::WebSocketDeflateStream( 37 WebSocketDeflateStream::WebSocketDeflateStream(
37 scoped_ptr<WebSocketStream> stream, 38 scoped_ptr<WebSocketStream> stream,
38 WebSocketDeflater::ContextTakeOverMode mode, 39 const WebSocketDeflateParameters& params,
39 int client_window_bits,
40 scoped_ptr<WebSocketDeflatePredictor> predictor) 40 scoped_ptr<WebSocketDeflatePredictor> predictor)
41 : stream_(stream.Pass()), 41 : stream_(stream.Pass()),
42 deflater_(mode), 42 deflater_(params.client_context_take_over_mode()),
43 inflater_(kChunkSize, kChunkSize), 43 inflater_(kChunkSize, kChunkSize),
44 reading_state_(NOT_READING), 44 reading_state_(NOT_READING),
45 writing_state_(NOT_WRITING), 45 writing_state_(NOT_WRITING),
46 current_reading_opcode_(WebSocketFrameHeader::kOpCodeText), 46 current_reading_opcode_(WebSocketFrameHeader::kOpCodeText),
47 current_writing_opcode_(WebSocketFrameHeader::kOpCodeText), 47 current_writing_opcode_(WebSocketFrameHeader::kOpCodeText),
48 predictor_(predictor.Pass()) { 48 predictor_(predictor.Pass()) {
49 DCHECK(stream_); 49 DCHECK(stream_);
50 DCHECK_GE(client_window_bits, 8); 50 DCHECK(params.IsValidAsResponse());
51 DCHECK_LE(client_window_bits, 15); 51 int client_max_window_bits = 15;
52 deflater_.Initialize(client_window_bits); 52 if (params.is_client_max_window_bits_specified()) {
53 DCHECK(params.has_client_max_window_bits_value());
54 client_max_window_bits = params.client_max_window_bits();
55 }
56 deflater_.Initialize(client_max_window_bits);
53 inflater_.Initialize(kWindowBits); 57 inflater_.Initialize(kWindowBits);
54 } 58 }
55 59
56 WebSocketDeflateStream::~WebSocketDeflateStream() {} 60 WebSocketDeflateStream::~WebSocketDeflateStream() {}
57 61
58 int WebSocketDeflateStream::ReadFrames(ScopedVector<WebSocketFrame>* frames, 62 int WebSocketDeflateStream::ReadFrames(ScopedVector<WebSocketFrame>* frames,
59 const CompletionCallback& callback) { 63 const CompletionCallback& callback) {
60 int result = stream_->ReadFrames( 64 int result = stream_->ReadFrames(
61 frames, 65 frames,
62 base::Bind(&WebSocketDeflateStream::OnReadComplete, 66 base::Bind(&WebSocketDeflateStream::OnReadComplete,
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 DCHECK(!frames->empty()); 389 DCHECK(!frames->empty());
386 390
387 result = Inflate(frames); 391 result = Inflate(frames);
388 } 392 }
389 if (result < 0) 393 if (result < 0)
390 frames->clear(); 394 frames->clear();
391 return result; 395 return result;
392 } 396 }
393 397
394 } // namespace net 398 } // namespace net
OLDNEW
« no previous file with comments | « net/websockets/websocket_deflate_stream.h ('k') | net/websockets/websocket_deflate_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698