summaryrefslogtreecommitdiffstats
path: root/net/flip/flip_protocol.h
diff options
context:
space:
mode:
authormbelshe@google.com <mbelshe@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-20 15:32:32 +0000
committermbelshe@google.com <mbelshe@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-20 15:32:32 +0000
commit289b93d79e3e7a55553ae0c41fd48461e43e9d8e (patch)
tree6899338a89e927f6eff837d49ad39f91e84b4846 /net/flip/flip_protocol.h
parent9194b3fc91953bb1472d8671d2322ac5616ee0b4 (diff)
downloadchromium_src-289b93d79e3e7a55553ae0c41fd48461e43e9d8e.zip
chromium_src-289b93d79e3e7a55553ae0c41fd48461e43e9d8e.tar.gz
chromium_src-289b93d79e3e7a55553ae0c41fd48461e43e9d8e.tar.bz2
Fixup the flip_framer eof-handling semantics now that we have
the FIN bit in place. The FlipFrameVisitor will always inject a zero-length data packet to the Visitor as a signal that the data stream is complete. Even if the FIN packet was set on a SYN_REPLY (e.g. there are no data packets), the FlipFramer will simulate a zero-length read to the caller. Likewise, zero-length reads are never sent to the visitor unless the FIN packet has been received. This means that the FlipFramer must swallow zero-length data packets. Also merged in changes from server. BUG=none TEST=flip_framer_test.cc Review URL: http://codereview.chromium.org/294015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29513 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/flip/flip_protocol.h')
-rw-r--r--net/flip/flip_protocol.h20
1 files changed, 11 insertions, 9 deletions
diff --git a/net/flip/flip_protocol.h b/net/flip/flip_protocol.h
index c737473..8a585bc 100644
--- a/net/flip/flip_protocol.h
+++ b/net/flip/flip_protocol.h
@@ -89,23 +89,25 @@ const int kFlipProtocolVersion = 1;
// accessors provided or call ntohX() functions.
// Types of Flip Control Frames.
-typedef enum {
+enum FlipControlType {
SYN_STREAM = 1,
SYN_REPLY,
FIN_STREAM,
NOOP
-} FlipControlType;
+};
// Flags on data packets
-typedef enum {
+enum FlipDataFlags {
+ DATA_FLAG_NONE = 0,
DATA_FLAG_FIN = 1,
DATA_FLAG_COMPRESSED = 2 // TODO(mbelshe): remove me.
-} FlipDataFlags;
+};
// Flags on control packets
-typedef enum {
+enum FlipControlFlags {
+ CONTROL_FLAG_NONE = 0,
CONTROL_FLAG_FIN = 1
-} FlipControlFlags;
+};
// A FLIP stream id is a 31 bit entity.
typedef uint32 FlipStreamId;
@@ -115,10 +117,10 @@ typedef uint32 FlipStreamId;
#define FLIP_PRIORITY_HIGHEST 0
// A special structure for the 8 bit flags and 24 bit length fields.
-typedef union {
+union FlagsAndLength {
uint8 flags_[4]; // 8 bits
uint32 length_; // 24 bits
-} FlagsLength;
+};
// All Flip Frame types derive from the FlipFrame struct.
typedef struct {
@@ -146,7 +148,7 @@ typedef struct {
FlipStreamId stream_id_;
} data_;
};
- FlagsLength flags_length_;
+ FlagsAndLength flags_length_;
} FlipFrame;
// A Data Frame.