// Copyright 2017 The Chromium Authors
// 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;
}
}