5 changed files with 83 additions and 0 deletions
-
2src/core/CMakeLists.txt
-
3src/core/core.cpp
-
16src/core/core.h
-
24src/core/telemetry_session.cpp
-
38src/core/telemetry_session.h
@ -0,0 +1,24 @@ |
|||
// Copyright 2017 Citra Emulator Project
|
|||
// Licensed under GPLv2 or any later version
|
|||
// Refer to the license.txt file included.
|
|||
|
|||
#include "common/scm_rev.h"
|
|||
#include "core/telemetry_session.h"
|
|||
|
|||
namespace Core { |
|||
|
|||
TelemetrySession::TelemetrySession() { |
|||
// TODO(bunnei): Replace with a backend that logs to our web service
|
|||
backend = std::make_unique<Telemetry::NullVisitor>(); |
|||
} |
|||
|
|||
TelemetrySession::~TelemetrySession() { |
|||
// 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); |
|||
backend->Complete(); |
|||
backend = nullptr; |
|||
} |
|||
|
|||
} // namespace Core
|
|||
@ -0,0 +1,38 @@ |
|||
// Copyright 2017 Citra Emulator Project |
|||
// Licensed under GPLv2 or any later version |
|||
// Refer to the license.txt file included. |
|||
|
|||
#pragma once |
|||
|
|||
#include <memory> |
|||
#include "common/telemetry.h" |
|||
|
|||
namespace Core { |
|||
|
|||
/** |
|||
* Instruments telemetry for this emulation session. Creates a new set of telemetry fields on each |
|||
* session, logging any one-time fields. Interfaces with the telemetry backend used for submitting |
|||
* data to the web service. Submits session data on close. |
|||
*/ |
|||
class TelemetrySession : NonCopyable { |
|||
public: |
|||
TelemetrySession(); |
|||
~TelemetrySession(); |
|||
|
|||
/** |
|||
* Wrapper around the Telemetry::FieldCollection::AddField method. |
|||
* @param type Type of the field to add. |
|||
* @param name Name of the field to add. |
|||
* @param value Value for the field to add. |
|||
*/ |
|||
template <typename T> |
|||
void AddField(Telemetry::FieldType type, const char* name, T value) { |
|||
field_collection.AddField(type, name, std::move(value)); |
|||
} |
|||
|
|||
private: |
|||
Telemetry::FieldCollection field_collection; ///< Field collection, tracks all added fields |
|||
std::unique_ptr<Telemetry::VisitorInterface> backend; ///< Backend interface that logs fields |
|||
}; |
|||
|
|||
} // namespace Core |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue