Agora C++ API Reference for All Platforms
Loading...
Searching...
No Matches
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
14namespace agora {
15namespace rtc {
19class IRtcConnection;
21class ILocalUser;
22
54
59 const char* token;
70 const char* channelId;
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 */
83};
84
173
185 protected:
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
292 virtual int renewToken(const char* token, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
293
302
310 virtual ILocalUser* getLocalUser() = 0;
311
324 virtual int getRemoteUsers(UserList& users) = 0;
325
336 virtual int getUserInfo(user_id_t userId, agora::UserInfo& userInfo) = 0;
337
346 virtual int registerObserver(IRtcConnectionObserver* observer, void(*safeDeleter)(IRtcConnectionObserver*) = NULL, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
347
357 virtual int unregisterObserver(IRtcConnectionObserver* observer) = 0;
358
367 virtual int registerNetworkObserver(INetworkObserver* observer, void(*safeDeleter)(INetworkObserver*) = NULL, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
368
378 virtual int unregisterNetworkObserver(INetworkObserver* observer) = 0;
379
387 virtual conn_id_t getConnId() = 0;
388
397
406
426 virtual int createDataStream(int* streamId, bool reliable, bool ordered, bool sync) = 0;
427
443 virtual int sendStreamMessage(int streamId, const char* data, size_t length, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
444
455 virtual int sendRdtMessage(user_id_t userId, RdtStreamType type, const char *data, size_t length, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
456
467 virtual int sendMediaControlMessage(user_id_t userId, const char* data, size_t length, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
468
487 virtual int enableEncryption(bool enabled, const EncryptionConfig& config, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
488
502 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;
514 virtual int getUserInfoByUserAccount(const char* userAccount, rtc::UserInfo* userInfo) = 0;
526 virtual int getUserInfoByUid(uid_t uid, rtc::UserInfo* userInfo) = 0;
527
546 virtual int enableMultipath(bool enable, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
547
560 virtual int setUplinkMultipathMode(MultipathMode mode, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
561
574 virtual int setDownlinkMultipathMode(MultipathMode mode, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
575
588 virtual int setPreferMultipathType(MultipathType type, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
589};
590
595 public:
597
604 virtual void onConnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
605
612 virtual void onDisconnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
613
620 virtual void onConnecting(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
621
628 virtual void onReconnecting(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
629
630 // This should be deleted. onConnected is enough.
631 virtual void onReconnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
632
638 virtual void onConnectionLost(const TConnectionInfo& connectionInfo) = 0;
639
647 virtual void onLastmileQuality(const QUALITY_TYPE quality) = 0;
648
656 virtual void onLastmileProbeResult(const LastmileProbeResult& result) = 0;
657
668 virtual void onTokenPrivilegeWillExpire(const char* token) = 0;
669
676 virtual void onTokenPrivilegeDidExpire() = 0;
677
689 virtual void onRenewTokenResult(const char* token, RENEW_TOKEN_ERROR_CODE code) = 0;
690
697 virtual void onConnectionFailure(const TConnectionInfo& connectionInfo,
699
707 virtual void onUserJoined(user_id_t userId) = 0;
708
717 virtual void onUserLeft(user_id_t userId, USER_OFFLINE_REASON_TYPE reason) = 0;
718
726 virtual void onTransportStats(const RtcStats& stats) = 0;
727
735 virtual void onChangeRoleSuccess(CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole, const ClientRoleOptions& newRoleOptions) {
736 (void)oldRole;
737 (void)newRole;
738 (void)newRoleOptions;
739 }
740
745 (void)reason;
746 (void)currentRole;
747 }
748
756 (void)error;
757 }
758
769 virtual void onUserNetworkQuality(user_id_t userId, QUALITY_TYPE txQuality,
770 QUALITY_TYPE rxQuality) {
771 (void)userId;
772 (void)txQuality;
773 (void)rxQuality;
774 }
775
780 (void)type;
781 }
782
784 virtual void onContentInspectResult(media::CONTENT_INSPECT_RESULT result) { (void)result; }
797 virtual void onSnapshotTaken(user_id_t userId, const char* filePath, int width, int height, int errCode) {
798 (void)userId;
799 (void)filePath;
800 (void)width;
801 (void)height;
802 (void)errCode;
803 }
804
809 virtual void onError(ERROR_CODE_TYPE error, const char* msg) {
810 (void)error;
811 (void)msg;
812 }
813
843 virtual void onChannelMediaRelayStateChanged(int state, int code) = 0;
844
850 virtual void onLocalUserRegistered(uid_t uid, const char* userAccount) {
851 (void)uid;
852 (void)userAccount;
853 }
854
856 virtual void onUserAccountUpdated(uid_t uid, const char* userAccount) {
857 (void)uid;
858 (void)userAccount;
859 }
860
870 virtual void onStreamMessageError(user_id_t userId, int streamId, int code, int missed,
871 int cached) {
872 (void)userId;
873 (void)streamId;
874 (void)code;
875 (void)missed;
876 (void)cached;
877 }
878
883 virtual void onEncryptionError(ENCRYPTION_ERROR_TYPE errorType) {
884 (void)errorType;
885 }
886
892 virtual void onUploadLogResult(const char* requestId, bool success, UPLOAD_ERROR_REASON reason) {
893 (void)requestId;
894 (void)success;
895 (void)reason;
896 }
897
903 virtual void onSetRtmFlagResult(int code) {
904 (void)code;
905 }
906
912 virtual void onMultipathStats(const MultipathStats& stats) {
913 (void)stats;
914 }
915};
916
918 public:
919 virtual ~INetworkObserver() {}
920
921 public:
931 (void)info;
932 }
933
942 (void)info;
943 }
944};
945
946} // namespace rtc
947} // namespace agora
Definition AgoraOptional.h:413
Definition AgoraRefPtr.h:31
Definition IAgoraParameter.h:147
Definition NGIAgoraMediaNode.h:277
Definition NGIAgoraLocalUser.h:56
Definition NGIAgoraRtcConnection.h:917
virtual void onDownlinkNetworkInfoUpdated(const DownlinkNetworkInfo &info)
Definition NGIAgoraRtcConnection.h:941
virtual void onUplinkNetworkInfoUpdated(const UplinkNetworkInfo &info)
Definition NGIAgoraRtcConnection.h:930
virtual ~INetworkObserver()
Definition NGIAgoraRtcConnection.h:919
Definition NGIAgoraRtcConnection.h:184
virtual int disconnect(aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int registerObserver(IRtcConnectionObserver *observer, void(*safeDeleter)(IRtcConnectionObserver *)=NULL, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int sendRdtMessage(user_id_t userId, RdtStreamType type, const char *data, size_t length, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int registerNetworkObserver(INetworkObserver *observer, void(*safeDeleter)(INetworkObserver *)=NULL, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int setUplinkMultipathMode(MultipathMode mode, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int connect(const char *token, const char *channelId, const char *info, user_id_t userId, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int startLastmileProbeTest(const LastmileProbeConfig &config, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual conn_id_t getConnId()=0
virtual int createDataStream(int *streamId, bool reliable, bool ordered, bool sync)=0
virtual int unregisterNetworkObserver(INetworkObserver *observer)=0
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
virtual int setPreferMultipathType(MultipathType type, aosl_ref_t ares=AOSL_REF_INVALID)=0
~IRtcConnection()
Definition NGIAgoraRtcConnection.h:186
virtual int setDownlinkMultipathMode(MultipathMode mode, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int sendMediaControlMessage(user_id_t userId, const char *data, size_t length, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int renewToken(const char *token, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int getUserInfoByUid(uid_t uid, rtc::UserInfo *userInfo)=0
virtual ILocalUser * getLocalUser()=0
virtual int sendStreamMessage(int streamId, const char *data, size_t length, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual RtcStats getTransportStats()=0
virtual int stopLastmileProbeTest(aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int getUserInfoByUserAccount(const char *userAccount, rtc::UserInfo *userInfo)=0
virtual TConnectionInfo getConnectionInfo()=0
virtual int getRemoteUsers(UserList &users)=0
virtual int getUserInfo(user_id_t userId, agora::UserInfo &userInfo)=0
virtual int unregisterObserver(IRtcConnectionObserver *observer)=0
virtual agora::base::IAgoraParameter * getAgoraParameter()=0
virtual int enableEncryption(bool enabled, const EncryptionConfig &config, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int enableMultipath(bool enable, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int connect(const TConnectSettings &settings, aosl_ref_t ares=AOSL_REF_INVALID)=0
Definition NGIAgoraRtcConnection.h:594
virtual void onChannelMediaRelayStateChanged(int state, int code)=0
virtual void onUserLeft(user_id_t userId, USER_OFFLINE_REASON_TYPE reason)=0
virtual void onConnectionLost(const TConnectionInfo &connectionInfo)=0
virtual void onNetworkTypeChanged(NETWORK_TYPE type)
Definition NGIAgoraRtcConnection.h:779
virtual void onConnected(const TConnectionInfo &connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)=0
virtual void onEncryptionError(ENCRYPTION_ERROR_TYPE errorType)
Definition NGIAgoraRtcConnection.h:883
virtual void onLastmileQuality(const QUALITY_TYPE quality)=0
virtual void onTokenPrivilegeWillExpire(const char *token)=0
virtual void onSnapshotTaken(user_id_t userId, const char *filePath, int width, int height, int errCode)
snapshot taken callback
Definition NGIAgoraRtcConnection.h:797
virtual void onConnectionFailure(const TConnectionInfo &connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)=0
virtual void onRenewTokenResult(const char *token, RENEW_TOKEN_ERROR_CODE code)=0
Reports the result of calling renewToken.
virtual void onError(ERROR_CODE_TYPE error, const char *msg)
Definition NGIAgoraRtcConnection.h:809
virtual ~IRtcConnectionObserver()
Definition NGIAgoraRtcConnection.h:596
virtual void onReconnecting(const TConnectionInfo &connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)=0
virtual void onLicenseValidationFailure(LICENSE_ERROR_TYPE error)
Definition NGIAgoraRtcConnection.h:755
virtual void onUserAccountUpdated(uid_t uid, const char *userAccount)
Definition NGIAgoraRtcConnection.h:856
virtual void onChangeRoleFailure(CLIENT_ROLE_CHANGE_FAILED_REASON reason, CLIENT_ROLE_TYPE currentRole)
Definition NGIAgoraRtcConnection.h:744
virtual void onContentInspectResult(media::CONTENT_INSPECT_RESULT result)
Definition NGIAgoraRtcConnection.h:784
virtual void onLastmileProbeResult(const LastmileProbeResult &result)=0
virtual void onLocalUserRegistered(uid_t uid, const char *userAccount)
Definition NGIAgoraRtcConnection.h:850
virtual void onMultipathStats(const MultipathStats &stats)
Definition NGIAgoraRtcConnection.h:912
virtual void onChangeRoleSuccess(CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole, const ClientRoleOptions &newRoleOptions)
Definition NGIAgoraRtcConnection.h:735
virtual void onTransportStats(const RtcStats &stats)=0
virtual void onSetRtmFlagResult(int code)
Definition NGIAgoraRtcConnection.h:903
virtual void onUserNetworkQuality(user_id_t userId, QUALITY_TYPE txQuality, QUALITY_TYPE rxQuality)
Definition NGIAgoraRtcConnection.h:769
virtual void onReconnected(const TConnectionInfo &connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)=0
virtual void onTokenPrivilegeDidExpire()=0
virtual void onUploadLogResult(const char *requestId, bool success, UPLOAD_ERROR_REASON reason)
Definition NGIAgoraRtcConnection.h:892
virtual void onUserJoined(user_id_t userId)=0
virtual void onDisconnected(const TConnectionInfo &connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)=0
virtual void onStreamMessageError(user_id_t userId, int streamId, int code, int missed, int cached)
Definition NGIAgoraRtcConnection.h:870
virtual void onConnecting(const TConnectionInfo &connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)=0
Definition NGIAgoraMediaNode.h:470
CONTENT_INSPECT_RESULT
Definition AgoraMediaBase.h:1154
Definition AgoraExtensions.h:5
CONNECTION_CHANGED_REASON_TYPE
Definition AgoraBase.h:4782
ENCRYPTION_ERROR_TYPE
Definition AgoraBase.h:6871
CLIENT_ROLE_TYPE
Definition AgoraBase.h:2879
@ CLIENT_ROLE_AUDIENCE
Definition AgoraBase.h:2887
CONNECTION_STATE_TYPE
Definition AgoraBase.h:4215
@ CONNECTION_STATE_DISCONNECTED
Definition AgoraBase.h:4222
USER_OFFLINE_REASON_TYPE
Definition AgoraBase.h:888
MultipathMode
Defines how data is transmitted across multiple network paths.
Definition AgoraBase.h:2562
MultipathType
Defines the types of network paths used in multipath transmission.
Definition AgoraBase.h:2579
RENEW_TOKEN_ERROR_CODE
Definition AgoraBase.h:6908
RdtStreamType
Reliable Data Transmission Tunnel message stream type.
Definition AgoraBase.h:7418
CLIENT_ROLE_CHANGE_FAILED_REASON
Definition AgoraBase.h:4903
NETWORK_TYPE
Definition AgoraBase.h:4927
unsigned int uid_t
Definition AgoraMediaBase.h:28
unsigned int conn_id_t
Definition AgoraMediaBase.h:30
UPLOAD_ERROR_REASON
Definition AgoraBase.h:6896
QUALITY_TYPE
Definition AgoraBase.h:925
CopyableAutoPtr< IString > AString
Definition AgoraBase.h:182
Definition AgoraAtomicOps.h:21
util::AList< UserInfo > UserList
Definition AgoraBase.h:880
const char * user_id_t
Definition AgoraBase.h:853
ERROR_CODE_TYPE
Definition AgoraBase.h:456
CHANNEL_PROFILE_TYPE
Definition AgoraBase.h:267
@ CHANNEL_PROFILE_LIVE_BROADCASTING
Definition AgoraBase.h:279
LICENSE_ERROR_TYPE
Definition AgoraBase.h:798
Definition AgoraBase.h:859
Definition AgoraBase.h:2927
Definition AgoraBase.h:6811
Definition AgoraBase.h:4688
Definition AgoraBase.h:4758
Aggregates statistics for all network paths used in multipath transmission.
Definition AgoraBase.h:2625
bool autoSubscribeAudio
Definition NGIAgoraRtcConnection.h:96
bool audioRecvMediaPacket
Definition NGIAgoraRtcConnection.h:137
RtcConnectionConfiguration()
Definition NGIAgoraRtcConnection.h:158
CLIENT_ROLE_TYPE clientRoleType
Definition NGIAgoraRtcConnection.h:124
bool isDataChannelOnly
Definition NGIAgoraRtcConnection.h:156
int maxSendBitrate
Definition NGIAgoraRtcConnection.h:112
int maxPort
Definition NGIAgoraRtcConnection.h:120
CHANNEL_PROFILE_TYPE channelProfile
Definition NGIAgoraRtcConnection.h:127
int minPort
Definition NGIAgoraRtcConnection.h:116
bool videoRecvMediaPacket
Definition NGIAgoraRtcConnection.h:142
bool isInteractiveAudience
Definition NGIAgoraRtcConnection.h:151
bool enableAudioRecordingOrPlayout
Definition NGIAgoraRtcConnection.h:108
bool audioRecvEncodedFrame
Definition NGIAgoraRtcConnection.h:132
bool autoSubscribeVideo
Definition NGIAgoraRtcConnection.h:102
Definition AgoraBase.h:2672
Definition NGIAgoraRtcConnection.h:55
const char * token
Definition NGIAgoraRtcConnection.h:59
agora::Optional< int64_t > appDefinedStartTimeMs
Definition NGIAgoraRtcConnection.h:82
const char * info
Definition NGIAgoraRtcConnection.h:78
const char * channelId
Definition NGIAgoraRtcConnection.h:70
user_id_t userId
Definition NGIAgoraRtcConnection.h:76
Definition NGIAgoraRtcConnection.h:26
util::AString connectionIp
Definition NGIAgoraRtcConnection.h:50
TConnectionInfo()
Definition NGIAgoraRtcConnection.h:52
conn_id_t id
Definition NGIAgoraRtcConnection.h:30
util::AString localUserId
Definition NGIAgoraRtcConnection.h:42
int proxyType
Definition NGIAgoraRtcConnection.h:48
uid_t internalUid
Definition NGIAgoraRtcConnection.h:46
CONNECTION_STATE_TYPE state
Definition NGIAgoraRtcConnection.h:38
util::AString channelId
Definition NGIAgoraRtcConnection.h:34
Definition AgoraBase.h:7053