diff options
author | garykac@google.com <garykac@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-07 19:58:23 +0000 |
---|---|---|
committer | garykac@google.com <garykac@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-07 19:58:23 +0000 |
commit | cb3b1f93130040a150e7fcc57cd4d5a75569685a (patch) | |
tree | ff93665e3c1478c61663d1107cd42dc25b31448d /remoting/base/multiple_array_input_stream.h | |
parent | b0110e822ac2b2db56d1b1542aad06da573cd544 (diff) | |
download | chromium_src-cb3b1f93130040a150e7fcc57cd4d5a75569685a.zip chromium_src-cb3b1f93130040a150e7fcc57cd4d5a75569685a.tar.gz chromium_src-cb3b1f93130040a150e7fcc57cd4d5a75569685a.tar.bz2 |
Copy the (early prototype of) remoting in Chrome into the public tree.
At the moment, this is a semi-functional demo.
BUG=none
TEST=build/run all unittests on linux
Review URL: http://codereview.chromium.org/2690003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49087 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/base/multiple_array_input_stream.h')
-rw-r--r-- | remoting/base/multiple_array_input_stream.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/remoting/base/multiple_array_input_stream.h b/remoting/base/multiple_array_input_stream.h new file mode 100644 index 0000000..a1b5f01 --- /dev/null +++ b/remoting/base/multiple_array_input_stream.h @@ -0,0 +1,49 @@ +// Copyright (c) 2010 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 REMOTING_BASE_MULTIPLE_ARRAY_INPUT_STREAM_H_ +#define REMOTING_BASE_MULTIPLE_ARRAY_INPUT_STREAM_H_ + +#include "base/basictypes.h" +#include "base/scoped_ptr.h" +#include "google/protobuf/io/zero_copy_stream.h" + +namespace remoting { + +// A MultipleArrayInputStream provides a ZeroCopyInputStream with multiple +// backing arrays. +class MultipleArrayInputStream : + public google::protobuf::io::ZeroCopyInputStream { + public: + // Construct a MultipleArrayInputStream with |count| backing arrays. + // TODO(hclam): Consider adding block size to see if it has a performance + // gain. + explicit MultipleArrayInputStream(int count); + virtual ~MultipleArrayInputStream(); + + virtual bool Next(const void** data, int* size); + virtual void BackUp(int count); + virtual bool Skip(int count); + virtual int64 ByteCount() const; + + // Set the n-th buffer to be |buffer|. + void SetBuffer(int n, const uint8* buffer, int size); + + private: + scoped_array<const uint8*> buffers_; + scoped_array<int> buffer_sizes_; + + const int buffer_count_; + + int current_buffer_; + int current_buffer_offset_; + int position_; + int last_returned_size_; + + DISALLOW_COPY_AND_ASSIGN(MultipleArrayInputStream); +}; + +} // namespace remoting + +#endif // REMOTING_BASE_MULTIPLE_ARRAY_INPUT_STREAM_H_ |