You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
4.7 KiB
118 lines
4.7 KiB
// Copyright (C) 2018 The Android Open Source Project
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
// Note that if you add/remove methods in this file you must update
|
|
// the metrics sql as well by running ./android/scripts/gen-grpc-sql.py
|
|
//
|
|
// Please group deleted methods in a block including the date (MM/DD/YY)
|
|
// it was removed. This enables us to easily keep metrics around after removal
|
|
//
|
|
// List of deleted methods
|
|
// rpc iWasDeleted (03/12/12)
|
|
// ...
|
|
syntax = "proto3";
|
|
|
|
option java_multiple_files = true;
|
|
option java_package = "com.android.emulator.control";
|
|
option objc_class_prefix = "AEC";
|
|
|
|
package android.emulation.control;
|
|
import "google/protobuf/empty.proto";
|
|
|
|
// An RTC service lets you interact with the emulator through WebRTC
|
|
// Note that this is currently an experimental feature, and that the
|
|
// service definition might change without notice. Use at your own risk!
|
|
//
|
|
// The following endpoints are needed to establish the webrtc protocol
|
|
// Due to limitiations in Javascript we cannot make use of bidirectional
|
|
// endpoints See this [blog](https://grpc.io/blog/state-of-grpc-web) for
|
|
// details.
|
|
service Rtc {
|
|
// This function will generate a new identifier that the client
|
|
// should use for further interaction. It will initiate the
|
|
// JSEP protocol on the server side.
|
|
rpc requestRtcStream(google.protobuf.Empty) returns (RtcId) {}
|
|
|
|
// Sends the given JsepMsg to the server. The RtcId in the
|
|
// message should point to an active stream negotiation in
|
|
// progress, otherwise the message will be ignored.
|
|
rpc sendJsepMessage(JsepMsg) returns (google.protobuf.Empty) {}
|
|
|
|
// Reads an available jsep messages for the given client id,
|
|
// blocking until one becomes available. Do not use the polling version
|
|
// above if you opt for this one.
|
|
//
|
|
// The ice candidates for example will trickle in on this callback,
|
|
// as will the SDP negotation.
|
|
rpc receiveJsepMessages(RtcId) returns (stream JsepMsg) {}
|
|
|
|
|
|
// [DEPRECATED] This is only here as the go grpc webproxy used
|
|
// by fuchsia does not support server side streaming. This method
|
|
// will be removed in the future and should not be relied upon.
|
|
//
|
|
// Reads an available jsep messages for the given client id,
|
|
// blocking until one becomes available. Do not use the polling version
|
|
// above if you opt for this one.
|
|
//
|
|
// The ice candidates for example will trickle in on this callback,
|
|
// as will the SDP negotation.
|
|
rpc receiveJsepMessage(RtcId) returns (JsepMsg) {}
|
|
}
|
|
|
|
message RtcId {
|
|
// The unique identifier of this connection. You will have to use the
|
|
// same identifier when sending/receiving messages. The server will
|
|
// generate a guid when receiving the start message.
|
|
string guid = 1;
|
|
}
|
|
|
|
message JsepMsg {
|
|
// The unique identifier of this connection. You will have to use the
|
|
// same identifier when sending/receiving messages. The server will
|
|
// generate a guid when receiving the start message.
|
|
RtcId id = 1;
|
|
// The JSON payload. This usually can be directly handled by the
|
|
// Javascript library.
|
|
//
|
|
// The dictionary can contain the following properties
|
|
//
|
|
// - bye:
|
|
// You can hang up now. No new message expected for you.
|
|
// The server has stopped the RTC stream.
|
|
//
|
|
// - start:
|
|
// An RTCConfiguration dictionary providing options to
|
|
// configure the new connection. This can include the
|
|
// turn configuration the serve is using. This dictionary can be
|
|
// passed in directly to the
|
|
// [RTCPeerConnection](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection)
|
|
// object.
|
|
//
|
|
// - candidate:
|
|
// The WebRTC API's RTCIceCandidateInit dictionary, which
|
|
// contains the information needed to fundamentally describe an
|
|
// RTCIceCandidate. See
|
|
// [RTCIceCandidate](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate)
|
|
// and [Session
|
|
// Lifetime](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Session_lifetime)
|
|
// for more details.
|
|
//
|
|
// - sdp:
|
|
// RTCSessionDescriptionInit dictionary containing the values
|
|
// to that can be assigned to a
|
|
// [RTCSessionDescription](https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription)
|
|
string message = 2;
|
|
}
|