Agora Java API Reference for Android

NGIAgoraRtcConnection.h
1 //
2 // Agora SDK
3 //
4 // Created by Sting Feng in 2018-01.
5 // Copyright (c) 2018 Agora.io. All rights reserved.
6 //
7
8 #pragma once // NOLINT(build/header_guard)
9
10 #include "AgoraBase.h"
11 #include "time_utils.h"
12 #include <api/cpp/aosl_ares_class.h>
13
14 namespace agora {
15 namespace rtc {
16 class IAudioEncodedFrameSender;
17 class IRtcConnectionObserver;
18 class INetworkObserver;
19 class IRtcConnection;
20 class IVideoEncodedImageSender;
21 class ILocalUser;
22
26 struct TConnectionInfo {
30 conn_id_t id;
34 util::AString channelId;
38 CONNECTION_STATE_TYPE state;
42 util::AString localUserId;
46 uid_t internalUid;
47
48 int proxyType;
49
50 util::AString connectionIp;
51
52 TConnectionInfo() : id(-1), state(CONNECTION_STATE_DISCONNECTED), internalUid(0), proxyType(0) {}
53 };
54
55 struct TConnectSettings {
59 const char* token;
70 const char* channelId;
76 user_id_t userId;
77 /*Reserved for future use*/
78 const char* info;
79 /*
80 App can provide a app defined start time to trace some events like connect cost , first video, etc.
81 */
82 agora::Optional<int64_t> appDefinedStartTimeMs;
83 };
84
90 struct RtcConnectionConfiguration {
96 bool autoSubscribeAudio;
102 bool autoSubscribeVideo;
108 bool enableAudioRecordingOrPlayout;
112 int maxSendBitrate;
116 int minPort;
120 int maxPort;
124 CLIENT_ROLE_TYPE clientRoleType;
127 CHANNEL_PROFILE_TYPE channelProfile;
128
132 bool audioRecvEncodedFrame;
133
137 bool audioRecvMediaPacket;
138
142 bool videoRecvMediaPacket;
143
151 bool isInteractiveAudience;
152
156 bool isDataChannelOnly;
157
158 RtcConnectionConfiguration()
159 : autoSubscribeAudio(true),
160 autoSubscribeVideo(true),
161 enableAudioRecordingOrPlayout(true),
162 maxSendBitrate(-1),
163 minPort(0),
164 maxPort(0),
165 clientRoleType(CLIENT_ROLE_AUDIENCE),
166 channelProfile(CHANNEL_PROFILE_LIVE_BROADCASTING),
167 audioRecvEncodedFrame(false),
168 audioRecvMediaPacket(false),
169 videoRecvMediaPacket(false),
170 isInteractiveAudience(false),
171 isDataChannelOnly(false) {}
172 };
173
184 class IRtcConnection : public RefCountInterface {
185 protected:
186 ~IRtcConnection() {}
187
188 public:
216 virtual int connect(const char* token, const char* channelId, const char* info, user_id_t userId, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
217
229 virtual int connect(const TConnectSettings& settings, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
230
242 virtual int disconnect(aosl_ref_t ares = AOSL_REF_INVALID) = 0;
243
271 virtual int startLastmileProbeTest(const LastmileProbeConfig& config, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
272
279 virtual int stopLastmileProbeTest(aosl_ref_t ares = AOSL_REF_INVALID) = 0;
280
290 virtual int renewToken(const char* token, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
291
299 virtual TConnectionInfo getConnectionInfo() = 0;
300
308 virtual ILocalUser* getLocalUser() = 0;
309
322 virtual int getRemoteUsers(UserList& users) = 0;
323
334 virtual int getUserInfo(user_id_t userId, agora::UserInfo& userInfo) = 0;
335
344 virtual int registerObserver(IRtcConnectionObserver* observer, void(*safeDeleter)(IRtcConnectionObserver*) = NULL, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
345
355 virtual int unregisterObserver(IRtcConnectionObserver* observer) = 0;
356
365 virtual int registerNetworkObserver(INetworkObserver* observer, void(*safeDeleter)(INetworkObserver*) = NULL, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
366
376 virtual int unregisterNetworkObserver(INetworkObserver* observer) = 0;
377
385 virtual conn_id_t getConnId() = 0;
386
394 virtual RtcStats getTransportStats() = 0;
395
403 virtual agora::base::IAgoraParameter* getAgoraParameter() = 0;
404
424 virtual int createDataStream(int* streamId, bool reliable, bool ordered, bool sync) = 0;
425
441 virtual int sendStreamMessage(int streamId, const char* data, size_t length, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
442
461 virtual int enableEncryption(bool enabled, const EncryptionConfig& config, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
462
476 virtual int sendCustomReportMessage(const char* id, const char* category, const char* event, const char* label, int value, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
488 virtual int getUserInfoByUserAccount(const char* userAccount, rtc::UserInfo* userInfo) = 0;
500 virtual int getUserInfoByUid(uid_t uid, rtc::UserInfo* userInfo) = 0;
501 };
502
506 class IRtcConnectionObserver {
507 public:
508 virtual ~IRtcConnectionObserver() {}
509
516 virtual void onConnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
517
524 virtual void onDisconnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
525
532 virtual void onConnecting(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
533
540 virtual void onReconnecting(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
541
542 // This should be deleted. onConnected is enough.
543 virtual void onReconnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
544
550 virtual void onConnectionLost(const TConnectionInfo& connectionInfo) = 0;
551
559 virtual void onLastmileQuality(const QUALITY_TYPE quality) = 0;
560
568 virtual void onLastmileProbeResult(const LastmileProbeResult& result) = 0;
569
580 virtual void onTokenPrivilegeWillExpire(const char* token) = 0;
581
588 virtual void onTokenPrivilegeDidExpire() = 0;
589
596 virtual void onConnectionFailure(const TConnectionInfo& connectionInfo,
597 CONNECTION_CHANGED_REASON_TYPE reason) = 0;
598
606 virtual void onUserJoined(user_id_t userId) = 0;
607
616 virtual void onUserLeft(user_id_t userId, USER_OFFLINE_REASON_TYPE reason) = 0;
617
625 virtual void onTransportStats(const RtcStats& stats) = 0;
626
634 virtual void onChangeRoleSuccess(CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole, const ClientRoleOptions& newRoleOptions) {
635 (void)oldRole;
636 (void)newRole;
637 (void)newRoleOptions;
638 }
639
643 virtual void onChangeRoleFailure(CLIENT_ROLE_CHANGE_FAILED_REASON reason, CLIENT_ROLE_TYPE currentRole) {
644 (void)reason;
645 (void)currentRole;
646 }
647
654 virtual void onLicenseValidationFailure(LICENSE_ERROR_TYPE error) {
655 (void)error;
656 }
657
668 virtual void onUserNetworkQuality(user_id_t userId, QUALITY_TYPE txQuality,
669 QUALITY_TYPE rxQuality) {
670 (void)userId;
671 (void)txQuality;
672 (void)rxQuality;
673 }
674
678 virtual void onNetworkTypeChanged(NETWORK_TYPE type) {
679 (void)type;
680 }
681
683 virtual void onContentInspectResult(media::CONTENT_INSPECT_RESULT result) { (void)result; }
696 virtual void onSnapshotTaken(user_id_t userId, const char* filePath, int width, int height, int errCode) {
697 (void)userId;
698 (void)filePath;
699 (void)width;
700 (void)height;
701 (void)errCode;
702 }
708 virtual void onError(ERROR_CODE_TYPE error, const char* msg) {
709 (void)error;
710 (void)msg;
711 }
712
742 virtual void onChannelMediaRelayStateChanged(int state, int code) = 0;
743
749 virtual void onLocalUserRegistered(uid_t uid, const char* userAccount) {
750 (void)uid;
751 (void)userAccount;
752 }
753
755 virtual void onUserAccountUpdated(uid_t uid, const char* userAccount) {
756 (void)uid;
757 (void)userAccount;
758 }
759
769 virtual void onStreamMessageError(user_id_t userId, int streamId, int code, int missed,
770 int cached) {
771 (void)userId;
772 (void)streamId;
773 (void)code;
774 (void)missed;
775 (void)cached;
776 }
777
782 virtual void onEncryptionError(ENCRYPTION_ERROR_TYPE errorType) {
783 (void)errorType;
784 }
791 virtual void onUploadLogResult(const char* requestId, bool success, UPLOAD_ERROR_REASON reason) {
792 (void)requestId;
793 (void)success;
794 (void)reason;
795 }
796
802 virtual void onSetRtmFlagResult(int code) {
803 (void)code;
804 }
805
812 virtual void onWlAccMessage(WLACC_MESSAGE_REASON reason, WLACC_SUGGEST_ACTION action, const char* wlAccMsg) {
813 (void)reason;
814 (void)action;
815 (void)wlAccMsg;
816 }
817
823 virtual void onWlAccStats(const WlAccStats& currentStats, const WlAccStats& averageStats) {
824 (void)currentStats;
825 (void)averageStats;
826 }
827 };
828
829 class INetworkObserver {
830 public:
831 virtual ~INetworkObserver() {}
832
833 public:
842 virtual void onUplinkNetworkInfoUpdated(const UplinkNetworkInfo& info) {
843 (void)info;
844 }
845
853 virtual void onDownlinkNetworkInfoUpdated(const DownlinkNetworkInfo& info) {
854 (void)info;
855 }
856 };
857
858 } // namespace rtc
859 } // namespace agora
agora::rtc::IRtcConnectionObserver::onUserNetworkQuality
virtual void onUserNetworkQuality(user_id_t userId, QUALITY_TYPE txQuality, QUALITY_TYPE rxQuality)
Definition: NGIAgoraRtcConnection.h:668
agora::rtc::TConnectionInfo::state
CONNECTION_STATE_TYPE state
Definition: NGIAgoraRtcConnection.h:38
agora::rtc::RtcConnectionConfiguration::audioRecvEncodedFrame
bool audioRecvEncodedFrame
Definition: NGIAgoraRtcConnection.h:132
agora::rtc::RtcConnectionConfiguration::channelProfile
CHANNEL_PROFILE_TYPE channelProfile
Definition: NGIAgoraRtcConnection.h:127
agora::rtc::UserInfo
Definition: AgoraBase.h:6702
agora::rtc::LastmileProbeResult
Definition: AgoraBase.h:4391
agora::rtc::IRtcConnection::getConnectionInfo
virtual TConnectionInfo getConnectionInfo()=0
agora::rtc::IRtcConnectionObserver::onEncryptionError
virtual void onEncryptionError(ENCRYPTION_ERROR_TYPE errorType)
Definition: NGIAgoraRtcConnection.h:782
agora::rtc::IRtcConnectionObserver::onError
virtual void onError(ERROR_CODE_TYPE error, const char *msg)
Definition: NGIAgoraRtcConnection.h:708
agora::rtc::IRtcConnectionObserver::onConnecting
virtual void onConnecting(const TConnectionInfo &connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)=0
agora::base::IAgoraParameter
Definition: IAgoraParameter.h:147
agora::rtc::RtcConnectionConfiguration::minPort
int minPort
Definition: NGIAgoraRtcConnection.h:116
agora::rtc::LastmileProbeConfig
Definition: AgoraBase.h:4321
agora::rtc::IRtcConnectionObserver::onTransportStats
virtual void onTransportStats(const RtcStats &stats)=0
agora::rtc::INetworkObserver
Definition: NGIAgoraRtcConnection.h:829
agora::rtc::IRtcConnection::startLastmileProbeTest
virtual int startLastmileProbeTest(const LastmileProbeConfig &config, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::IRtcConnection::sendStreamMessage
virtual int sendStreamMessage(int streamId, const char *data, size_t length, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::IRtcConnectionObserver::onChangeRoleSuccess
virtual void onChangeRoleSuccess(CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole, const ClientRoleOptions &newRoleOptions)
Definition: NGIAgoraRtcConnection.h:634
agora::rtc::IRtcConnectionObserver::onChangeRoleFailure
virtual void onChangeRoleFailure(CLIENT_ROLE_CHANGE_FAILED_REASON reason, CLIENT_ROLE_TYPE currentRole)
Definition: NGIAgoraRtcConnection.h:643
agora::rtc::IRtcConnectionObserver
Definition: NGIAgoraRtcConnection.h:506
agora::rtc::IRtcConnectionObserver::onWlAccStats
virtual void onWlAccStats(const WlAccStats &currentStats, const WlAccStats &averageStats)
Definition: NGIAgoraRtcConnection.h:823
agora::rtc::IRtcConnectionObserver::onUserJoined
virtual void onUserJoined(user_id_t userId)=0
agora::rtc::IRtcConnection::getUserInfo
virtual int getUserInfo(user_id_t userId, agora::UserInfo &userInfo)=0
agora::rtc::IRtcConnection::renewToken
virtual int renewToken(const char *token, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::util::AList
Definition: AgoraBase.h:233
agora::rtc::IRtcConnectionObserver::onReconnecting
virtual void onReconnecting(const TConnectionInfo &connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)=0
agora::rtc::IRtcConnectionObserver::onDisconnected
virtual void onDisconnected(const TConnectionInfo &connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)=0
agora::rtc::IRtcConnection::getAgoraParameter
virtual agora::base::IAgoraParameter * getAgoraParameter()=0
agora::rtc::IRtcConnection::getUserInfoByUid
virtual int getUserInfoByUid(uid_t uid, rtc::UserInfo *userInfo)=0
agora::rtc::RtcConnectionConfiguration::autoSubscribeAudio
bool autoSubscribeAudio
Definition: NGIAgoraRtcConnection.h:96
agora::rtc::TConnectSettings
Definition: NGIAgoraRtcConnection.h:55
agora::rtc::RtcConnectionConfiguration::audioRecvMediaPacket
bool audioRecvMediaPacket
Definition: NGIAgoraRtcConnection.h:137
agora::rtc::UplinkNetworkInfo
Definition: AgoraBase.h:6342
agora::rtc::IRtcConnectionObserver::onContentInspectResult
virtual void onContentInspectResult(media::CONTENT_INSPECT_RESULT result)
Definition: NGIAgoraRtcConnection.h:683
agora::rtc::IRtcConnection::getTransportStats
virtual RtcStats getTransportStats()=0
agora::rtc::IRtcConnection::unregisterNetworkObserver
virtual int unregisterNetworkObserver(INetworkObserver *observer)=0
agora::rtc::TConnectionInfo
Definition: NGIAgoraRtcConnection.h:26
agora::rtc::IRtcConnection::getRemoteUsers
virtual int getRemoteUsers(UserList &users)=0
agora::rtc::IRtcConnectionObserver::onTokenPrivilegeWillExpire
virtual void onTokenPrivilegeWillExpire(const char *token)=0
agora::rtc::DownlinkNetworkInfo
Definition: AgoraBase.h:6355
agora::rtc::IRtcConnectionObserver::onUserAccountUpdated
virtual void onUserAccountUpdated(uid_t uid, const char *userAccount)
Definition: NGIAgoraRtcConnection.h:755
agora::rtc::RtcConnectionConfiguration::isInteractiveAudience
bool isInteractiveAudience
Definition: NGIAgoraRtcConnection.h:151
agora::rtc::IRtcConnectionObserver::onSetRtmFlagResult
virtual void onSetRtmFlagResult(int code)
Definition: NGIAgoraRtcConnection.h:802
agora::rtc::IRtcConnectionObserver::onTokenPrivilegeDidExpire
virtual void onTokenPrivilegeDidExpire()=0
agora::rtc::IRtcConnection::createDataStream
virtual int createDataStream(int *streamId, bool reliable, bool ordered, bool sync)=0
agora::rtc::IRtcConnection::connect
virtual int connect(const char *token, const char *channelId, const char *info, user_id_t userId, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::TConnectionInfo::channelId
util::AString channelId
Definition: NGIAgoraRtcConnection.h:34
agora::rtc::IRtcConnectionObserver::onLastmileProbeResult
virtual void onLastmileProbeResult(const LastmileProbeResult &result)=0
agora::rtc::IRtcConnectionObserver::onConnected
virtual void onConnected(const TConnectionInfo &connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)=0
agora::rtc::IRtcConnectionObserver::onLocalUserRegistered
virtual void onLocalUserRegistered(uid_t uid, const char *userAccount)
Definition: NGIAgoraRtcConnection.h:749
agora::rtc::IRtcConnectionObserver::onStreamMessageError
virtual void onStreamMessageError(user_id_t userId, int streamId, int code, int missed, int cached)
Definition: NGIAgoraRtcConnection.h:769
agora::rtc::IRtcConnection::getLocalUser
virtual ILocalUser * getLocalUser()=0
agora::rtc::INetworkObserver::onDownlinkNetworkInfoUpdated
virtual void onDownlinkNetworkInfoUpdated(const DownlinkNetworkInfo &info)
Definition: NGIAgoraRtcConnection.h:853
agora::rtc::IRtcConnectionObserver::onChannelMediaRelayStateChanged
virtual void onChannelMediaRelayStateChanged(int state, int code)=0
agora::UserInfo
Definition: AgoraBase.h:820
agora::rtc::IRtcConnectionObserver::onConnectionFailure
virtual void onConnectionFailure(const TConnectionInfo &connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)=0
agora::rtc::ILocalUser
Definition: NGIAgoraLocalUser.h:56
agora::rtc::RtcConnectionConfiguration::clientRoleType
CLIENT_ROLE_TYPE clientRoleType
Definition: NGIAgoraRtcConnection.h:124
agora::rtc::WlAccStats
Definition: AgoraBase.h:4598
agora::rtc::RtcConnectionConfiguration::enableAudioRecordingOrPlayout
bool enableAudioRecordingOrPlayout
Definition: NGIAgoraRtcConnection.h:108
agora::rtc::IRtcConnection::stopLastmileProbeTest
virtual int stopLastmileProbeTest(aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::IRtcConnectionObserver::onNetworkTypeChanged
virtual void onNetworkTypeChanged(NETWORK_TYPE type)
Definition: NGIAgoraRtcConnection.h:678
agora::rtc::IRtcConnectionObserver::onConnectionLost
virtual void onConnectionLost(const TConnectionInfo &connectionInfo)=0
agora::rtc::RtcConnectionConfiguration::videoRecvMediaPacket
bool videoRecvMediaPacket
Definition: NGIAgoraRtcConnection.h:142
agora::rtc::RtcConnectionConfiguration::autoSubscribeVideo
bool autoSubscribeVideo
Definition: NGIAgoraRtcConnection.h:102
agora::rtc::IRtcConnectionObserver::onUserLeft
virtual void onUserLeft(user_id_t userId, USER_OFFLINE_REASON_TYPE reason)=0
agora::rtc::IRtcConnectionObserver::onSnapshotTaken
virtual void onSnapshotTaken(user_id_t userId, const char *filePath, int width, int height, int errCode)
snapshot taken callback
Definition: NGIAgoraRtcConnection.h:696
agora::rtc::IRtcConnection::connect
virtual int connect(const TConnectSettings &settings, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::EncryptionConfig
Definition: AgoraBase.h:6509
agora::rtc::IRtcConnectionObserver::onWlAccMessage
virtual void onWlAccMessage(WLACC_MESSAGE_REASON reason, WLACC_SUGGEST_ACTION action, const char *wlAccMsg)
Definition: NGIAgoraRtcConnection.h:812
agora::rtc::IRtcConnection::disconnect
virtual int disconnect(aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::IRtcConnectionObserver::onLastmileQuality
virtual void onLastmileQuality(const QUALITY_TYPE quality)=0
agora::rtc::TConnectSettings::token
const char * token
Definition: NGIAgoraRtcConnection.h:59
agora::rtc::RtcStats
Definition: AgoraBase.h:2318
agora::rtc::IRtcConnectionObserver::onLicenseValidationFailure
virtual void onLicenseValidationFailure(LICENSE_ERROR_TYPE error)
Definition: NGIAgoraRtcConnection.h:654
agora::rtc::RtcConnectionConfiguration
Definition: NGIAgoraRtcConnection.h:90
agora::rtc::IRtcConnection::sendCustomReportMessage
virtual int sendCustomReportMessage(const char *id, const char *category, const char *event, const char *label, int value, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::RefCountInterface
Definition: AgoraRefPtr.h:31
agora::rtc::IRtcConnection::registerObserver
virtual int registerObserver(IRtcConnectionObserver *observer, void(*safeDeleter)(IRtcConnectionObserver *)=NULL, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::RtcConnectionConfiguration::maxPort
int maxPort
Definition: NGIAgoraRtcConnection.h:120
agora::rtc::TConnectSettings::userId
user_id_t userId
Definition: NGIAgoraRtcConnection.h:76
agora::rtc::INetworkObserver::onUplinkNetworkInfoUpdated
virtual void onUplinkNetworkInfoUpdated(const UplinkNetworkInfo &info)
Definition: NGIAgoraRtcConnection.h:842
agora::rtc::TConnectionInfo::localUserId
util::AString localUserId
Definition: NGIAgoraRtcConnection.h:42
agora::rtc::IRtcConnectionObserver::onUploadLogResult
virtual void onUploadLogResult(const char *requestId, bool success, UPLOAD_ERROR_REASON reason)
Definition: NGIAgoraRtcConnection.h:791
agora::rtc::TConnectSettings::channelId
const char * channelId
Definition: NGIAgoraRtcConnection.h:70
agora::rtc::IRtcConnection
Definition: NGIAgoraRtcConnection.h:184
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:156
agora::rtc::RtcConnectionConfiguration::isDataChannelOnly
bool isDataChannelOnly
Definition: NGIAgoraRtcConnection.h:156
agora::rtc::IRtcConnection::getConnId
virtual conn_id_t getConnId()=0
agora::rtc::IRtcConnection::enableEncryption
virtual int enableEncryption(bool enabled, const EncryptionConfig &config, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::IRtcConnection::getUserInfoByUserAccount
virtual int getUserInfoByUserAccount(const char *userAccount, rtc::UserInfo *userInfo)=0
agora::rtc::IRtcConnection::unregisterObserver
virtual int unregisterObserver(IRtcConnectionObserver *observer)=0
agora::rtc::RtcConnectionConfiguration::maxSendBitrate
int maxSendBitrate
Definition: NGIAgoraRtcConnection.h:112
agora::rtc::TConnectionInfo::internalUid
uid_t internalUid
Definition: NGIAgoraRtcConnection.h:46
agora::Optional< int64_t >
agora::rtc::ClientRoleOptions
Definition: AgoraBase.h:2565
agora::rtc::IRtcConnection::registerNetworkObserver
virtual int registerNetworkObserver(INetworkObserver *observer, void(*safeDeleter)(INetworkObserver *)=NULL, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::TConnectionInfo::id
conn_id_t id
Definition: NGIAgoraRtcConnection.h:30