| // 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; |
| } |