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