// Copyright 2014 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.

module device.serial;

import "data_stream.mojom";

// A serialized form of a DataSender.
struct SerializedDataSender {
  // The control channel to the DataSink to which this DataSender sends data.
  DataSink sink;

  // The error to report for sends in progress when a fatal error occurs.
  int32 fatal_error_value;
};

// A pending receive error.
struct PendingReceiveError {
  // The value of the error.
  int32 error;

  // The location of the error.
  uint32 offset;
};

// A serialized form of a DataReceiver.
struct SerializedDataReceiver {
  // The control channel to the DataSource from which this DataReceiver receives
  // data.
  DataSource source;
  // DataSourceClient&
  handle<message_pipe> client;

  // The error to report for a receive in progress when a fatal error occurs.
  int32 fatal_error_value;

  // The number of bytes this DataReceiver has received from the DataSource.
  uint32 bytes_received;

  // Whether a Resume() message needs to be sent to the DataSource for it to
  // resume sending data.
  bool paused;

  // The pending receive error if there is one.
  PendingReceiveError? pending_error;

  array<array<uint8>> pending_data;
};
