aboutsummaryrefslogtreecommitdiff
path: root/cast/cast_core/api/runtime/runtime_service.proto
blob: 084852ebcff941ebdf6db5736e7322bd1aeebe57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// 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 .proto was automatically generated. ****
syntax = "proto3";

package cast.runtime;

import "google/protobuf/duration.proto";
import "google/protobuf/empty.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 {
  // Launches 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. 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 (google.protobuf.Empty);

  // Stops the metrics recorder, which may also attempt to flush.
  rpc StopMetricsRecorder(google.protobuf.Empty)
      returns (google.protobuf.Empty);
}

message StartMetricsRecorderRequest {
  // Metrics service info.
  cast.common.ServiceInfo metrics_recorder_service_info = 1;
}

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 {}