// Copyright 2021 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. // // **** DO NOT EDIT - this file was automatically generated. **** syntax = "proto3"; package cast.runtime; import "google/protobuf/duration.proto"; import "cast/cast_core/api/common/application_config.proto"; import "cast/cast_core/api/common/service_info.proto"; import "cast/cast_core/api/v2/url_rewrite.proto"; option optimize_for = LITE_RUNTIME; // Runtime service is hosted in Runtime. // // This service is called by CastCore after Runtime starts up. service RuntimeService { // Loads a Cast application. The runtime must start its // RuntimeApplicationService on runtime_application_service_info. rpc LoadApplication(LoadApplicationRequest) returns (LoadApplicationResponse); // Launches a Cast application. The application must connect to the // CoreApplicationService via core_application_service_info. rpc LaunchApplication(LaunchApplicationRequest) returns (LaunchApplicationResponse); // Stops a Cast application identified by the app_id, cast_session_id. // If both app_id and cast_session_id are omitted, the current, "foreground" // application is stopped. rpc StopApplication(StopApplicationRequest) returns (StopApplicationResponse); // Requests runtime to send a heartbeat in a stream. The use of server-side // streaming allows Core to know for sure that runtime is still running. In // case of a crash, the gRPC stream will error with UNAVAILABLE error. Cast // Core calls this API if the runtime supports heartbeat in // RuntimeCapabilities. rpc Heartbeat(HeartbeatRequest) returns (stream HeartbeatResponse); // Provides information need by the runtime to start recording metrics via // the core. rpc StartMetricsRecorder(StartMetricsRecorderRequest) returns (StartMetricsRecorderResponse); // Stops the metrics recorder, which may also attempt to flush. rpc StopMetricsRecorder(StopMetricsRecorderRequest) returns (StopMetricsRecorderResponse); } message LoadApplicationRequest { // Cast application config. cast.common.ApplicationConfig application_config = 1; // Initial rules to rewrite URLs and headers. cast.v2.UrlRequestRewriteRules url_rewrite_rules = 2; // Cast session id used to setup a connection and pull the config from core // application service. string cast_session_id = 3; // RuntimeApplication service info. The endpoint is generated by Cast Core and // must be used by the Runtime to bind the RuntimeApplication service. cast.common.ServiceInfo runtime_application_service_info = 4; } // Info relevant to a V2 channel between the runtime and cast core. message V2ChannelInfo { // If set, only messages within these namespaces will be sent to the runtime. // If empty, all V2 messages will be sent to the runtime regardless of // namespace. repeated string requested_namespaces = 1; } // Info relevant to a MessagePort channel between the runtime and cast core. message MessagePortInfo {} message LoadApplicationResponse { // One of these fields must be set. This specifies what type of communication // channel should be used to communicate between the runtime and cast core for // the given application. oneof channel_type { V2ChannelInfo v2_info = 1; MessagePortInfo message_port_info = 2; } } message LaunchApplicationRequest { // CoreApplication service info. cast.common.ServiceInfo core_application_service_info = 1; // DEPRECATED string cast_session_id = 2 [deprecated = true]; // DEPRECATED cast.common.ServiceInfo runtime_application_service_info = 3 [deprecated = true]; // CastMedia service info for this application in CastCore. cast.common.ServiceInfo cast_media_service_info = 4; } // Returned by the runtime in response to a launch application request. message LaunchApplicationResponse {} message StopApplicationRequest { // Application id. string app_id = 1; // Application session id. string cast_session_id = 2; } message StopApplicationResponse { // If stop application was successful, the application ID that was stopped. string app_id = 1; // If stop application was successful, the Cast session ID that was stopped. string cast_session_id = 2; } message HeartbeatRequest { // Period between two heartbeat responses. The Core will wait for double of // this time to avoid network glitches. The minimum value is 5 seconds. google.protobuf.Duration heartbeat_period = 1; } message HeartbeatResponse {} message StartMetricsRecorderRequest { // Metrics service info. cast.common.ServiceInfo metrics_recorder_service_info = 1; } message StartMetricsRecorderResponse {} message StopMetricsRecorderRequest {} message StopMetricsRecorderResponse {}