Home | History | Annotate | Download | only in spdy
      1 // 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 
      7 namespace net {
      8 
      9 SpdyPinnableBufferPiece::SpdyPinnableBufferPiece()
     10     : buffer_(0), length_(0) {}
     11 
     12 SpdyPinnableBufferPiece::~SpdyPinnableBufferPiece() {}
     13 
     14 void 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 
     22 void 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
     35