From 52fbe1e10cffcfd4c4ee1c50b7c8e98f3eb4cb50 Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 27 Jun 2017 23:01:49 -0400 Subject: web_service: Add skeleton project. --- src/web_service/telemetry_json.h | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/web_service/telemetry_json.h (limited to 'src/web_service/telemetry_json.h') diff --git a/src/web_service/telemetry_json.h b/src/web_service/telemetry_json.h new file mode 100644 index 000000000..1f2e08f54 --- /dev/null +++ b/src/web_service/telemetry_json.h @@ -0,0 +1,9 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +namespace WebService { + +} // namespace WebService -- cgit v1.2.3 From fd3b4451eccbf0dfdc2597f1a68e98763c17f207 Mon Sep 17 00:00:00 2001 From: bunnei Date: Sun, 9 Jul 2017 13:48:47 -0400 Subject: web_service: Implement JSON serialization of telemetry data. --- src/web_service/telemetry_json.h | 45 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'src/web_service/telemetry_json.h') diff --git a/src/web_service/telemetry_json.h b/src/web_service/telemetry_json.h index 1f2e08f54..cc511cdd1 100644 --- a/src/web_service/telemetry_json.h +++ b/src/web_service/telemetry_json.h @@ -4,6 +4,51 @@ #pragma once +#include +#include +#include +#include "common/telemetry.h" + namespace WebService { +/** + * Implementation of VisitorInterface that serialized telemetry into JSON, and submits it to the + * Citra web service + */ +class TelemetryJson : public Telemetry::VisitorInterface { +public: + TelemetryJson(); + ~TelemetryJson() = default; + + void Visit(const Telemetry::Field& field) override; + void Visit(const Telemetry::Field& field) override; + void Visit(const Telemetry::Field& field) override; + void Visit(const Telemetry::Field& field) override; + void Visit(const Telemetry::Field& field) override; + void Visit(const Telemetry::Field& field) override; + void Visit(const Telemetry::Field& field) override; + void Visit(const Telemetry::Field& field) override; + void Visit(const Telemetry::Field& field) override; + void Visit(const Telemetry::Field& field) override; + void Visit(const Telemetry::Field& field) override; + void Visit(const Telemetry::Field& field) override; + void Visit(const Telemetry::Field& field) override; + void Visit(const Telemetry::Field& field) override; + + void Complete() override; + +private: + nlohmann::json& TopSection() { + return sections[static_cast(Telemetry::FieldType::None)]; + } + + template + void Serialize(Telemetry::FieldType type, const std::string& name, T value); + + void SerializeSection(Telemetry::FieldType type, const std::string& name); + + nlohmann::json output; + std::array sections; +}; + } // namespace WebService -- cgit v1.2.3 From 8af3ebb149b057b40bc4efd5bae2b9cb70b2066c Mon Sep 17 00:00:00 2001 From: bunnei Date: Sun, 9 Jul 2017 13:49:51 -0400 Subject: telemetry_session: Use TelemetryJson to submit real telemetry. --- src/web_service/telemetry_json.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/web_service/telemetry_json.h') diff --git a/src/web_service/telemetry_json.h b/src/web_service/telemetry_json.h index cc511cdd1..39038b4f9 100644 --- a/src/web_service/telemetry_json.h +++ b/src/web_service/telemetry_json.h @@ -17,7 +17,7 @@ namespace WebService { */ class TelemetryJson : public Telemetry::VisitorInterface { public: - TelemetryJson(); + TelemetryJson() = default; ~TelemetryJson() = default; void Visit(const Telemetry::Field& field) override; -- cgit v1.2.3