summaryrefslogtreecommitdiff
path: root/src/web_service/telemetry_json.h
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-10-10 21:04:19 -0400
committerLioncash <mathew1800@gmail.com>2018-10-10 21:10:36 -0400
commita7725d354cf118b2299ed197d4b88ff48ebc1341 (patch)
tree7bf14f649e1dcd130975bde03f37877ece6c45ad /src/web_service/telemetry_json.h
parentc422f146eefc49c23b39753c2bc6f2243bb3b808 (diff)
telemetry_json: Use the PImpl idiom to avoid unnecessary dependency exposure
Users of the web_service library shouldn't need to care about an external library like json.h. However, given it's exposed in our interface, this requires that other libraries publicly link in the JSON library. We can do better. By using the PImpl idiom, we can hide this dependency in the cpp file and remove the need to link that library in altogether.
Diffstat (limited to 'src/web_service/telemetry_json.h')
-rw-r--r--src/web_service/telemetry_json.h18
1 files changed, 2 insertions, 16 deletions
diff --git a/src/web_service/telemetry_json.h b/src/web_service/telemetry_json.h
index 9a2aaa2c8..93371414a 100644
--- a/src/web_service/telemetry_json.h
+++ b/src/web_service/telemetry_json.h
@@ -4,10 +4,8 @@
#pragma once
-#include <array>
#include <chrono>
#include <string>
-#include <json.hpp>
#include "common/telemetry.h"
namespace WebService {
@@ -39,20 +37,8 @@ public:
void Complete() override;
private:
- nlohmann::json& TopSection() {
- return sections[static_cast<u8>(Telemetry::FieldType::None)];
- }
-
- template <class T>
- 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<nlohmann::json, 7> sections;
- std::string host;
- std::string username;
- std::string token;
+ struct Impl;
+ std::unique_ptr<Impl> impl;
};
} // namespace WebService