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

Side by Side Diff: net/spdy/spdy_header_block.cc

Issue 2102253003: Make SpdyHeaderBlock non-copyable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: iOS fix. 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/spdy/spdy_header_block.h ('k') | net/spdy/spdy_header_block_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "net/spdy/spdy_header_block.h" 5 #include "net/spdy/spdy_header_block.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <ios> 8 #include <ios>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 return *this; 113 return *this;
114 } 114 }
115 115
116 SpdyHeaderBlock::StringPieceProxy::operator StringPiece() const { 116 SpdyHeaderBlock::StringPieceProxy::operator StringPiece() const {
117 return (lookup_result_ == block_->end()) ? StringPiece() 117 return (lookup_result_ == block_->end()) ? StringPiece()
118 : lookup_result_->second; 118 : lookup_result_->second;
119 } 119 }
120 120
121 SpdyHeaderBlock::SpdyHeaderBlock() : storage_(new Storage) {} 121 SpdyHeaderBlock::SpdyHeaderBlock() : storage_(new Storage) {}
122 122
123 SpdyHeaderBlock::SpdyHeaderBlock(const SpdyHeaderBlock& other)
124 : storage_(new Storage) {
125 for (auto iter : other) {
126 AppendHeader(iter.first, iter.second);
127 }
128 }
129
130 SpdyHeaderBlock::SpdyHeaderBlock(SpdyHeaderBlock&& other) 123 SpdyHeaderBlock::SpdyHeaderBlock(SpdyHeaderBlock&& other)
131 : storage_(std::move(other.storage_)) { 124 : storage_(std::move(other.storage_)) {
132 // |block_| is linked_hash_map, which does not have move constructor. 125 // |block_| is linked_hash_map, which does not have move constructor.
133 block_.swap(other.block_); 126 block_.swap(other.block_);
134 } 127 }
135 128
136 SpdyHeaderBlock::~SpdyHeaderBlock() {} 129 SpdyHeaderBlock::~SpdyHeaderBlock() {}
137 130
138 SpdyHeaderBlock& SpdyHeaderBlock::operator=(const SpdyHeaderBlock& other) {
139 clear();
140 for (auto iter : other) {
141 AppendHeader(iter.first, iter.second);
142 }
143 return *this;
144 }
145
146 SpdyHeaderBlock& SpdyHeaderBlock::operator=(SpdyHeaderBlock&& other) { 131 SpdyHeaderBlock& SpdyHeaderBlock::operator=(SpdyHeaderBlock&& other) {
147 storage_ = std::move(other.storage_); 132 storage_ = std::move(other.storage_);
148 // |block_| is linked_hash_map, which does not have move assignment 133 // |block_| is linked_hash_map, which does not have move assignment
149 // operator. 134 // operator.
150 block_.swap(other.block_); 135 block_.swap(other.block_);
151 return *this; 136 return *this;
152 } 137 }
153 138
139 SpdyHeaderBlock SpdyHeaderBlock::Clone() const {
140 SpdyHeaderBlock copy;
141 for (auto iter : *this) {
142 copy.AppendHeader(iter.first, iter.second);
143 }
144 return copy;
145 }
146
154 bool SpdyHeaderBlock::operator==(const SpdyHeaderBlock& other) const { 147 bool SpdyHeaderBlock::operator==(const SpdyHeaderBlock& other) const {
155 return size() == other.size() && std::equal(begin(), end(), other.begin()); 148 return size() == other.size() && std::equal(begin(), end(), other.begin());
156 } 149 }
157 150
158 bool SpdyHeaderBlock::operator!=(const SpdyHeaderBlock& other) const { 151 bool SpdyHeaderBlock::operator!=(const SpdyHeaderBlock& other) const {
159 return !(operator==(other)); 152 return !(operator==(other));
160 } 153 }
161 154
162 string SpdyHeaderBlock::DebugString() const { 155 string SpdyHeaderBlock::DebugString() const {
163 if (empty()) { 156 if (empty()) {
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 if (!it.value().GetAsString(&value)) { 252 if (!it.value().GetAsString(&value)) {
260 headers->clear(); 253 headers->clear();
261 return false; 254 return false;
262 } 255 }
263 (*headers)[it.key()] = value; 256 (*headers)[it.key()] = value;
264 } 257 }
265 return true; 258 return true;
266 } 259 }
267 260
268 } // namespace net 261 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_header_block.h ('k') | net/spdy/spdy_header_block_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698