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

Side by Side Diff: net/quic/iovector.h

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
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 #ifndef NET_QUIC_IOVECTOR_H_ 5 #ifndef NET_QUIC_IOVECTOR_H_
6 #define NET_QUIC_IOVECTOR_H_ 6 #define NET_QUIC_IOVECTOR_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <algorithm> 9 #include <algorithm>
10 #include <vector> 10 #include <vector>
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 iovec_.push_back(tmp); 111 iovec_.push_back(tmp);
112 } 112 }
113 } 113 }
114 114
115 // Remove a number of bytes from the beginning of the IOVector. Since vector 115 // Remove a number of bytes from the beginning of the IOVector. Since vector
116 // I/O operations always occur at the beginning of the block list, a method 116 // I/O operations always occur at the beginning of the block list, a method
117 // to remove bytes at the end is not provided. 117 // to remove bytes at the end is not provided.
118 // It returns the number of bytes actually consumed (it'll only be smaller 118 // It returns the number of bytes actually consumed (it'll only be smaller
119 // than the requested number if the IOVector contains less data). 119 // than the requested number if the IOVector contains less data).
120 size_t Consume(size_t length) { 120 size_t Consume(size_t length) {
121 if (length == 0) return 0; 121 if (length == 0)
122 return 0;
122 123
123 size_t bytes_to_consume = length; 124 size_t bytes_to_consume = length;
124 std::vector<struct iovec>::iterator iter = iovec_.begin(); 125 std::vector<struct iovec>::iterator iter = iovec_.begin();
125 std::vector<struct iovec>::iterator end = iovec_.end(); 126 std::vector<struct iovec>::iterator end = iovec_.end();
126 for (; iter < end && bytes_to_consume >= iter->iov_len; ++iter) { 127 for (; iter < end && bytes_to_consume >= iter->iov_len; ++iter) {
127 bytes_to_consume -= iter->iov_len; 128 bytes_to_consume -= iter->iov_len;
128 } 129 }
129 iovec_.erase(iovec_.begin(), iter); 130 iovec_.erase(iovec_.begin(), iter);
130 if (iovec_.size() > 0 && bytes_to_consume != 0) { 131 if (iovec_.size() > 0 && bytes_to_consume != 0) {
131 iovec_[0].iov_base = 132 iovec_[0].iov_base =
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 // I/O operations. If the IOVector has no blocks appened, this function 165 // I/O operations. If the IOVector has no blocks appened, this function
165 // returns NULL. 166 // returns NULL.
166 struct iovec* iovec() { return !Empty() ? &iovec_[0] : NULL; } 167 struct iovec* iovec() { return !Empty() ? &iovec_[0] : NULL; }
167 168
168 // Const version. 169 // Const version.
169 const struct iovec* iovec() const { return !Empty() ? &iovec_[0] : NULL; } 170 const struct iovec* iovec() const { return !Empty() ? &iovec_[0] : NULL; }
170 171
171 // Returns a pointer to one past the last byte of the last block. If the 172 // Returns a pointer to one past the last byte of the last block. If the
172 // IOVector is empty, NULL is returned. 173 // IOVector is empty, NULL is returned.
173 const char* LastBlockEnd() const { 174 const char* LastBlockEnd() const {
174 return iovec_.size() > 0 ? 175 return iovec_.size() > 0 ? static_cast<char*>(iovec_.back().iov_base) +
175 static_cast<char *>(iovec_.back().iov_base) + iovec_.back().iov_len : 176 iovec_.back().iov_len
176 NULL; 177 : NULL;
177 } 178 }
178 179
179 // Returns the total number of bytes in the IOVector. 180 // Returns the total number of bytes in the IOVector.
180 size_t TotalBufferSize() const { return TotalIovecLength(iovec(), Size()); } 181 size_t TotalBufferSize() const { return TotalIovecLength(iovec(), Size()); }
181 182
182 void Resize(size_t count) { 183 void Resize(size_t count) { iovec_.resize(count); }
183 iovec_.resize(count);
184 }
185 184
186 private: 185 private:
187 std::vector<struct iovec> iovec_; 186 std::vector<struct iovec> iovec_;
188 187
189 // IOVector has value-semantics; copy and assignment are allowed. 188 // IOVector has value-semantics; copy and assignment are allowed.
190 // This class does not explicitly define copy/move constructors or the 189 // This class does not explicitly define copy/move constructors or the
191 // assignment operator to preserve compiler-generated copy/move constructors 190 // assignment operator to preserve compiler-generated copy/move constructors
192 // and assignment operators. Note that since IOVector does not own the 191 // and assignment operators. Note that since IOVector does not own the
193 // actual buffers that the struct iovecs point to, copies and assignments 192 // actual buffers that the struct iovecs point to, copies and assignments
194 // result in a shallow copy of the buffers; resulting IOVectors will point 193 // result in a shallow copy of the buffers; resulting IOVectors will point
195 // to the same copy of the underlying data. 194 // to the same copy of the underlying data.
196 }; 195 };
197 196
198 } // namespace net 197 } // namespace net
199 198
200 #endif // NET_QUIC_IOVECTOR_H_ 199 #endif // NET_QUIC_IOVECTOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698