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 
30  conn_id_t id;
38  CONNECTION_STATE_TYPE state;
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 
59  const char* token;
70  const char* channelId;
76  user_id_t userId;
77 
78  /*
79  App can provide a app defined start time to trace some events like connect cost , first video, etc.
80  */
81  agora::Optional<int64_t> appDefinedStartTimeMs;
82 };
83 
115  int minPort;
119  int maxPort;
123  CLIENT_ROLE_TYPE clientRoleType;
126  CHANNEL_PROFILE_TYPE channelProfile;
127 
132 
137 
142 
151 
156 
158  : autoSubscribeAudio(true),
159  autoSubscribeVideo(true),
161  maxSendBitrate(-1),
162  minPort(0),
163  maxPort(0),
164  clientRoleType(CLIENT_ROLE_AUDIENCE),
165  channelProfile(CHANNEL_PROFILE_LIVE_BROADCASTING),
166  audioRecvEncodedFrame(false),
167  audioRecvMediaPacket(false),
168  videoRecvMediaPacket(false),
169  isInteractiveAudience(false),
170  isDataChannelOnly(false) {}
171 };
172 
184  protected:
185  ~IRtcConnection() {}
186 
187  public:
215  virtual int connect(const char* token, const char* channelId, user_id_t userId, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
216 
228  virtual int connect(const TConnectSettings& settings, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
229 
241  virtual int disconnect(aosl_ref_t ares = AOSL_REF_INVALID) = 0;
242 
270  virtual int startLastmileProbeTest(const LastmileProbeConfig& config, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
271 
278  virtual int stopLastmileProbeTest(aosl_ref_t ares = AOSL_REF_INVALID) = 0;
279 
289  virtual int renewToken(const char* token, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
290 
299 
307  virtual ILocalUser* getLocalUser() = 0;
308 
321  virtual int getRemoteUsers(UserList& users) = 0;
322 
333  virtual int getUserInfo(user_id_t userId, agora::UserInfo& userInfo) = 0;
334 
343  virtual int registerObserver(IRtcConnectionObserver* observer, void(*safeDeleter)(IRtcConnectionObserver*) = NULL, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
344 
354  virtual int unregisterObserver(IRtcConnectionObserver* observer) = 0;
355 
364  virtual int registerNetworkObserver(INetworkObserver* observer, void(*safeDeleter)(INetworkObserver*) = NULL, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
365 
375  virtual int unregisterNetworkObserver(INetworkObserver* observer) = 0;
376 
384  virtual conn_id_t getConnId() = 0;
385 
394 
403 
423  virtual int createDataStream(int* streamId, bool reliable, bool ordered, bool sync) = 0;
424 
440  virtual int sendStreamMessage(int streamId, const char* data, size_t length, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
441 
460  virtual int enableEncryption(bool enabled, const EncryptionConfig& config, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
461 
475  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;
487  virtual int getUserInfoByUserAccount(const char* userAccount, rtc::UserInfo* userInfo) = 0;
499  virtual int getUserInfoByUid(uid_t uid, rtc::UserInfo* userInfo) = 0;
500 };
501 
506  public:
507  virtual ~IRtcConnectionObserver() {}
508 
515  virtual void onConnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
516 
523  virtual void onDisconnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
524 
531  virtual void onConnecting(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
532 
539  virtual void onReconnecting(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
540 
541  // This should be deleted. onConnected is enough.
542  virtual void onReconnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
543 
549  virtual void onConnectionLost(const TConnectionInfo& connectionInfo) = 0;
550 
558  virtual void onLastmileQuality(const QUALITY_TYPE quality) = 0;
559 
567  virtual void onLastmileProbeResult(const LastmileProbeResult& result) = 0;
568 
579  virtual void onTokenPrivilegeWillExpire(const char* token) = 0;
580 
587  virtual void onTokenPrivilegeDidExpire() = 0;
588 
595  virtual void onConnectionFailure(const TConnectionInfo& connectionInfo,
596  CONNECTION_CHANGED_REASON_TYPE reason) = 0;
597 
605  virtual void onUserJoined(user_id_t userId) = 0;
606 
615  virtual void onUserLeft(user_id_t userId, USER_OFFLINE_REASON_TYPE reason) = 0;
616 
624  virtual void onTransportStats(const RtcStats& stats) = 0;
625 
633  virtual void onChangeRoleSuccess(CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole, const ClientRoleOptions& newRoleOptions) {
634  (void)oldRole;
635  (void)newRole;
636  (void)newRoleOptions;
637  }
638 
642  virtual void onChangeRoleFailure(CLIENT_ROLE_CHANGE_FAILED_REASON reason, CLIENT_ROLE_TYPE currentRole) {
643  (void)reason;
644  (void)currentRole;
645  }
646 
653  virtual void onLicenseValidationFailure(LICENSE_ERROR_TYPE error) {
654  (void)error;
655  }
656 
667  virtual void onUserNetworkQuality(user_id_t userId, QUALITY_TYPE txQuality,
668  QUALITY_TYPE rxQuality) {
669  (void)userId;
670  (void)txQuality;
671  (void)rxQuality;
672  }
673 
677  virtual void onNetworkTypeChanged(NETWORK_TYPE type) {
678  (void)type;
679  }
680 
682  virtual void onContentInspectResult(media::CONTENT_INSPECT_RESULT result) { (void)result; }
695  virtual void onSnapshotTaken(user_id_t userId, const char* filePath, int width, int height, int errCode) {
696  (void)userId;
697  (void)filePath;
698  (void)width;
699  (void)height;
700  (void)errCode;
701  }
707  virtual void onError(ERROR_CODE_TYPE error, const char* msg) {
708  (void)error;
709  (void)msg;
710  }
711 
741  virtual void onChannelMediaRelayStateChanged(int state, int code) = 0;
742 
748  virtual void onLocalUserRegistered(uid_t uid, const char* userAccount) {
749  (void)uid;
750  (void)userAccount;
751  }
752 
754  virtual void onUserAccountUpdated(uid_t uid, const char* userAccount) {
755  (void)uid;
756  (void)userAccount;
757  }
758 
768  virtual void onStreamMessageError(user_id_t userId, int streamId, int code, int missed,
769  int cached) {
770  (void)userId;
771  (void)streamId;
772  (void)code;
773  (void)missed;
774  (void)cached;
775  }
776 
781  virtual void onEncryptionError(ENCRYPTION_ERROR_TYPE errorType) {
782  (void)errorType;
783  }
790  virtual void onUploadLogResult(const char* requestId, bool success, UPLOAD_ERROR_REASON reason) {
791  (void)requestId;
792  (void)success;
793  (void)reason;
794  }
795 
801  virtual void onSetRtmFlagResult(int code) {
802  (void)code;
803  }
804 
811  virtual void onWlAccMessage(WLACC_MESSAGE_REASON reason, WLACC_SUGGEST_ACTION action, const char* wlAccMsg) {
812  (void)reason;
813  (void)action;
814  (void)wlAccMsg;
815  }
816 
822  virtual void onWlAccStats(const WlAccStats& currentStats, const WlAccStats& averageStats) {
823  (void)currentStats;
824  (void)averageStats;
825  }
826 };
827 
829  public:
830  virtual ~INetworkObserver() {}
831 
832  public:
841  virtual void onUplinkNetworkInfoUpdated(const UplinkNetworkInfo& info) {
842  (void)info;
843  }
844 
853  (void)info;
854  }
855 };
856 
857 } // namespace rtc
858 } // namespace agora
agora::rtc::IRtcConnectionObserver::onUserNetworkQuality
virtual void onUserNetworkQuality(user_id_t userId, QUALITY_TYPE txQuality, QUALITY_TYPE rxQuality)
Definition: NGIAgoraRtcConnection.h:667
agora::rtc::TConnectionInfo::state
CONNECTION_STATE_TYPE state
Definition: NGIAgoraRtcConnection.h:38
agora::rtc::RtcConnectionConfiguration::audioRecvEncodedFrame
bool audioRecvEncodedFrame
Definition: NGIAgoraRtcConnection.h:131
agora::rtc::RtcConnectionConfiguration::channelProfile
CHANNEL_PROFILE_TYPE channelProfile
Definition: NGIAgoraRtcConnection.h:126
agora::rtc::UserInfo
Definition: AgoraBase.h:6034
agora::rtc::LastmileProbeResult
Definition: AgoraBase.h:4171
agora::rtc::IRtcConnection::getConnectionInfo
virtual TConnectionInfo getConnectionInfo()=0
agora::rtc::IRtcConnectionObserver::onEncryptionError
virtual void onEncryptionError(ENCRYPTION_ERROR_TYPE errorType)
Definition: NGIAgoraRtcConnection.h:781
agora::rtc::IRtcConnectionObserver::onError
virtual void onError(ERROR_CODE_TYPE error, const char *msg)
Definition: NGIAgoraRtcConnection.h:707
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:115
agora::rtc::LastmileProbeConfig
Definition: AgoraBase.h:4103
agora::rtc::IRtcConnectionObserver::onTransportStats
virtual void onTransportStats(const RtcStats &stats)=0
agora::rtc::INetworkObserver
Definition: NGIAgoraRtcConnection.h:828
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:633
agora::rtc::IRtcConnectionObserver::onChangeRoleFailure
virtual void onChangeRoleFailure(CLIENT_ROLE_CHANGE_FAILED_REASON reason, CLIENT_ROLE_TYPE currentRole)
Definition: NGIAgoraRtcConnection.h:642
agora::rtc::IRtcConnectionObserver
Definition: NGIAgoraRtcConnection.h:505
agora::rtc::IRtcConnectionObserver::onWlAccStats
virtual void onWlAccStats(const WlAccStats &currentStats, const WlAccStats &averageStats)
Definition: NGIAgoraRtcConnection.h:822
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:95
agora::rtc::TConnectSettings
Definition: NGIAgoraRtcConnection.h:55
agora::rtc::RtcConnectionConfiguration::audioRecvMediaPacket
bool audioRecvMediaPacket
Definition: NGIAgoraRtcConnection.h:136
agora::rtc::IRtcConnectionObserver::onContentInspectResult
virtual void onContentInspectResult(media::CONTENT_INSPECT_RESULT result)
Definition: NGIAgoraRtcConnection.h:682
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::IRtcConnectionObserver::onUserAccountUpdated
virtual void onUserAccountUpdated(uid_t uid, const char *userAccount)
Definition: NGIAgoraRtcConnection.h:754
agora::rtc::RtcConnectionConfiguration::isInteractiveAudience
bool isInteractiveAudience
Definition: NGIAgoraRtcConnection.h:150
agora::rtc::IRtcConnectionObserver::onSetRtmFlagResult
virtual void onSetRtmFlagResult(int code)
Definition: NGIAgoraRtcConnection.h:801
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::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:748
agora::rtc::IRtcConnectionObserver::onStreamMessageError
virtual void onStreamMessageError(user_id_t userId, int streamId, int code, int missed, int cached)
Definition: NGIAgoraRtcConnection.h:768
agora::rtc::IRtcConnection::getLocalUser
virtual ILocalUser * getLocalUser()=0
agora::rtc::INetworkObserver::onDownlinkNetworkInfoUpdated
virtual void onDownlinkNetworkInfoUpdated(const DownlinkNetworkInfo &info)
Definition: NGIAgoraRtcConnection.h:852
agora::rtc::IRtcConnectionObserver::onChannelMediaRelayStateChanged
virtual void onChannelMediaRelayStateChanged(int state, int code)=0
agora::UserInfo
Definition: AgoraBase.h:813
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:123
agora::rtc::WlAccStats
Definition: AgoraBase.h:4369
agora::rtc::RtcConnectionConfiguration::enableAudioRecordingOrPlayout
bool enableAudioRecordingOrPlayout
Definition: NGIAgoraRtcConnection.h:107
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:677
agora::rtc::IRtcConnectionObserver::onConnectionLost
virtual void onConnectionLost(const TConnectionInfo &connectionInfo)=0
agora::rtc::RtcConnectionConfiguration::videoRecvMediaPacket
bool videoRecvMediaPacket
Definition: NGIAgoraRtcConnection.h:141
agora::rtc::RtcConnectionConfiguration::autoSubscribeVideo
bool autoSubscribeVideo
Definition: NGIAgoraRtcConnection.h:101
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:695
agora::rtc::IRtcConnection::connect
virtual int connect(const TConnectSettings &settings, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::EncryptionConfig
Definition: AgoraBase.h:5852
agora::rtc::IRtcConnectionObserver::onWlAccMessage
virtual void onWlAccMessage(WLACC_MESSAGE_REASON reason, WLACC_SUGGEST_ACTION action, const char *wlAccMsg)
Definition: NGIAgoraRtcConnection.h:811
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:2259
agora::rtc::IRtcConnectionObserver::onLicenseValidationFailure
virtual void onLicenseValidationFailure(LICENSE_ERROR_TYPE error)
Definition: NGIAgoraRtcConnection.h:653
agora::rtc::RtcConnectionConfiguration
Definition: NGIAgoraRtcConnection.h:89
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:119
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:841
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:790
agora::rtc::TConnectSettings::channelId
const char * channelId
Definition: NGIAgoraRtcConnection.h:70
agora::rtc::IRtcConnection
Definition: NGIAgoraRtcConnection.h:183
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:156
agora::rtc::IRtcConnection::connect
virtual int connect(const char *token, const char *channelId, user_id_t userId, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::RtcConnectionConfiguration::isDataChannelOnly
bool isDataChannelOnly
Definition: NGIAgoraRtcConnection.h:155
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:111
agora::rtc::TConnectionInfo::internalUid
uid_t internalUid
Definition: NGIAgoraRtcConnection.h:46
agora::Optional< int64_t >
agora::rtc::ClientRoleOptions
Definition: AgoraBase.h:2504
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