Add ConnectionAttemptMetadata for ConnectionAttempt in AnalyticsRecorder.

PiperOrigin-RevId: 413682624
This commit is contained in:
edwinwu
2021-12-02 08:17:33 -08:00
committed by Copybara-Service
parent 28ed3c75a4
commit b48610144b
13 changed files with 356 additions and 44 deletions
+93 -4
View File
@@ -43,12 +43,14 @@ using ::location::nearby::proto::connections::CONNECTION_CLOSED;
using ::location::nearby::proto::connections::ConnectionAttemptDirection;
using ::location::nearby::proto::connections::ConnectionAttemptResult;
using ::location::nearby::proto::connections::ConnectionAttemptType;
using ::location::nearby::proto::connections::ConnectionBand;
using ::location::nearby::proto::connections::ConnectionRequestResponse;
using ::location::nearby::proto::connections::ConnectionsStrategy;
using ::location::nearby::proto::connections::ConnectionTechnology;
using ::location::nearby::proto::connections::DisconnectionReason;
using ::location::nearby::proto::connections::DISCOVERER;
using ::location::nearby::proto::connections::EventType;
using ::location::nearby::proto::connections::ERROR_CODE;
using ::location::nearby::proto::connections::EventType;
using ::location::nearby::proto::connections::FILE;
using ::location::nearby::proto::connections::IGNORED;
using ::location::nearby::proto::connections::INCOMING;
@@ -247,7 +249,8 @@ void AnalyticsRecorder::OnLocalEndpointRejected(
void AnalyticsRecorder::OnIncomingConnectionAttempt(
ConnectionAttemptType type, Medium medium, ConnectionAttemptResult result,
absl::Duration duration, const std::string &connection_token) {
absl::Duration duration, const std::string &connection_token,
ConnectionAttemptMetadataParams *connection_attempt_metadata_params) {
MutexLock lock(&mutex_);
if (!CanRecordAnalyticsLocked("OnIncomingConnectionAttempt")) {
return;
@@ -265,12 +268,44 @@ void AnalyticsRecorder::OnIncomingConnectionAttempt(
connection_attempt->set_medium(medium);
connection_attempt->set_attempt_result(result);
connection_attempt->set_connection_token(connection_token);
ConnectionAttemptMetadataParams default_params = {};
if (connection_attempt_metadata_params == nullptr) {
connection_attempt_metadata_params = &default_params;
}
auto *connection_attempt_metadata =
connection_attempt->mutable_connection_attempt_metadata();
connection_attempt_metadata->set_technology(
connection_attempt_metadata_params->technology);
connection_attempt_metadata->set_band(
connection_attempt_metadata_params->band);
connection_attempt_metadata->set_frequency(
connection_attempt_metadata_params->frequency);
connection_attempt_metadata->set_network_operator(
connection_attempt_metadata_params->network_operator);
connection_attempt_metadata->set_country_code(
connection_attempt_metadata_params->country_code);
connection_attempt_metadata->set_frequency(
connection_attempt_metadata_params->frequency);
connection_attempt_metadata->set_is_tdls_used(
connection_attempt_metadata_params->is_tdls_used);
connection_attempt_metadata->set_wifi_hotspot_status(
connection_attempt_metadata_params->wifi_hotspot_enabled);
connection_attempt_metadata->set_try_counts(
connection_attempt_metadata_params->try_count);
connection_attempt_metadata->set_max_tx_speed(
connection_attempt_metadata_params->max_wifi_tx_speed);
connection_attempt_metadata->set_max_rx_speed(
connection_attempt_metadata_params->max_wifi_rx_speed);
connection_attempt_metadata->set_wifi_channel_width(
connection_attempt_metadata_params->channel_width);
}
void AnalyticsRecorder::OnOutgoingConnectionAttempt(
const std::string &remote_endpoint_id, ConnectionAttemptType type,
Medium medium, ConnectionAttemptResult result, absl::Duration duration,
const std::string &connection_token) {
const std::string &connection_token,
ConnectionAttemptMetadataParams *connection_attempt_metadata_params) {
MutexLock lock(&mutex_);
if (!CanRecordAnalyticsLocked("OnOutgoingConnectionAttempt")) {
return;
@@ -288,6 +323,38 @@ void AnalyticsRecorder::OnOutgoingConnectionAttempt(
connection_attempt->set_medium(medium);
connection_attempt->set_attempt_result(result);
connection_attempt->set_connection_token(connection_token);
ConnectionAttemptMetadataParams default_params = {};
if (connection_attempt_metadata_params == nullptr) {
connection_attempt_metadata_params = &default_params;
}
auto *connection_attempt_metadata =
connection_attempt->mutable_connection_attempt_metadata();
connection_attempt_metadata->set_technology(
connection_attempt_metadata_params->technology);
connection_attempt_metadata->set_band(
connection_attempt_metadata_params->band);
connection_attempt_metadata->set_frequency(
connection_attempt_metadata_params->frequency);
connection_attempt_metadata->set_network_operator(
connection_attempt_metadata_params->network_operator);
connection_attempt_metadata->set_country_code(
connection_attempt_metadata_params->country_code);
connection_attempt_metadata->set_frequency(
connection_attempt_metadata_params->frequency);
connection_attempt_metadata->set_is_tdls_used(
connection_attempt_metadata_params->is_tdls_used);
connection_attempt_metadata->set_wifi_hotspot_status(
connection_attempt_metadata_params->wifi_hotspot_enabled);
connection_attempt_metadata->set_try_counts(
connection_attempt_metadata_params->try_count);
connection_attempt_metadata->set_max_tx_speed(
connection_attempt_metadata_params->max_wifi_tx_speed);
connection_attempt_metadata->set_max_rx_speed(
connection_attempt_metadata_params->max_wifi_rx_speed);
connection_attempt_metadata->set_wifi_channel_width(
connection_attempt_metadata_params->channel_width);
if (type == INITIAL && result != RESULT_SUCCESS) {
auto it = outgoing_connection_requests_.find(remote_endpoint_id);
if (it != outgoing_connection_requests_.end()) {
@@ -480,7 +547,7 @@ void AnalyticsRecorder::OnBandwidthUpgradeSuccess(
UPGRADE_SUCCESS);
}
void AnalyticsRecorder::OnErrorCode(const ErrorCodeParams& params) {
void AnalyticsRecorder::OnErrorCode(const ErrorCodeParams &params) {
MutexLock lock(&mutex_);
if (!CanRecordAnalyticsLocked("OnErrorCode")) {
return;
@@ -556,6 +623,28 @@ void AnalyticsRecorder::LogSession() {
session_was_logged_ = true;
}
std::unique_ptr<ConnectionAttemptMetadataParams>
AnalyticsRecorder::BuildConnectionAttemptMetadataParams(
ConnectionTechnology technology, ConnectionBand band, int frequency,
int try_count, const std::string &network_operator,
const std::string &country_code, bool is_tdls_used,
bool wifi_hotspot_enabled, int max_wifi_tx_speed, int max_wifi_rx_speed,
int channel_width) {
auto params = absl::make_unique<ConnectionAttemptMetadataParams>();
params->technology = technology;
params->band = band;
params->frequency = frequency;
params->try_count = try_count;
params->network_operator = network_operator;
params->country_code = country_code;
params->is_tdls_used = is_tdls_used;
params->wifi_hotspot_enabled = wifi_hotspot_enabled;
params->max_wifi_tx_speed = max_wifi_tx_speed;
params->max_wifi_rx_speed = max_wifi_rx_speed;
params->channel_width = channel_width;
return params;
}
bool AnalyticsRecorder::CanRecordAnalyticsLocked(
const std::string &method_name) {
NEARBY_LOGS(VERBOSE) << "AnalyticsRecorder LogEvent " << method_name