| Index: net/flip/flip_io_buffer.h
|
| ===================================================================
|
| --- net/flip/flip_io_buffer.h (revision 0)
|
| +++ net/flip/flip_io_buffer.h (revision 0)
|
| @@ -0,0 +1,59 @@
|
| +// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef NET_FLIP_FLIP_IO_BUFFER_H_
|
| +#define NET_FLIP_FLIP_IO_BUFFER_H_
|
| +
|
| +#include "base/ref_counted.h"
|
| +#include "net/base/io_buffer.h"
|
| +
|
| +namespace net {
|
| +
|
| +class FlipStream;
|
| +
|
| +// A class for managing FLIP IO buffers. These buffers need to be prioritized
|
| +// so that the FlipSession sends them in the right order. Further, they need
|
| +// to track the FlipStream which they are associated with so that incremental
|
| +// completion of the IO can notify the appropriate stream of completion.
|
| +class FlipIOBuffer {
|
| + public:
|
| + // Constructor
|
| + // |buffer| is the actual data buffer.
|
| + // |priority| is the priority of this buffer. Lower numbers are higher
|
| + // priority.
|
| + // |stream| is a pointer to the stream which is managing this buffer.
|
| + FlipIOBuffer(IOBufferWithSize* buffer, int priority, FlipStream* stream)
|
| + : buffer_(buffer),
|
| + priority_(priority),
|
| + position_(++order_),
|
| + stream_(stream) {
|
| + }
|
| + FlipIOBuffer() : priority_(0), stream_(NULL) {}
|
| +
|
| + // Accessors.
|
| + IOBuffer* buffer() const { return buffer_; }
|
| + size_t size() const { return buffer_->size(); }
|
| + void release() { buffer_ = NULL; }
|
| + int priority() const { return priority_; }
|
| + FlipStream* stream() const { return stream_; }
|
| +
|
| + // Comparison operator to support sorting.
|
| + bool operator<(const FlipIOBuffer& other) const {
|
| + if (priority_ != other.priority_)
|
| + return priority_ > other.priority_;
|
| + return position_ > other.position_;
|
| + }
|
| +
|
| + private:
|
| + scoped_refptr<IOBufferWithSize> buffer_;
|
| + int priority_;
|
| + uint64 position_;
|
| + FlipStream* stream_;
|
| + static uint64 order_; // Maintains a FIFO order for equal priorities.
|
| +};
|
| +
|
| +} // namespace net
|
| +
|
| +#endif // NET_FLIP_FLIP_IO_BUFFER_H_
|
| +
|
|
|
| Property changes on: net\flip\flip_io_buffer.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|