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#ifndef DEVICE_SERIAL_BUFFER_H_
6#define DEVICE_SERIAL_BUFFER_H_
7
8#include "base/basictypes.h"
9
10namespace device {
11
12// A fixed-size read-only buffer. The data-reader should call Done() when it is
13// finished reading bytes from the buffer. Alternatively, the reader can report
14// an error by calling DoneWithError() with the number of bytes read and the
15// error it wishes to report.
16class ReadOnlyBuffer {
17 public:
18  virtual ~ReadOnlyBuffer();
19  virtual const char* GetData() = 0;
20  virtual uint32_t GetSize() = 0;
21  virtual void Done(uint32_t bytes_read) = 0;
22  virtual void DoneWithError(uint32_t bytes_read, int32_t error) = 0;
23};
24
25// A fixed-size writable buffer. The data-writer should call Done() when it is
26// finished writing bytes to the buffer. Alternatively, the writer can report
27// an error by calling DoneWithError() with the number of bytes written and the
28// error it wishes to report.
29class WritableBuffer {
30 public:
31  virtual ~WritableBuffer();
32  virtual char* GetData() = 0;
33  virtual uint32_t GetSize() = 0;
34  virtual void Done(uint32_t bytes_written) = 0;
35  virtual void DoneWithError(uint32_t bytes_written, int32_t error) = 0;
36};
37
38}  // namespace device
39
40#endif  // DEVICE_SERIAL_BUFFER_H_
41