Twitch SDK (Internal)
bitsstatus.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-2017 Twitch Interactive, Inc.
7  *********************************************************************************************/
8 
9 #pragma once
10 
15 
16 namespace ttv
17 {
18  namespace chat
19  {
20  class IBitsListener;
21  class BitsStatus;
22  }
23 }
24 
25 
29 class ttv::chat::BitsStatus : public ttv::PubSubComponent<IBitsListener>, public IBitsStatus
30 {
31 public:
32  using DisposerFunc = std::function<void()>;
33 
34 public:
35  BitsStatus(const std::shared_ptr<User>& user, ChannelId channelId);
36 
37  static std::string GetComponentName() { return "ttv::BitsStatus"; }
38  virtual std::string GetLoggerName() const override;
39 
40  virtual TTV_ErrorCode Initialize() override;
41  virtual TTV_ErrorCode Shutdown() override;
42  virtual void Update() override;
43 
44  // IBitsStatus Implementation
45  virtual TTV_ErrorCode Dispose() override;
46 
47  void SetTokenizationOptions(const TokenizationOptions& tokenizationOptions) { mTokenizationOptions = tokenizationOptions; }
48  void SetBitsConfigRepository(const std::shared_ptr<BitsConfigRepository>& bitsConfigRepository) { mBitsConfigRepository = bitsConfigRepository; }
49 
50  void OnTopicSubscribeStateChanged(const std::string& topic, PubSubClient::SubscribeState::Enum state, TTV_ErrorCode ec) override;
51  void OnTopicMessageReceived(const std::string& topic, const json::Value& msg) override;
52 
53 private:
54  void ParseBitsReceivedMessage(const ttv::json::Value& jBitsMessage, BitsReceivedEvent& event);
56 
57  std::shared_ptr<BitsConfigRepository> mBitsConfigRepository;
58  std::shared_ptr<BitsConfiguration> mBitsConfiguration;
59 
61 
63  std::string mUserBitsPubSubTopic;
68 };
Definition: timer.h:134
BitsStatus(const std::shared_ptr< User > &user, ChannelId channelId)
static std::string GetComponentName()
Definition: bitsstatus.h:37
Definition: ibitsstatus.h:26
Enum
Definition: pubsubclient.h:91
bool mBitsConfigFetchInFlight
Definition: bitsstatus.h:66
virtual TTV_ErrorCode Dispose() override
TTV_ErrorCode FetchBitsConfig()
std::string mChannelBitsPubSubTopic
Definition: bitsstatus.h:62
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
std::shared_ptr< BitsConfigRepository > mBitsConfigRepository
Definition: bitsstatus.h:57
void SetBitsConfigRepository(const std::shared_ptr< BitsConfigRepository > &bitsConfigRepository)
Definition: bitsstatus.h:48
Represents a JSON value.
Definition: value.h:114
std::function< void()> DisposerFunc
Definition: bitsstatus.h:32
void OnTopicSubscribeStateChanged(const std::string &topic, PubSubClient::SubscribeState::Enum state, TTV_ErrorCode ec) override
virtual std::string GetLoggerName() const override
TokenizationOptions mTokenizationOptions
Definition: bitsstatus.h:64
void SetTokenizationOptions(const TokenizationOptions &tokenizationOptions)
Definition: bitsstatus.h:47
RetryTimer mFetchBitsConfigRetryTimer
Definition: bitsstatus.h:60
ChannelId mChannelId
Definition: bitsstatus.h:65
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
virtual void Update() override
Definition: chattypes.h:469
virtual TTV_ErrorCode Shutdown() override
virtual TTV_ErrorCode Initialize() override
std::shared_ptr< BitsConfiguration > mBitsConfiguration
Definition: bitsstatus.h:58
Definition: bitsstatus.h:29
void OnTopicMessageReceived(const std::string &topic, const json::Value &msg) override
bool mHasFetchedBitsConfig
Definition: bitsstatus.h:67
uint32_t ChannelId
Definition: coretypes.h:23
Definition: chattypes.h:41
void ParseBitsReceivedMessage(const ttv::json::Value &jBitsMessage, BitsReceivedEvent &event)
std::string mUserBitsPubSubTopic
Definition: bitsstatus.h:63
Definition: pubsubcomponent.h:21