// Copyright (c) 2012 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.

// Internal message types that should not be seen outside the protocol
// directory.

syntax = "proto2";

import "control.proto";
import "event.proto";

option optimize_for = LITE_RUNTIME;

package remoting.protocol;

// Represents a message being sent on the control channel.
message ControlMessage {
  optional ClipboardEvent clipboard_event = 1;
  optional ClientResolution client_resolution = 2;
  optional CursorShapeInfo cursor_shape = 4;
  optional VideoControl video_control = 3;
  optional AudioControl audio_control = 5;
  optional Capabilities capabilities = 6;
  optional PairingRequest pairing_request = 7;
  optional PairingResponse pairing_response = 8;
  optional ExtensionMessage extension_message = 9;
  optional VideoLayout video_layout = 10;
}

// Defines an event message on the event channel.
message EventMessage {
  // Client's timestamp used to estimate roundtrip latency.
  optional int64 timestamp = 1;

  optional KeyEvent key_event = 3;
  optional MouseEvent mouse_event = 4;
  optional TextEvent text_event = 5;
  optional TouchEvent touch_event = 6;
}
