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 #define AGORA_CPP_API __declspec(dllexport)
22 #else
23 #define AGORA_API extern "C" __declspec(dllimport)
24 #define AGORA_CPP_API __declspec(dllimport)
25 #endif
26 #elif defined(__APPLE__)
27 #include <TargetConditionals.h>
28 #define AGORA_API __attribute__((visibility("default"))) extern "C"
29 #define AGORA_CPP_API __attribute__((visibility("default")))
30 #define AGORA_CALL
31 #elif defined(__ANDROID__) || defined(__linux__)
32 #define AGORA_API extern "C" __attribute__((visibility("default")))
33 #define AGORA_CPP_API __attribute__((visibility("default")))
34 #define AGORA_CALL
35 #else
36 #define AGORA_API extern "C"
37 #define AGORA_CPP_API
38 #define AGORA_CALL
39 #endif
40 
41 namespace agora {
42 namespace util {
43 
44 template<class T>
45 class AutoPtr {
46  typedef T value_type;
47  typedef T* pointer_type;
48 public:
49  AutoPtr(pointer_type p=0)
50  :ptr_(p)
51  {}
53  if (ptr_)
54  ptr_->release();
55  }
56  operator bool() const { return ptr_ != (pointer_type)0; }
57  value_type& operator*() const {
58  return *get();
59  }
60 
61  pointer_type operator->() const {
62  return get();
63  }
64 
65  pointer_type get() const {
66  return ptr_;
67  }
68 
69  pointer_type release() {
70  pointer_type tmp = ptr_;
71  ptr_ = 0;
72  return tmp;
73  }
74 
75  void reset(pointer_type ptr = 0) {
76  if (ptr != ptr_ && ptr_)
77  ptr_->release();
78  ptr_ = ptr;
79  }
80  template<class C1, class C2>
81  bool queryInterface(C1* c, C2 iid) {
82  pointer_type p = NULL;
83  if (c && !c->queryInterface(iid, (void**)&p))
84  {
85  reset(p);
86  }
87  return p != NULL;
88  }
89 private:
90  AutoPtr(const AutoPtr&);
91  AutoPtr& operator=(const AutoPtr&);
92 private:
93  pointer_type ptr_;
94 };
95 class IString {
96 protected:
97  virtual ~IString(){}
98 public:
99  virtual bool empty() const = 0;
100  virtual const char* c_str() = 0;
101  virtual const char* data() = 0;
102  virtual size_t length() = 0;
103  virtual void release() = 0;
104 };
106 
107 }//namespace util
108 
110 {
116 };
117 
121 {
148 
149  // sdk: 100~1000
246 
249 };
250 
254 {
257  ERR_OK = 0,
258  //1~1000
352  ERR_CONNECTION_INTERRUPTED = 111, // only used in web sdk
355  ERR_CONNECTION_LOST = 112, // only used in web sdk
403 
422 
423  //signaling: 400~600
429  ERR_LOGOUT_USER = 401, // logout by user
432  ERR_LOGOUT_NET = 402, // network failure
435  ERR_LOGOUT_KICKED = 403, // login in other device
441  ERR_LOGOUT_TOKEN_EXPIRED = 405, // token expired
525 
526 
527  //1001~2000
745 
746  // VDM error code starts from 1500
750 
751  // VDM error code starts from 1500
757 
758  // VCM error code starts from 1600
771 };
772 
775 {
784  LOG_FILTER_INFO = 0x000f,
787  LOG_FILTER_WARN = 0x000e,
793 };
794 } // namespace agora
795 
796 #endif
Definition: AgoraBase.h:787
Definition: AgoraBase.h:222
Definition: AgoraBase.h:257
Definition: AgoraBase.h:201
Definition: AgoraBase.h:789
Definition: AgoraBase.h:124
Definition: AgoraBase.h:507
Definition: AgoraBase.h:385
Definition: AgoraBase.h:367
WARN_CODE_TYPE
Definition: AgoraBase.h:120
Definition: AgoraBase.h:577
Definition: AgoraBase.h:301
Definition: AgoraBase.h:456
Definition: AgoraBase.h:556
bool queryInterface(C1 *c, C2 iid)
Definition: AgoraBase.h:81
Definition: AgoraBase.h:538
Definition: AgoraBase.h:185
Definition: AgoraBase.h:732
Definition: AgoraBase.h:671
Definition: AgoraBase.h:465
void reset(pointer_type ptr=0)
Definition: AgoraBase.h:75
Definition: AgoraBase.h:522
Definition: AgoraBase.h:376
virtual size_t length()=0
Definition: AgoraBase.h:480
Definition: AgoraBase.h:147
Definition: AgoraBase.h:513
Definition: AgoraBase.h:738
Definition: AgoraBase.h:133
Definition: AgoraBase.h:216
Definition: AgoraBase.h:777
Definition: AgoraBase.h:394
Definition: AgoraBase.h:195
Definition: AgoraBase.h:41
Definition: AgoraBase.h:664
Definition: AgoraBase.h:565
Definition: AgoraBase.h:198
Definition: AgoraBase.h:370
Definition: AgoraBase.h:495
Definition: AgoraBase.h:280
Definition: AgoraBase.h:547
Definition: AgoraBase.h:432
Definition: AgoraBase.h:714
Definition: AgoraBase.h:111
Definition: AgoraBase.h:397
Definition: AgoraBase.h:352
Definition: AgoraBase.h:182
Definition: AgoraBase.h:756
Definition: AgoraBase.h:489
Definition: AgoraBase.h:459
Definition: AgoraBase.h:402
Definition: AgoraBase.h:298
Definition: AgoraBase.h:95
Definition: AgoraBase.h:784
Definition: AgoraBase.h:361
Definition: AgoraBase.h:471
Definition: AgoraBase.h:530
Definition: AgoraBase.h:524
Definition: AgoraBase.h:114
Definition: AgoraBase.h:382
Definition: AgoraBase.h:441
virtual bool empty() const =0
Definition: AgoraBase.h:170
Definition: AgoraBase.h:453
Definition: AgoraBase.h:435
virtual ~IString()
Definition: AgoraBase.h:97
Definition: AgoraBase.h:406
Definition: AgoraBase.h:304
Definition: AgoraBase.h:115
Definition: AgoraBase.h:426
Definition: AgoraBase.h:645
Definition: AgoraBase.h:744
AutoPtr< IString > AString
Definition: AgoraBase.h:105
Definition: AgoraBase.h:720
Definition: AgoraBase.h:574
virtual const char * c_str()=0
Definition: AgoraBase.h:474
Definition: AgoraBase.h:726
Definition: AgoraBase.h:167
Definition: AgoraBase.h:283
Definition: AgoraBase.h:589
Definition: AgoraBase.h:444
ERROR_CODE_TYPE
Definition: AgoraBase.h:253
Definition: AgoraBase.h:327
Definition: AgoraBase.h:764
Definition: AgoraBase.h:708
Definition: AgoraBase.h:330
Definition: AgoraBase.h:486
Definition: AgoraBase.h:533
Definition: AgoraBase.h:248
Definition: AgoraBase.h:152
Definition: AgoraBase.h:429
Definition: AgoraBase.h:462
Definition: AgoraBase.h:418
Definition: AgoraBase.h:295
Definition: AgoraBase.h:749
Definition: AgoraBase.h:550
Definition: AgoraBase.h:702
Definition: AgoraBase.h:324
Definition: AgoraBase.h:277
Definition: AgoraBase.h:179
Definition: AgoraBase.h:516
~AutoPtr()
Definition: AgoraBase.h:52
Definition: AgoraBase.h:292
Definition: AgoraBase.h:130
Definition: AgoraBase.h:144
Definition: AgoraBase.h:388
value_type & operator*() const
Definition: AgoraBase.h:57
Definition: AgoraBase.h:289
Definition: AgoraBase.h:438
Definition: AgoraBase.h:158
Definition: AgoraBase.h:523
Definition: AgoraBase.h:504
Definition: AgoraBase.h:391
Definition: AgoraBase.h:468
Definition: AgoraBase.h:447
Definition: AgoraBase.h:581
Definition: AgoraBase.h:770
Definition: AgoraBase.h:379
Definition: AgoraBase.h:501
Definition: AgoraBase.h:568
Definition: AgoraBase.h:261
virtual const char * data()=0
Definition: AgoraBase.h:585
Definition: AgoraBase.h:364
Definition: AgoraBase.h:477
virtual void release()=0
Definition: AgoraBase.h:792
Definition: AgoraBase.h:637
Definition: AgoraBase.h:318
Definition: AgoraBase.h:649
Definition: AgoraBase.h:483
Definition: AgoraBase.h:412
Definition: AgoraBase.h:656
Definition: AgoraBase.h:492
Definition: AgoraBase.h:450
Definition: AgoraBase.h:141
Definition: AgoraBase.h:780
Definition: AgoraBase.h:541
AutoPtr(pointer_type p=0)
Definition: AgoraBase.h:49
Definition: AgoraBase.h:595
Definition: AgoraBase.h:358
Definition: AgoraBase.h:315
Definition: AgoraBase.h:642
Definition: AgoraBase.h:271
Definition: AgoraBase.h:519
Definition: AgoraBase.h:247
Definition: AgoraBase.h:341
Definition: AgoraBase.h:264
Definition: AgoraBase.h:155
Definition: AgoraBase.h:127
Definition: AgoraBase.h:112
Definition: AgoraBase.h:741
Definition: AgoraBase.h:553
Definition: AgoraBase.h:767
pointer_type release()
Definition: AgoraBase.h:69
Definition: AgoraBase.h:161
Definition: AgoraBase.h:333
Definition: AgoraBase.h:498
Definition: AgoraBase.h:219
Definition: AgoraBase.h:559
Definition: AgoraBase.h:113
Definition: AgoraBase.h:571
Definition: AgoraBase.h:639
Definition: AgoraBase.h:45
Definition: AgoraBase.h:660
Definition: AgoraBase.h:761
Definition: AgoraBase.h:592
Definition: AgoraBase.h:286
Definition: AgoraBase.h:349
Definition: AgoraBase.h:562
Definition: AgoraBase.h:274
pointer_type operator->() const
Definition: AgoraBase.h:61
Definition: AgoraBase.h:510
LOG_FILTER_TYPE
Definition: AgoraBase.h:774
Definition: AgoraBase.h:307
Definition: AgoraBase.h:355
Definition: AgoraBase.h:321
INTERFACE_ID_TYPE
Definition: AgoraBase.h:109
Definition: AgoraBase.h:136
Definition: AgoraBase.h:176
Definition: AgoraBase.h:544
Definition: AgoraBase.h:791