| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 <limits> | 5 #include <limits> |
| 6 | 6 |
| 7 #include "net/spdy/spdy_frame_builder.h" | 7 #include "net/spdy/spdy_frame_builder.h" |
| 8 #include "net/spdy/spdy_protocol.h" | 8 #include "net/spdy/spdy_protocol.h" |
| 9 | 9 |
| 10 namespace net { | 10 namespace net { |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 size_t length = size - SpdyFrame::kHeaderSize; | 54 size_t length = size - SpdyFrame::kHeaderSize; |
| 55 DCHECK_EQ(0u, length & ~static_cast<size_t>(kLengthMask)); | 55 DCHECK_EQ(0u, length & ~static_cast<size_t>(kLengthMask)); |
| 56 FlagsAndLength flags_length; | 56 FlagsAndLength flags_length; |
| 57 flags_length.length_ = htonl(length); | 57 flags_length.length_ = htonl(length); |
| 58 DCHECK_EQ(0, flags & ~kDataFlagsMask); | 58 DCHECK_EQ(0, flags & ~kDataFlagsMask); |
| 59 flags_length.flags_[0] = flags; | 59 flags_length.flags_[0] = flags; |
| 60 WriteBytes(&flags_length, sizeof(flags_length)); | 60 WriteBytes(&flags_length, sizeof(flags_length)); |
| 61 } | 61 } |
| 62 | 62 |
| 63 SpdyFrameBuilder::~SpdyFrameBuilder() { | 63 SpdyFrameBuilder::~SpdyFrameBuilder() { |
| 64 delete[] buffer_; | |
| 65 } | 64 } |
| 66 | 65 |
| 67 char* SpdyFrameBuilder::BeginWrite(size_t length) { | 66 char* SpdyFrameBuilder::BeginWrite(size_t length) { |
| 68 size_t offset = length_; | 67 size_t offset = length_; |
| 69 size_t needed_size = length_ + length; | 68 size_t needed_size = length_ + length; |
| 70 if (needed_size > capacity_) | 69 if (needed_size > capacity_) |
| 71 return NULL; | 70 return NULL; |
| 72 | 71 |
| 73 #ifdef ARCH_CPU_64_BITS | 72 #ifdef ARCH_CPU_64_BITS |
| 74 DCHECK_LE(length, std::numeric_limits<uint32>::max()); | 73 DCHECK_LE(length, std::numeric_limits<uint32>::max()); |
| 75 #endif | 74 #endif |
| 76 | 75 |
| 77 return buffer_ + offset; | 76 return buffer_.get() + offset; |
| 78 } | 77 } |
| 79 | 78 |
| 80 void SpdyFrameBuilder::EndWrite(char* dest, int length) { | 79 void SpdyFrameBuilder::EndWrite(char* dest, int length) { |
| 81 } | 80 } |
| 82 | 81 |
| 83 bool SpdyFrameBuilder::WriteBytes(const void* data, uint32 data_len) { | 82 bool SpdyFrameBuilder::WriteBytes(const void* data, uint32 data_len) { |
| 84 if (data_len > kLengthMask) { | 83 if (data_len > kLengthMask) { |
| 85 return false; | 84 return false; |
| 86 } | 85 } |
| 87 | 86 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 108 | 107 |
| 109 bool SpdyFrameBuilder::WriteStringPiece32(const base::StringPiece& value) { | 108 bool SpdyFrameBuilder::WriteStringPiece32(const base::StringPiece& value) { |
| 110 if (!WriteUInt32(value.size())) { | 109 if (!WriteUInt32(value.size())) { |
| 111 return false; | 110 return false; |
| 112 } | 111 } |
| 113 | 112 |
| 114 return WriteBytes(value.data(), value.size()); | 113 return WriteBytes(value.data(), value.size()); |
| 115 } | 114 } |
| 116 | 115 |
| 117 } // namespace net | 116 } // namespace net |
| OLD | NEW |