blob: 01f8d1db1436b358686fb28c6ce1537b74d1ab9e [file] [log] [blame]
[email protected]fd567fb2014-02-27 18:22:421// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "net/spdy/spdy_pinnable_buffer_piece.h"
6
7namespace net {
8
9SpdyPinnableBufferPiece::SpdyPinnableBufferPiece()
10 : buffer_(0), length_(0) {}
11
12SpdyPinnableBufferPiece::~SpdyPinnableBufferPiece() {}
13
14void SpdyPinnableBufferPiece::Pin() {
15 if (!storage_ && buffer_ != NULL && length_ != 0) {
16 storage_.reset(new char[length_]);
17 std::copy(buffer_, buffer_ + length_, storage_.get());
18 buffer_ = storage_.get();
19 }
20}
21
22void SpdyPinnableBufferPiece::Swap(SpdyPinnableBufferPiece* other) {
23 size_t length = length_;
24 length_ = other->length_;
25 other->length_ = length;
26
27 const char* buffer = buffer_;
28 buffer_ = other->buffer_;
29 other->buffer_ = buffer;
30
31 storage_.swap(other->storage_);
32}
33
34} // namespace net