import "steammessages_base.proto";
import "steammessages_unified_base.steamclient.proto";
import "clientmetrics.proto";
option cc_generic_services = true;
enum ESteamPipeWorkType {
k_ESteamPipeClientWorkType_Invalid = 0;
k_ESteamPipeClientWorkType_StageFromChunkStores = 1;
}
enum ESteamPipeOperationType {
k_ESteamPipeOperationType_Invalid = 0;
k_ESteamPipeOperationType_DecryptCPU = 1;
k_ESteamPipeOperationType_DiskRead = 2;
k_ESteamPipeOperationType_DiskWrite = 3;
}
message CClientMetrics_AppInterfaceCreation {
optional string raw_version = 1;
optional string requested_interface_type = 2;
}
message CClientMetrics_AppInterfaceMethodCounts {
optional string interface_name = 1;
optional string method_name = 2;
optional uint32 call_count = 3;
}
message CClientMetrics_AppInterfaceStats_Notification {
optional uint64 game_id = 1;
repeated .CClientMetrics_AppInterfaceCreation interfaces_created = 2;
repeated .CClientMetrics_AppInterfaceMethodCounts methods_called = 3;
optional uint32 session_length_seconds = 4;
}
message CClientMetrics_IPv6Connectivity_Result {
optional uint32 protocol_tested = 1;
optional uint32 connectivity_state = 2;
}
message CClientMetrics_IPv6Connectivity_Notification {
optional uint32 cell_id = 1;
repeated .CClientMetrics_IPv6Connectivity_Result results = 2;
optional bool private_ip_is_rfc6598 = 3;
}
message CClientMetrics_SteamPipeWorkStats_Operation {
optional .ESteamPipeOperationType type = 1 [default = k_ESteamPipeOperationType_Invalid];
optional uint32 num_ops = 2;
optional uint64 num_bytes = 3;
optional uint64 busy_time_ms = 4;
optional uint64 idle_time_ms = 5;
optional uint64 sum_run_time_ms = 6;
optional uint64 sum_wait_time_ms = 7;
}
message CClientMetrics_SteamPipeWorkStats_Notification {
optional uint32 appid = 1;
optional uint32 depotid = 2;
optional .ESteamPipeWorkType work_type = 3 [default = k_ESteamPipeClientWorkType_Invalid];
repeated .CClientMetrics_SteamPipeWorkStats_Operation operations = 4;
optional uint32 hardware_type = 5;
}
message CClientMetrics_ReportReactUsage_Notification {
message RouteData {
optional string route = 1;
optional uint32 count = 2;
}
message ComponentData {
optional string component = 1;
optional uint32 count = 2;
}
message ActionData {
optional string action = 1;
optional uint32 count = 2;
}
optional string product = 1;
optional string version = 2;
repeated .CClientMetrics_ReportReactUsage_Notification.RouteData routes = 3;
repeated .CClientMetrics_ReportReactUsage_Notification.ComponentData components = 4;
repeated .CClientMetrics_ReportReactUsage_Notification.ActionData actions = 5;
}
message CClientMetrics_ReportClientError_Notification {
message Error {
optional string identifier = 1;
optional string message = 2;
optional uint32 count = 3;
}
optional string product = 1;
optional string version = 2;
repeated .CClientMetrics_ReportClientError_Notification.Error errors = 3;
}
message CClientMetrics_ClientBootstrap_Notification {
optional .CClientMetrics_ClientBootstrap_Summary summary = 1;
}
message CClientMetrics_DownloadRates_Notification {
message StatsInfo {
optional uint32 source_type = 1;
optional uint32 source_id = 2;
optional uint64 bytes = 3;
optional string host_name = 4;
optional uint64 microseconds = 5;
optional bool used_ipv6 = 6;
optional bool proxied = 7;
optional bool used_http2 = 8;
optional uint32 cache_hits = 9;
optional uint32 cache_misses = 10;
optional uint64 hit_bytes = 11;
optional uint64 miss_bytes = 12;
}
optional uint32 cell_id = 1;
repeated .CClientMetrics_DownloadRates_Notification.StatsInfo stats = 2;
optional uint32 throttling_kbps = 3;
}
message CClientMetrics_ContentValidation_Notification {
optional int32 validation_result = 1;
optional uint32 app_id = 2;
optional bool staged_files = 3;
optional bool user_initiated = 4;
optional bool early_out = 5;
optional uint32 chunks_scanned = 6;
optional uint32 chunks_corrupt = 7;
optional uint64 bytes_scanned = 8;
optional uint64 chunk_bytes_corrupt = 9;
optional uint64 total_file_size_corrupt = 10;
}
message CClientMetrics_CloudAppSyncStats_Notification {
optional uint32 app_id = 1;
optional uint32 platform_type = 2;
optional bool preload = 3;
optional bool blocking_app_launch = 4;
optional uint32 files_uploaded = 5;
optional uint32 files_downloaded = 6;
optional uint32 files_deleted = 7;
optional uint64 bytes_uploaded = 8;
optional uint64 bytes_downloaded = 9;
optional uint64 microsec_total = 10;
optional uint64 microsec_init_caches = 11;
optional uint64 microsec_validate_state = 12;
optional uint64 microsec_ac_launch = 13;
optional uint64 microsec_ac_prep_user_files = 14;
optional uint64 microsec_ac_exit = 15;
optional uint64 microsec_build_sync_list = 16;
optional uint64 microsec_delete_files = 17;
optional uint64 microsec_download_files = 18;
optional uint64 microsec_upload_files = 19;
optional uint32 hardware_type = 20;
optional uint32 files_managed = 21;
}
message CClientMetrics_ContentDownloadResponse_Counts_Notification {
optional uint32 cell_id = 1;
optional .CClientMetrics_ContentDownloadResponse_Hosts data = 2;
}
message CClientMetrics_ReportClientArgs_Notification {
repeated string client_args = 1;
optional bool gpu_webview_regkey_disabled = 2;
optional bool suppress_gpu_chrome = 3;
optional bool browser_not_supported = 4;
optional bool hw_accel_video_regkey_disabled = 5;
optional bool mini_mode_enabled = 6;
optional bool fps_counter_enabled = 7;
optional bool library_low_bandwidth_mode_enabled = 8;
optional bool library_low_perf_mode_enabled = 9;
}
service ClientMetrics {
option (service_description) = "A service for client-reported metrics";
rpc ClientAppInterfaceStatsReport (.CClientMetrics_AppInterfaceStats_Notification) returns (.NoResponse);
rpc ClientIPv6ConnectivityReport (.CClientMetrics_IPv6Connectivity_Notification) returns (.NoResponse);
rpc SteamPipeWorkStatsReport (.CClientMetrics_SteamPipeWorkStats_Notification) returns (.NoResponse);
rpc ReportReactUsage (.CClientMetrics_ReportReactUsage_Notification) returns (.NoResponse);
rpc ReportClientError (.CClientMetrics_ReportClientError_Notification) returns (.NoResponse);
rpc ClientBootstrapReport (.CClientMetrics_ClientBootstrap_Notification) returns (.NoResponse);
rpc ClientDownloadRatesReport (.CClientMetrics_DownloadRates_Notification) returns (.NoResponse);
rpc ClientContentValidationReport (.CClientMetrics_ContentValidation_Notification) returns (.NoResponse);
rpc ClientCloudAppSyncStats (.CClientMetrics_CloudAppSyncStats_Notification) returns (.NoResponse);
rpc ClientDownloadResponseCodeCounts (.CClientMetrics_ContentDownloadResponse_Counts_Notification) returns (.NoResponse);
rpc ReportClientArgs (.CClientMetrics_ReportClientArgs_Notification) returns (.NoResponse);
}