Agora C++ API Reference for All Platforms
agora_service_i.h
1 //
2 // Agora Media SDK
3 //
4 // Created by Sting Feng in 2015-05.
5 // Copyright (c) 2015 Agora IO. All rights reserved.
6 //
7 #pragma once
8 
9 #include <memory>
10 #include <string>
11 
12 #include "AgoraRefPtr.h"
13 
14 #include "IAgoraService.h"
15 #include "IAgoraLog.h"
16 
17 #include "audio_options_i.h"
18 #include "bitrate_constraints.h"
19 #include "IAudioDeviceManager.h"
20 #include "NGIAgoraAudioDeviceManager.h"
21 
22 #include <functional>
23 #include <string>
24 
25 struct event_base;
26 
27 namespace agora {
28 namespace rtc {
29 class AgoraGenericBridge;
30 class ConfigService;
31 class ConfigSourceAP;
32 class IDiagnosticService;
33 class ILocalUserEx;
34 class PredefineIpList;
35 class IRtcConnection;
36 struct RtcConnectionConfigurationEx;
37 class IMediaExtensionObserver;
38 class XdumpHandler;
39 } // namespace rtc
40 
41 namespace utils {
42 struct AudioSessionParam;
43 template<class T> class RtcAsyncCallback;
44 } // namespace utils
45 
46 namespace commons {
47 namespace cjson {
48 class JsonWrapper;
49 } // namespace cjson
50 } // namespace commons
51 
52 typedef agora::commons::cjson::JsonWrapper any_document_t;
53 
54 namespace base {
55 class IAgoraServiceObserver;
56 
70 };
71 
74  const char* deviceId = nullptr;
75  const char* deviceInfo = nullptr;
76  const char* systemInfo = nullptr;
77  const char* configDir = nullptr;
78  const char* dataDir = nullptr;
79  const char* pluginDir = nullptr;
81 
83  bitrateConstraints.start_bitrate_bps = kDefaultStartBitrateBps;
84  bitrateConstraints.max_bitrate_bps = kDefaultMaxBitrateBps;
85  }
86 
89  bitrateConstraints.max_bitrate_bps = kDefaultMaxBitrateBps;
90  bitrateConstraints.start_bitrate_bps = kDefaultStartBitrateBps;
91  }
92 
93  bool apSendRequest = true;
94 
95  private:
96  static constexpr int kDefaultMaxBitrateBps = (24 * 10 * 1000 * 95);
97  static constexpr int kDefaultStartBitrateBps = 300000;
98 };
99 
100 class BaseContext;
101 
102 // full feature definition of rtc engine interface
104  public:
105  static const char* getSourceVersion();
106  virtual int initializeEx(const AgoraServiceConfigEx& context) = 0;
108  const rtc::RtcConnectionConfigurationEx& cfg) = 0;
109  // Only added for RtcEngine compatibility.
110  virtual int panic(void* exception) = 0;
111  // Returns a libevent event_base created by event_base_new. Also this implies
112  // the application might use this event as its main event loop.
113  virtual event_base* getWorkerEventBase() = 0;
114  virtual agora::rtc::AgoraGenericBridge* getBridge() = 0;
115  virtual BaseContext& getBaseContext() = 0;
116  virtual void setBaseContext(BaseContext* context) = 0;
117 
118  virtual int32_t setLogWriter(agora::commons::ILogWriter* logWriter) = 0;
120 
121  virtual rtc::ConfigService* getConfigService() = 0;
122  virtual rtc::ConfigSourceAP* getConfigSourceAP() = 0;
123 
124  virtual agora_refptr<rtc::IRtcConnection> getOneRtcConnection(bool admBinded) const = 0;
125 
126  virtual const std::string& getAppId() const = 0;
127 
129 
130  virtual void enableStringUid(bool enabled) = 0;
131  virtual bool useStringUid() const = 0;
132  virtual rtc::uid_t getUidByUserAccount(const std::string& user_account) const = 0;
133 
134  // Register string user account before join channel, this would speed up join channel time.
135  virtual int registerLocalUserAccount(const char* appId, const char* userAccount) = 0;
136 
138 
141 
142  virtual rtc::XdumpHandler* getXdumpHandler() const = 0;
143  virtual const std::string& getServiceId() const = 0;
144 
145 protected:
146  virtual ~IAgoraServiceEx() {}
147 };
148 
150  public:
151  virtual ~IAgoraServiceObserver() = default;
152 
153  virtual void onLocalUserRegistered(rtc::uid_t uid, const char* userAccount) = 0;
154 };
155 
156 } // namespace base
157 } // namespace agora
agora::base::IAgoraServiceObserver
Definition: agora_service_i.h:149
agora::any_document_t
agora::commons::cjson::JsonWrapper any_document_t
Definition: agora_service_i.h:52
agora::base::IAgoraService
Definition: IAgoraService.h:420
agora::base::IAgoraServiceEx::getWorkerEventBase
virtual event_base * getWorkerEventBase()=0
agora::base::IAgoraServiceEx::getXdumpHandler
virtual rtc::XdumpHandler * getXdumpHandler() const =0
agora::rtc::BitrateConstraints::start_bitrate_bps
int start_bitrate_bps
Definition: bitrate_constraints.h:22
agora::base::IAgoraServiceEx::getBaseContext
virtual BaseContext & getBaseContext()=0
agora::commons::ILogWriter
Definition: IAgoraLog.h:50
agora::base::AgoraServiceConfigEx::pluginDir
const char * pluginDir
Definition: agora_service_i.h:79
agora::base::AgoraServiceConfigEx::AgoraServiceConfigEx
AgoraServiceConfigEx()
Definition: agora_service_i.h:82
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::base::AgoraServiceConfiguration
Definition: IAgoraService.h:82
agora::base::AgoraServiceConfigEx::engineType
MediaEngineType engineType
Definition: agora_service_i.h:73
agora::base::AgoraServiceConfigEx::configDir
const char * configDir
Definition: agora_service_i.h:77
agora::base::AgoraServiceConfigEx::deviceInfo
const char * deviceInfo
Definition: agora_service_i.h:75
agora::base::AgoraServiceConfigEx::deviceId
const char * deviceId
Definition: agora_service_i.h:74
agora::base::MEDIA_ENGINE_WEBRTC
@ MEDIA_ENGINE_WEBRTC
Definition: agora_service_i.h:61
agora::base::AgoraServiceConfigEx::AgoraServiceConfigEx
AgoraServiceConfigEx(const AgoraServiceConfiguration &rhs)
Definition: agora_service_i.h:87
agora::base::IAgoraServiceEx::getSourceVersion
static const char * getSourceVersion()
agora::base::IAgoraServiceEx::setBaseContext
virtual void setBaseContext(BaseContext *context)=0
agora::base::IAgoraServiceEx::initializeEx
virtual int initializeEx(const AgoraServiceConfigEx &context)=0
agora::base::AgoraServiceConfigEx
Definition: agora_service_i.h:72
agora
Definition: AgoraAtomicOps.h:21
agora::base::IAgoraServiceObserver::onLocalUserRegistered
virtual void onLocalUserRegistered(rtc::uid_t uid, const char *userAccount)=0
agora::base::IAgoraServiceObserver::~IAgoraServiceObserver
virtual ~IAgoraServiceObserver()=default
agora::base::IAgoraServiceEx::~IAgoraServiceEx
virtual ~IAgoraServiceEx()
Definition: agora_service_i.h:146
agora::rtc::RtcConnectionConfigurationEx
Definition: rtc_connection_i.h:95
agora::base::AgoraServiceConfigEx::systemInfo
const char * systemInfo
Definition: agora_service_i.h:76
agora::rtc::IDiagnosticService
Definition: diagnostic_service_i.h:35
agora::base::IAgoraServiceEx::getAppId
virtual const std::string & getAppId() const =0
agora::base::IAgoraServiceEx::setLogWriter
virtual int32_t setLogWriter(agora::commons::ILogWriter *logWriter)=0
agora::base::IAgoraServiceEx::panic
virtual int panic(void *exception)=0
agora::base::IAgoraServiceEx::useStringUid
virtual bool useStringUid() const =0
agora::base::MEDIA_ENGINE_EMPTY
@ MEDIA_ENGINE_EMPTY
Definition: agora_service_i.h:65
agora::base::IAgoraServiceEx
Definition: agora_service_i.h:103
agora::base::IAgoraServiceEx::getDiagnosticService
virtual rtc::IDiagnosticService * getDiagnosticService() const =0
agora::utils::RtcAsyncCallback
Definition: agora_service_i.h:43
agora::base::IAgoraServiceEx::unregisterAgoraServiceObserver
virtual int unregisterAgoraServiceObserver(IAgoraServiceObserver *observer)=0
agora::base::MediaEngineType
MediaEngineType
Definition: agora_service_i.h:57
agora::base::IAgoraServiceEx::getUidByUserAccount
virtual rtc::uid_t getUidByUserAccount(const std::string &user_account) const =0
agora::rtc::BitrateConstraints
Definition: bitrate_constraints.h:20
agora::base::IAgoraServiceEx::getBridge
virtual agora::rtc::AgoraGenericBridge * getBridge()=0
agora::rtc::BitrateConstraints::max_bitrate_bps
int max_bitrate_bps
Definition: bitrate_constraints.h:23
agora::base::IAgoraServiceEx::releaseLogWriter
virtual agora::commons::ILogWriter * releaseLogWriter()=0
agora::base::AgoraServiceConfigEx::dataDir
const char * dataDir
Definition: agora_service_i.h:78
agora::base::IAgoraServiceEx::getConfigService
virtual rtc::ConfigService * getConfigService()=0
agora::base::IAgoraServiceEx::createRtcConnectionEx
virtual agora_refptr< rtc::IRtcConnection > createRtcConnectionEx(const rtc::RtcConnectionConfigurationEx &cfg)=0
agora::base::IAgoraServiceEx::registerLocalUserAccount
virtual int registerLocalUserAccount(const char *appId, const char *userAccount)=0
agora::base::IAgoraServiceEx::getOneRtcConnection
virtual agora_refptr< rtc::IRtcConnection > getOneRtcConnection(bool admBinded) const =0
agora::base::IAgoraServiceEx::getPredefineIpList
virtual agora_refptr< rtc::PredefineIpList > getPredefineIpList() const =0
agora::base::IAgoraServiceEx::enableStringUid
virtual void enableStringUid(bool enabled)=0
agora::base::MEDIA_ENGINE_UNKNOWN
@ MEDIA_ENGINE_UNKNOWN
Definition: agora_service_i.h:69
agora::rtc::uid_t
unsigned int uid_t
Definition: AgoraMediaBase.h:25
agora::base::AgoraServiceConfigEx::bitrateConstraints
rtc::BitrateConstraints bitrateConstraints
Definition: agora_service_i.h:80
agora::base::IAgoraServiceEx::getConfigSourceAP
virtual rtc::ConfigSourceAP * getConfigSourceAP()=0
agora::base::AgoraServiceConfigEx::apSendRequest
bool apSendRequest
Definition: agora_service_i.h:93
rtc
Definition: video_node_i.h:27
agora::base::IAgoraServiceEx::getServiceId
virtual const std::string & getServiceId() const =0
agora::base::IAgoraServiceEx::registerAgoraServiceObserver
virtual int registerAgoraServiceObserver(IAgoraServiceObserver *observer)=0