blob: 86b729ab322438d2a515cf95013e2daaedfec806 [file] [log] [blame]
syntax = "proto3";
package cast.v2;
import "google/protobuf/empty.proto";
import "cast/cast_core/api/bindings/api_bindings.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/cast_message.proto";
import "cast/cast_core/api/v2/url_rewrite.proto";
import "cast/cast_core/api/web/message_channel.proto";
option optimize_for = LITE_RUNTIME;
// This service is implemented by the CastCore and used by Cast application in
// Runtime to report status and request additional application information. This
// service is scoped per application.
service CoreApplicationService {
// Returns application config. Idempotent call. Errors are signaled through
// the gRPC status code.
rpc GetConfig(GetConfigRequest) returns (GetConfigResponse);
// Send a Cast V2 message to core application.
rpc SendCastMessage(CastMessage) returns (CastMessageResponse);
// Notifies Cast Core on the application state changes. The callback must be
// called by the Runtime whenever the internal state of the application
// changes. Cast Core may discard any resources associated with the
// application upon failures.
rpc OnApplicationStatus(ApplicationStatus) returns (google.protobuf.Empty);
// Posts messages between MessagePorts. MessagePorts are connected using other
// services (e.g. ApiBindings), then registered with the
// MessageConnectorService to communicate over IPC.
rpc PostMessage(cast.web.Message) returns (cast.web.MessagePortStatus);
// Gets the list of bindings to early-inject into javascript at page load.
rpc GetAll(google.protobuf.Empty) returns (cast.bindings.GetAllResponse);
// Connects to a binding returned by GetAll.
rpc Connect(cast.bindings.ConnectRequest) returns (google.protobuf.Empty);
message GetConfigRequest {
// Cast session ID.
string cast_session_id = 1;
// RuntimeApplication service info.
cast.common.ServiceInfo runtime_application_service_info = 2;
message GetConfigResponse {
// Cast application config.
cast.common.ApplicationConfig application_config = 1;
// Initial rules to rewrite URL headers.
UrlRequestRewriteRules url_rewrite_rules = 2;
// CastMedia service info for this application in CastCore.
cast.common.ServiceInfo cast_media_service_info = 3;
// Contains information about an application status in the runtime.
message ApplicationStatus {
// The Cast session ID whose application status changed.
string cast_session_id = 1;
// Application state.
enum State {
STATE_UNDEFINED = 0; // Added to avoid empty |state| value.
STARTED = 1; // Notifies that application has successfully started.
STOPPED = 2; // Notified that application has stopped or failed to
// start. The |stop_reason| will be populated.
State state = 2;
// Reason why the application was stopped. Only valid when |state| is STOPPED.
enum StopReason {
REASON_UNDEFINED = 0; // Added to avoid empty |stop_reason| value.
APPLICATION_REQUEST = 1; // Receiver application stopped itself.
IDLE_TIMEOUT = 2; // Runtime stopped an idle application.
USER_REQUEST = 3; // User closed the application, e.g.
// via remote control or system UI. (Normally this
// is handled by Cast Core).
HTTP_ERROR = 4; // HTTP error while loading the Application. The
// |http_response_code| will be populated.
RUNTIME_ERROR = 5; // Unrecoverable error in the runtime.
StopReason stop_reason = 3;
// HTTP response code if Application URL failed to load. Only valid when
// |stop_reason| is HTTP_ERROR.
int32 http_response_code = 4;