blob: 5c8c8da3b477dd38e4b4cda15d8aeb104a82a52e [file] [log] [blame]
syntax = "proto3";
package cast.runtime;
import "google/protobuf/duration.proto";
import "cast/cast_core/api/common/service_info.proto";
option optimize_for = LITE_RUNTIME;
// Runtime service is hosted in Runtime.
//
// This service is called by CastCore after Runtime starts up.
service RuntimeService {
// Launch a Cast application. The application must connect to the
// CoreApplicationService based on cast_protocol and
// core_application_endpoint, and provide its endpoint.
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.
rpc Heartbeat(HeartbeatRequest) returns (stream HeartbeatResponse);
}
message LaunchApplicationRequest {
// CoreApplication service info.
cast.common.ServiceInfo core_application_service_info = 1;
// Cast session id used to setup a connection and pull the config from core
// application service.
string cast_session_id = 2;
}
// 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 {}