core/telemetry_session: Only create the backend when we really need it

The backend is not used until we decide to submit the testcase/telemetry, and creating it early prevents users from updating the credentials properly while the games are running.
This commit is contained in:
zhupengfei 2019-04-19 22:02:49 +08:00
parent 0ec45f694c
commit 81988d96fe
No known key found for this signature in database
GPG key ID: DD129E108BD09378
2 changed files with 11 additions and 10 deletions

View file

@ -92,13 +92,6 @@ bool VerifyLogin(const std::string& username, const std::string& token) {
} }
TelemetrySession::TelemetrySession() { TelemetrySession::TelemetrySession() {
#ifdef ENABLE_WEB_SERVICE
backend = std::make_unique<WebService::TelemetryJson>(Settings::values.web_api_url,
Settings::values.citra_username,
Settings::values.citra_token);
#else
backend = std::make_unique<Telemetry::NullVisitor>();
#endif
// Log one-time top-level information // Log one-time top-level information
AddField(Telemetry::FieldType::None, "TelemetryId", GetTelemetryId()); AddField(Telemetry::FieldType::None, "TelemetryId", GetTelemetryId());
@ -192,9 +185,15 @@ TelemetrySession::~TelemetrySession() {
.count()}; .count()};
AddField(Telemetry::FieldType::Session, "Shutdown_Time", shutdown_time); AddField(Telemetry::FieldType::Session, "Shutdown_Time", shutdown_time);
#ifdef ENABLE_WEB_SERVICE
auto backend = std::make_unique<WebService::TelemetryJson>(Settings::values.web_api_url,
Settings::values.citra_username,
Settings::values.citra_token);
#else
auto backend = std::make_unique<Telemetry::NullVisitor>();
#endif
// Complete the session, submitting to web service if necessary // Complete the session, submitting to web service if necessary
// This is just a placeholder to wrap up the session once the core completes and this is
// destroyed. This will be moved elsewhere once we are actually doing real I/O with the service.
field_collection.Accept(*backend); field_collection.Accept(*backend);
if (Settings::values.enable_telemetry) if (Settings::values.enable_telemetry)
backend->Complete(); backend->Complete();
@ -203,6 +202,9 @@ TelemetrySession::~TelemetrySession() {
bool TelemetrySession::SubmitTestcase() { bool TelemetrySession::SubmitTestcase() {
#ifdef ENABLE_WEB_SERVICE #ifdef ENABLE_WEB_SERVICE
auto backend = std::make_unique<WebService::TelemetryJson>(Settings::values.web_api_url,
Settings::values.citra_username,
Settings::values.citra_token);
field_collection.Accept(*backend); field_collection.Accept(*backend);
return backend->SubmitTestcase(); return backend->SubmitTestcase();
#else #else

View file

@ -39,7 +39,6 @@ public:
private: private:
Telemetry::FieldCollection field_collection; ///< Tracks all added fields for the session Telemetry::FieldCollection field_collection; ///< Tracks all added fields for the session
std::unique_ptr<Telemetry::VisitorInterface> backend; ///< Backend interface that logs fields
}; };
/** /**