diff options
author | bunnei <bunneidev@gmail.com> | 2017-05-02 00:09:15 -0400 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2017-05-24 19:16:22 -0400 |
commit | f3e14cae1e644b7e072796f2c26eab67b7a5d1b7 (patch) | |
tree | 27a0b689d399425f54e1559c64a8cf935ce81c5e /src/core/telemetry_session.h | |
parent | a4760e939fe40138e6591093a3ec128ab0d29962 (diff) |
core: Keep track of telemetry for the current emulation session.
Diffstat (limited to 'src/core/telemetry_session.h')
-rw-r--r-- | src/core/telemetry_session.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/core/telemetry_session.h b/src/core/telemetry_session.h new file mode 100644 index 0000000000..39e1678685 --- /dev/null +++ b/src/core/telemetry_session.h @@ -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 |