Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / device / serial / buffer.h
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
10 namespace 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.
16 class 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.
29 class 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_