IVGCVSW-6706 Create the libpipeClient library

Change-Id: I2368aade38ad3808fab55d8a86cd659d4e95d91e
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
diff --git a/profiling/client/src/backends/BackendProfiling.hpp b/profiling/client/src/backends/BackendProfiling.hpp
new file mode 100644
index 0000000..4db02f9
--- /dev/null
+++ b/profiling/client/src/backends/BackendProfiling.hpp
@@ -0,0 +1,53 @@
+//
+// Copyright © 2020 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <client/include/backends/IBackendProfiling.hpp>
+#include <client/include/IProfilingService.hpp>
+
+namespace arm
+{
+
+namespace pipe
+{
+
+class BackendProfiling : public IBackendProfiling
+{
+public:
+    BackendProfiling(const ProfilingOptions& options,
+                     IProfilingService& profilingService,
+                     const std::string& backendId)
+            : m_Options(options),
+              m_ProfilingService(profilingService),
+              m_BackendId(backendId) {}
+
+    ~BackendProfiling()
+    {}
+
+    std::unique_ptr<IRegisterBackendCounters>
+            GetCounterRegistrationInterface(uint16_t currentMaxGlobalCounterID) override;
+
+    std::unique_ptr<ISendTimelinePacket> GetSendTimelinePacket() override;
+
+    IProfilingGuidGenerator& GetProfilingGuidGenerator() override;
+
+    void ReportCounters(const std::vector<Timestamp>&) override;
+
+    CounterStatus GetCounterStatus(uint16_t backendCounterId) override;
+
+    std::vector<CounterStatus> GetActiveCounters() override;
+
+    bool IsProfilingEnabled() const override;
+
+private:
+    ProfilingOptions m_Options;
+    IProfilingService& m_ProfilingService;
+    std::string m_BackendId;
+};
+
+}    // namespace pipe
+
+}    // namespace arm