15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef DEVICE_SERIAL_BUFFER_H_ 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define DEVICE_SERIAL_BUFFER_H_ 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/basictypes.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace device { 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// A fixed-size read-only buffer. The data-reader should call Done() when it is 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// finished reading bytes from the buffer. Alternatively, the reader can report 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// an error by calling DoneWithError() with the number of bytes read and the 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// error it wishes to report. 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ReadOnlyBuffer { 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ~ReadOnlyBuffer(); 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual const char* GetData() = 0; 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual uint32_t GetSize() = 0; 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void Done(uint32_t bytes_read) = 0; 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void DoneWithError(uint32_t bytes_read, int32_t error) = 0; 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// A fixed-size writable buffer. The data-writer should call Done() when it is 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// finished writing bytes to the buffer. Alternatively, the writer can report 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// an error by calling DoneWithError() with the number of bytes written and the 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// error it wishes to report. 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class WritableBuffer { 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ~WritableBuffer(); 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual char* GetData() = 0; 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual uint32_t GetSize() = 0; 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void Done(uint32_t bytes_written) = 0; 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void DoneWithError(uint32_t bytes_written, int32_t error) = 0; 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace device 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // DEVICE_SERIAL_BUFFER_H_ 41