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

Unified Diff: net/spdy/spdy_framer.h

Issue 6800009: Attn: Mike Belshe Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 9 years, 8 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: net/spdy/spdy_framer.h
===================================================================
--- net/spdy/spdy_framer.h (revision 80449)
+++ net/spdy/spdy_framer.h (working copy)
@@ -74,6 +74,16 @@
virtual void OnStreamFrameData(SpdyStreamId stream_id,
const char* data,
size_t len) = 0;
+
+ // Returns true if the underlying socket's transport protocol is SCTP.
+ virtual bool using_sctp() { return false; }
Mike Belshe 2011/04/06 18:32:53 const functions
+
+ // Returns true if the underlying socker transport protocol if SCTP and SPDY
+ // control frames are send on SCTP stream 0.
+ virtual bool using_sctp_control_stream() { return false; }
Mike Belshe 2011/04/06 18:32:53 const
+
+ // Maps a SPDY stream number to an SCTP stream ID.
+ virtual uint16 MapSpdyToSctp(uint32 stream_id) { return 0; }
Mike Belshe 2011/04/06 18:32:53 const
};
class SpdyFramer {
@@ -246,6 +256,30 @@
// Returns true if a frame could be compressed.
bool IsCompressible(const SpdyFrame& frame) const;
+ // Returns true if underlying socket transport protocol is SCTP.
+ bool using_sctp() {
+ if (visitor_)
+ return visitor_->using_sctp();
+ else
+ // TODO(jtl): return sctp_enabled() here?
+ return false;
+ }
+
+ // Returns true if the underlying socker transport protocol if SCTP and SPDY
+ // control frames are send on SCTP stream 0.
+ bool using_sctp_control_stream() {
+ if (visitor_)
+ return visitor_->using_sctp_control_stream();
+ else
+ // TODO(jtl): return sctp_enabled() here?
+ return false;
+ }
+
+ // Maps a SPDY stream number of an SCTP stream ID.
+ uint16 MapSpdyToSctp(uint32 stream_id) {
+ return visitor_->MapSpdyToSctp(stream_id);
+ }
+
// For debugging.
static const char* StateToString(int state);
static const char* ErrorCodeToString(int error_code);
@@ -300,11 +334,13 @@
size_t ProcessDataFramePayload(const char* data, size_t len);
// Get (and lazily initialize) the ZLib state.
- z_stream* GetHeaderCompressor();
- z_stream* GetHeaderDecompressor();
+ z_stream* GetHeaderCompressor(int index);
+ z_stream* GetHeaderDecompressor(int index);
z_stream* GetStreamCompressor(SpdyStreamId id);
z_stream* GetStreamDecompressor(SpdyStreamId id);
+ uint16 GetDictionaryIndex(const SpdyControlFrame& control_frame);
+
// Compression helpers
SpdyControlFrame* CompressControlFrame(const SpdyControlFrame& frame);
SpdyDataFrame* CompressDataFrame(const SpdyDataFrame& frame);
@@ -317,6 +353,7 @@
void CleanupCompressorForStream(SpdyStreamId id);
void CleanupDecompressorForStream(SpdyStreamId id);
void CleanupStreamCompressorsAndDecompressors();
+ void CleanupHeaderCompressorsAndDecompressors();
// Not used (yet)
size_t BytesSafeToRead() const;
@@ -345,10 +382,11 @@
size_t current_frame_capacity_;
bool enable_compression_; // Controls all compression
- // SPDY header compressors.
- scoped_ptr<z_stream> header_compressor_;
- scoped_ptr<z_stream> header_decompressor_;
+ // SPDY header compressors (possbily per-stream when using SCTP).
+ CompressorMap header_compressors_;
+ CompressorMap header_decompressors_;
+
// Per-stream data compressors.
CompressorMap stream_compressors_;
CompressorMap stream_decompressors_;

Powered by Google App Engine
This is Rietveld 408576698