Twitch SDK (Internal)
profileimagestatus.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 
12 
13 #include <memory>
14 
15 namespace ttv
16 {
17  class IChannelListener;
18  class ProfileImageStatus;
19 }
20 
21 
25 class ttv::ProfileImageStatus : public ttv::PubSubComponent<IChannelListener>
26 {
27 public:
28  using DisposerFunc = std::function<void()>;
29  using UploadProfileImageCallback = std::function<void(TTV_ErrorCode ec, const std::vector<ProfileImage>& images)>;
30 
31 public:
32  ProfileImageStatus(const std::shared_ptr<User>& user, ChannelId userId);
33  virtual ~ProfileImageStatus() = default;
34 
35  TTV_ErrorCode UploadProfileImage(const char* imageBuffer, size_t imageSize, const UploadProfileImageCallback& callback);
36 
37  virtual void Update() override;
38 
39  static std::string GetComponentName() { return "ttv::ProfileImageStatus"; }
40  virtual std::string GetLoggerName() const override;
41 
42  void OnTopicSubscribeStateChanged(const std::string& /*topic*/, PubSubClient::SubscribeState::Enum state, TTV_ErrorCode /*ec*/) override;
43  void OnTopicMessageReceived(const std::string& topic, const json::Value& msg) override;
44 
45 private:
46  virtual bool CheckShutdown() override;
47 
48  void FireListenerAndCallback(const std::string& uploadId, const std::vector<ProfileImage>& images, TTV_ErrorCode ec);
50 
52 
53  std::string mImage;
54  std::string mUploadId;
55  std::string mPubSubTopic;
58 };
uint32_t UserId
Definition: coretypes.h:22
Definition: profileimagestatus.h:25
void FireListenerAndCallback(const std::string &uploadId, const std::vector< ProfileImage > &images, TTV_ErrorCode ec)
std::function< void(TTV_ErrorCode ec, const std::vector< ProfileImage > &images)> UploadProfileImageCallback
Definition: profileimagestatus.h:29
UserId mUserId
Definition: profileimagestatus.h:56
UploadProfileImageCallback mCallback
Definition: profileimagestatus.h:49
ProfileImageStatus(const std::shared_ptr< User > &user, ChannelId userId)
Enum
Definition: pubsubclient.h:91
TTV_ErrorCode UploadProfileImage(const char *imageBuffer, size_t imageSize, const UploadProfileImageCallback &callback)
WaitForEventWithTimeout mUploadTimeout
Definition: profileimagestatus.h:51
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
virtual bool CheckShutdown() override
static std::string GetComponentName()
Definition: profileimagestatus.h:39
Definition: timer.h:26
Represents a JSON value.
Definition: value.h:114
void OnTopicSubscribeStateChanged(const std::string &, PubSubClient::SubscribeState::Enum state, TTV_ErrorCode) override
bool mUploadInProgress
Definition: profileimagestatus.h:57
virtual std::string GetLoggerName() const override
std::function< void()> DisposerFunc
Definition: profileimagestatus.h:28
virtual ~ProfileImageStatus()=default
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
void OnTopicMessageReceived(const std::string &topic, const json::Value &msg) override
std::string mUploadId
Definition: profileimagestatus.h:54
std::string mPubSubTopic
Definition: profileimagestatus.h:55
uint32_t ChannelId
Definition: coretypes.h:23
virtual void Update() override
std::string mImage
Definition: profileimagestatus.h:53
Definition: pubsubcomponent.h:21