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

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package remoting.protocol;

// Composite message type for messages sent over file-transfer data channels.
// Next Id: 7
message FileTransfer {
  // Sender->receiver message containing file metadata. Always sent before any
  // Data messages.
  // Next Id: 3
  message Metadata {
    optional string filename = 1;
    // Note: there may be edge cases in which the file is transmitted
    // successfully but doesn't exactly match the number of bytes reported here.
    // Thus, the implementation should wait for the End message to determine
    // when the file is complete and not rely on the exact size.
    optional uint64 size = 2;
  }

  // Sender->receiver message containing a chunk of file data.
  // Next Id: 2
  message Data { optional bytes data = 1; }

  // Sender->receiver message sent after the last data chunk, signaling that
  // the transfer is complete.
  // Next Id: 1
  message End {}

  // Receiver->sender message sent in response to the End message, indicating
  // that the file has been successfully saved.
  // Next Id: 1
  message Success {}

  // Receiver->sender message sent requesting the sender to select and send a
  // file. This must be the first message on the connection.
  // Next Id: 1
  message RequestTransfer {}

  // Bidirectional message aborting the transfer due to an error or user
  // cancellation. This may be sent by the sender to signal a read error, by the
  // receiver to signal a write error, or by either side to signal any of the
  // myriad of other things that can go wrong while attempting to transfer a
  // file. When Error is received, no more messages relating to the transfer
  // should be sent, but the end sending the error should be prepared to handle
  // any messages that may already be on the wire.
  // Next Id: 6
  message Error {
    enum Type {
      UNSPECIFIED = 0;
      CANCELED = 1;
      UNEXPECTED_ERROR = 2;
      PROTOCOL_ERROR = 3;
      PERMISSION_DENIED = 4;
      OUT_OF_DISK_SPACE = 5;
      IO_ERROR = 6;
      NOT_LOGGED_IN = 7;
    }

    // An error category to be used to select a user-displayed error message.
    optional Type type = 1;
    // The error code returned by the failed API call (if applicable).
    optional int32 api_error_code = 2;
    // The function in which the error occurred.
    optional string function = 3;
    // The source file in which the error occurred.
    optional string source_file = 4;
    // The line number on which the error occurred.
    optional uint32 line_number = 5;
  }

  oneof message {
    Metadata metadata = 1;
    Data data = 2;
    End end = 3;
    Success success = 4;
    RequestTransfer request_transfer = 5;
    Error error = 6;
  }
}
