Twitch SDK (Internal)
trackingapi.h
Go to the documentation of this file.
1 /********************************************************************************************
2 * Twitch Broadcasting SDK
3 *
4 * This software is supplied under the terms of a license agreement with Twitch Interactive, Inc. and
5 * may not be copied or used except in accordance with the terms of that agreement
6 * Copyright (c) 2012-2016 Twitch Interactive, Inc.
7 *********************************************************************************************/
8 
9 #pragma once
10 
11 #include "twitchsdk/core/coreapi.h"
12 #include "twitchsdk/core/module.h"
15 
16 #include <sstream>
17 
18 namespace ttv
19 {
20  class TaskRunner;
21 
22  namespace tracking
23  {
24  class TrackingAPI;
25  }
26 }
27 
28 
39 {
40 
41 public:
42  TrackingAPI();
43  virtual ~TrackingAPI();
44 
45  static const char* kSpadeUrl;
46 
47  // IModule implementation
48  virtual std::string GetModuleName() const override;
49  virtual TTV_ErrorCode Initialize(const InitializeCallback& callback) override;
50  virtual TTV_ErrorCode Shutdown(const ShutdownCallback& callback) override;
51  virtual TTV_ErrorCode Update() override;
52 
53  TTV_ErrorCode SetCoreApi(const std::shared_ptr<CoreAPI>& coreApi);
54  TTV_ErrorCode SetMaxBytesInBatch(uint32_t batchSize);
55  TTV_ErrorCode SetFlushIntervalInMs(uint32_t flushInterval);
56  TTV_ErrorCode SetListener(const std::shared_ptr<ITrackingAPIListener>& listener);
57 
61  TTV_ErrorCode TrackEvent(const std::string& eventName, const std::map<std::string, TrackingValue>& params);
66  TTV_ErrorCode TrackEvent(const std::string& eventName, const std::map<std::string, TrackingValue>& params, uint32_t& eventId);
71 
72 protected:
73  // ModuleBase overrides
74  virtual bool CheckShutdown() override;
75  virtual void CompleteShutdown() override;
76 
77 private:
78  TTV_ErrorCode TrackEventInternal(const std::string& eventName, const std::map<std::string, TrackingValue>& params, uint32_t& eventId);
80 
82  {
83  public:
84  CoreApiClient();
85 
86  // ICoreApiClient implementation
87  virtual std::string GetClientName();
88  };
89 
90  std::shared_ptr<CoreAPI> mCoreApi;
91  std::shared_ptr<TaskRunner> mTaskRunner;
92  std::shared_ptr<CoreApiClient> mCoreApiClient;
93 
94  std::stringstream mEventStream;
95  uint32_t mQueuedBytes;
96  uint32_t mBatchStartId;
97  uint32_t mBatchEndId;
98 
99  uint32_t mMaxBytesInBatch;
101 
103  std::shared_ptr<ITrackingAPIListener> mListener;
104 
105  std::shared_ptr<IMutex> mMutex;
106 };
ttv::WaitForExpiry mFlushTimer
Definition: trackingapi.h:102
std::shared_ptr< CoreApiClient > mCoreApiClient
Definition: trackingapi.h:92
Definition: coreapi.h:51
TTV_ErrorCode TrackEventInternal(const std::string &eventName, const std::map< std::string, TrackingValue > &params, uint32_t &eventId)
uint32_t mBatchStartId
Definition: trackingapi.h:96
TTV_ErrorCode SetMaxBytesInBatch(uint32_t batchSize)
std::shared_ptr< TaskRunner > mTaskRunner
Definition: trackingapi.h:91
std::function< void(TTV_ErrorCode ec)> InitializeCallback
Definition: module.h:48
std::shared_ptr< ITrackingAPIListener > mListener
Definition: trackingapi.h:103
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
TTV_ErrorCode TrackEvent(const std::string &eventName, const std::map< std::string, TrackingValue > &params)
Definition: timer.h:52
virtual bool CheckShutdown() override
TTV_ErrorCode SetCoreApi(const std::shared_ptr< CoreAPI > &coreApi)
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
std::shared_ptr< IMutex > mMutex
Definition: trackingapi.h:105
virtual TTV_ErrorCode Shutdown(const ShutdownCallback &callback) override
static const char * kSpadeUrl
Definition: trackingapi.h:45
std::function< void(TTV_ErrorCode ec)> ShutdownCallback
Definition: module.h:49
Definition: trackingapi.h:38
std::stringstream mEventStream
Definition: trackingapi.h:94
Definition: trackingapi.h:81
virtual TTV_ErrorCode Update() override
TTV_ErrorCode SetFlushIntervalInMs(uint32_t flushInterval)
virtual std::string GetModuleName() const override
TTV_ErrorCode SetListener(const std::shared_ptr< ITrackingAPIListener > &listener)
Definition: module.h:85
std::shared_ptr< CoreAPI > mCoreApi
Definition: trackingapi.h:90
uint32_t mMaxBytesInBatch
Definition: trackingapi.h:99
uint32_t mQueuedBytes
Definition: trackingapi.h:95
uint32_t mBatchEndId
Definition: trackingapi.h:97
virtual TTV_ErrorCode Initialize(const InitializeCallback &callback) override
TTV_ErrorCode FlushEvents()
TTV_ErrorCode FlushEventsInternal()
virtual void CompleteShutdown() override
uint32_t mFlushIntervalInMs
Definition: trackingapi.h:100