Agora C++ API Reference for All Platforms
AgoraBase.h
1 // Agora Engine SDK
2 //
3 // Copyright (c) 2019 Agora.io. All rights reserved.
4 //
5 
6 #ifndef AGORA_BASE_H
7 #define AGORA_BASE_H
8 
9 #include <stddef.h>
10 #include <stdio.h>
11 #include <stdarg.h>
12 #include <string.h>
13 #include <stdlib.h>
14 
15 #if defined(_WIN32)
16 #define WIN32_LEAN_AND_MEAN
17 #include <windows.h>
18 #define AGORA_CALL __cdecl
19 #if defined(AGORARTC_EXPORT)
20 #define AGORA_API extern "C" __declspec(dllexport)
21 #else
22 #define AGORA_API extern "C" __declspec(dllimport)
23 #endif
24 #elif defined(__APPLE__)
25 #include <TargetConditionals.h>
26 #define AGORA_API __attribute__((visibility("default"))) extern "C"
27 #define AGORA_CALL
28 #elif defined(__ANDROID__) || defined(__linux__)
29 #define AGORA_API extern "C" __attribute__((visibility("default")))
30 #define AGORA_CALL
31 #else
32 #define AGORA_API extern "C"
33 #define AGORA_CALL
34 #endif
35 
36 namespace agora {
37 namespace util {
38 
39 template<class T>
40 class AutoPtr {
41  typedef T value_type;
42  typedef T* pointer_type;
43 public:
44  AutoPtr(pointer_type p=0)
45  :ptr_(p)
46  {}
48  if (ptr_)
49  ptr_->release();
50  }
51  operator bool() const { return ptr_ != (pointer_type)0; }
52  value_type& operator*() const {
53  return *get();
54  }
55 
56  pointer_type operator->() const {
57  return get();
58  }
59 
60  pointer_type get() const {
61  return ptr_;
62  }
63 
64  pointer_type release() {
65  pointer_type tmp = ptr_;
66  ptr_ = 0;
67  return tmp;
68  }
69 
70  void reset(pointer_type ptr = 0) {
71  if (ptr != ptr_ && ptr_)
72  ptr_->release();
73  ptr_ = ptr;
74  }
75  template<class C1, class C2>
76  bool queryInterface(C1* c, C2 iid) {
77  pointer_type p = NULL;
78  if (c && !c->queryInterface(iid, (void**)&p))
79  {
80  reset(p);
81  }
82  return p != NULL;
83  }
84 private:
85  AutoPtr(const AutoPtr&);
86  AutoPtr& operator=(const AutoPtr&);
87 private:
88  pointer_type ptr_;
89 };
90 class IString {
91 protected:
92  virtual ~IString(){}
93 public:
94  virtual bool empty() const = 0;
95  virtual const char* c_str() = 0;
96  virtual const char* data() = 0;
97  virtual size_t length() = 0;
98  virtual void release() = 0;
99 };
101 
102 }//namespace util
103 
105 {
111 };
112 
116 {
143 
144  // sdk: 100~1000
158 
159  WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
160  WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
161  WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
163 
192  WARN_ADM_IOS_SAMPLERATE_CHANGE = 1030,
209  WARN_APM_HOWLING = 1051,
212  WARN_ADM_GLITCH_STATE = 1052,
217  WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
240  WARN_RTM_LOGIN_TIMEOUT = 2005,
241  WARN_RTM_KEEP_ALIVE_TIMEOUT = 2009
243 };
244 
248 {
251  ERR_OK = 0,
252  //1~1000
255  ERR_FAILED = 1,
265  ERR_NOT_READY = 3,
268  ERR_NOT_SUPPORTED = 4,
271  ERR_REFUSED = 5,
280  ERR_NO_PERMISSION = 9,
283  ERR_TIMEDOUT = 10,
286  ERR_CANCELED = 11,
289  ERR_TOO_OFTEN = 12,
292  ERR_BIND_SOCKET = 13,
295  ERR_NET_DOWN = 14,
298  ERR_NET_NOBUFS = 15,
312  ERR_ALREADY_IN_USE = 19,
315  ERR_ABORTED = 20,
318  ERR_INIT_NET_ENGINE = 21,
324  ERR_INVALID_APP_ID = 101,
335  ERR_TOKEN_EXPIRED = 109,
343  ERR_INVALID_TOKEN = 110,
346  ERR_CONNECTION_INTERRUPTED = 111, // only used in web sdk
349  ERR_CONNECTION_LOST = 112, // only used in web sdk
352  ERR_NOT_IN_CHANNEL = 113,
355  ERR_SIZE_TOO_LARGE = 114,
358  ERR_BITRATE_LIMIT = 115,
370  ERR_DECRYPTION_FAILED = 120,
376  ERR_WATERMARK_PARAM = 124,
379  ERR_WATERMARK_PATH = 125,
382  ERR_WATERMARK_PNG = 126,
385  ERR_WATERMARKR_INFO = 127,
388  ERR_WATERMARK_ARGB = 128,
391  ERR_WATERMARK_READ = 129,
397 
417  //signaling: 400~600
419  ERR_LOGOUT_USER = 401, // logout by user
420  ERR_LOGOUT_NET = 402, // network failure
421  ERR_LOGOUT_KICKED = 403, // login in other device
423  ERR_LOGOUT_TOKEN_EXPIRED = 405, // token expired
449  ERR_INVITE_NET = 472,
451  ERR_INVITE_TIMEOUT = 474,
452  ERR_INVITE_CANT_RECV = 475,
453 
455  //1001~2000
458  ERR_LOAD_MEDIA_ENGINE = 1001,
461  ERR_START_CALL = 1002,
466  ERR_START_CAMERA = 1003,
469  ERR_START_VIDEO_RENDER = 1004,
472  ERR_ADM_GENERAL_ERROR = 1005,
475  ERR_ADM_JAVA_RESOURCE = 1006,
478  ERR_ADM_SAMPLE_RATE = 1007,
481  ERR_ADM_INIT_PLAYOUT = 1008,
484  ERR_ADM_START_PLAYOUT = 1009,
487  ERR_ADM_STOP_PLAYOUT = 1010,
490  ERR_ADM_INIT_RECORDING = 1011,
496  ERR_ADM_STOP_RECORDING = 1013,
517  ERR_ADM_NO_PERMISSION = 1027,
579  ERR_ADM_IOS_SET_RENDER_CALLBACK_FAIL = 1219,
586  ERR_ADM_WIN_CORE_INIT = 1301,
632  ERR_ADM_WIN_WAVE_INIT = 1351,
675 
676  // VDM error code starts from 1500
680 
681  // VDM error code starts from 1500
687 
688  // VCM error code starts from 1600
691  ERR_VCM_UNKNOWN_ERROR = 1600,
701 };
704 enum LOG_FILTER_TYPE
705 {
707  LOG_FILTER_OFF = 0,
710  LOG_FILTER_DEBUG = 0x080f,
714  LOG_FILTER_INFO = 0x000f,
717  LOG_FILTER_WARN = 0x000e,
719  LOG_FILTER_ERROR = 0x000c,
721  LOG_FILTER_CRITICAL = 0x0008,
723  LOG_FILTER_MASK = 0x80f,
725 };
726 } // namespace agora
727 
728 #endif
Definition: AgoraBase.h:712
Definition: AgoraBase.h:213
Definition: AgoraBase.h:247
Definition: AgoraBase.h:197
Definition: AgoraBase.h:714
Definition: AgoraBase.h:119
Definition: AgoraBase.h:441
Definition: AgoraBase.h:375
Definition: AgoraBase.h:357
WARN_CODE_TYPE
Definition: AgoraBase.h:115
Definition: AgoraBase.h:501
Definition: AgoraBase.h:291
Definition: AgoraBase.h:424
Definition: AgoraBase.h:480
bool queryInterface(C1 *c, C2 iid)
Definition: AgoraBase.h:76
Definition: AgoraBase.h:462
Definition: AgoraBase.h:182
Definition: AgoraBase.h:657
Definition: AgoraBase.h:596
Definition: AgoraBase.h:427
void reset(pointer_type ptr=0)
Definition: AgoraBase.h:70
Definition: AgoraBase.h:446
Definition: AgoraBase.h:366
virtual size_t length()=0
Definition: AgoraBase.h:432
Definition: AgoraBase.h:142
Definition: AgoraBase.h:443
Definition: AgoraBase.h:663
Definition: AgoraBase.h:128
Definition: AgoraBase.h:207
Definition: AgoraBase.h:702
Definition: AgoraBase.h:384
Definition: AgoraBase.h:36
Definition: AgoraBase.h:589
Definition: AgoraBase.h:489
Definition: AgoraBase.h:194
Definition: AgoraBase.h:360
Definition: AgoraBase.h:437
Definition: AgoraBase.h:270
Definition: AgoraBase.h:471
Definition: AgoraBase.h:416
Definition: AgoraBase.h:639
Definition: AgoraBase.h:106
Definition: AgoraBase.h:387
Definition: AgoraBase.h:342
Definition: AgoraBase.h:179
Definition: AgoraBase.h:681
Definition: AgoraBase.h:435
Definition: AgoraBase.h:425
Definition: AgoraBase.h:392
Definition: AgoraBase.h:288
Definition: AgoraBase.h:90
Definition: AgoraBase.h:709
Definition: AgoraBase.h:351
Definition: AgoraBase.h:429
Definition: AgoraBase.h:454
Definition: AgoraBase.h:448
Definition: AgoraBase.h:109
Definition: AgoraBase.h:372
Definition: AgoraBase.h:419
virtual bool empty() const =0
Definition: AgoraBase.h:167
Definition: AgoraBase.h:423
Definition: AgoraBase.h:417
virtual ~IString()
Definition: AgoraBase.h:92
Definition: AgoraBase.h:396
Definition: AgoraBase.h:294
Definition: AgoraBase.h:110
Definition: AgoraBase.h:414
Definition: AgoraBase.h:569
Definition: AgoraBase.h:669
AutoPtr< IString > AString
Definition: AgoraBase.h:100
Definition: AgoraBase.h:645
Definition: AgoraBase.h:498
virtual const char * c_str()=0
Definition: AgoraBase.h:430
Definition: AgoraBase.h:651
Definition: AgoraBase.h:164
Definition: AgoraBase.h:273
Definition: AgoraBase.h:513
Definition: AgoraBase.h:420
ERROR_CODE_TYPE
Definition: AgoraBase.h:243
Definition: AgoraBase.h:317
Definition: AgoraBase.h:689
Definition: AgoraBase.h:633
Definition: AgoraBase.h:320
Definition: AgoraBase.h:434
Definition: AgoraBase.h:457
Definition: AgoraBase.h:147
Definition: AgoraBase.h:415
Definition: AgoraBase.h:426
Definition: AgoraBase.h:408
Definition: AgoraBase.h:285
Definition: AgoraBase.h:674
Definition: AgoraBase.h:474
Definition: AgoraBase.h:627
Definition: AgoraBase.h:314
Definition: AgoraBase.h:267
Definition: AgoraBase.h:176
Definition: AgoraBase.h:444
~AutoPtr()
Definition: AgoraBase.h:47
Definition: AgoraBase.h:282
Definition: AgoraBase.h:125
Definition: AgoraBase.h:139
Definition: AgoraBase.h:378
value_type & operator*() const
Definition: AgoraBase.h:52
Definition: AgoraBase.h:279
Definition: AgoraBase.h:418
Definition: AgoraBase.h:153
Definition: AgoraBase.h:447
Definition: AgoraBase.h:440
Definition: AgoraBase.h:381
Definition: AgoraBase.h:428
Definition: AgoraBase.h:421
Definition: AgoraBase.h:505
Definition: AgoraBase.h:695
Definition: AgoraBase.h:369
Definition: AgoraBase.h:439
Definition: AgoraBase.h:492
Definition: AgoraBase.h:251
virtual const char * data()=0
Definition: AgoraBase.h:509
Definition: AgoraBase.h:354
Definition: AgoraBase.h:431
virtual void release()=0
Definition: AgoraBase.h:561
Definition: AgoraBase.h:308
Definition: AgoraBase.h:573
Definition: AgoraBase.h:433
Definition: AgoraBase.h:402
Definition: AgoraBase.h:581
Definition: AgoraBase.h:436
Definition: AgoraBase.h:422
Definition: AgoraBase.h:136
Definition: AgoraBase.h:705
Definition: AgoraBase.h:465
AutoPtr(pointer_type p=0)
Definition: AgoraBase.h:44
Definition: AgoraBase.h:519
Definition: AgoraBase.h:348
Definition: AgoraBase.h:305
Definition: AgoraBase.h:566
Definition: AgoraBase.h:261
Definition: AgoraBase.h:445
Definition: AgoraBase.h:331
Definition: AgoraBase.h:254
Definition: AgoraBase.h:150
Definition: AgoraBase.h:122
Definition: AgoraBase.h:107
Definition: AgoraBase.h:666
Definition: AgoraBase.h:477
Definition: AgoraBase.h:692
pointer_type release()
Definition: AgoraBase.h:64
Definition: AgoraBase.h:156
Definition: AgoraBase.h:323
Definition: AgoraBase.h:438
Definition: AgoraBase.h:210
Definition: AgoraBase.h:483
Definition: AgoraBase.h:108
Definition: AgoraBase.h:495
Definition: AgoraBase.h:563
Definition: AgoraBase.h:40
Definition: AgoraBase.h:585
Definition: AgoraBase.h:686
Definition: AgoraBase.h:516
Definition: AgoraBase.h:276
Definition: AgoraBase.h:339
Definition: AgoraBase.h:486
Definition: AgoraBase.h:264
pointer_type operator->() const
Definition: AgoraBase.h:56
Definition: AgoraBase.h:442
LOG_FILTER_TYPE
Definition: AgoraBase.h:699
Definition: AgoraBase.h:297
Definition: AgoraBase.h:345
Definition: AgoraBase.h:311
INTERFACE_ID_TYPE
Definition: AgoraBase.h:104
Definition: AgoraBase.h:131
Definition: AgoraBase.h:173
Definition: AgoraBase.h:468
Definition: AgoraBase.h:716