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