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 
13 namespace agora {
14 namespace rtc {
15 class IAudioEncodedFrameSender;
16 class IRtcConnectionObserver;
17 class INetworkObserver;
18 class IRtcConnection;
19 class IVideoEncodedImageSender;
20 class ILocalUser;
21 
29  conn_id_t id;
37  CONNECTION_STATE_TYPE state;
45  uid_t internalUid;
46 
47  TConnectionInfo() : id(-1), state(CONNECTION_STATE_DISCONNECTED), internalUid(0) {}
48 };
49 
54  const char* token;
65  const char* channelId;
71  user_id_t userId;
72 
73  /*
74  App can provide a app defined start time to trace some events like connect cost , first video, etc.
75  */
76  agora::Optional<int64_t> appDefinedStartTimeMs;
77 };
78 
84  packetOnly(false),
85  bytesPerSample(TWO_BYTES_PER_SAMPLE),
87  sampleRateHz(0) {
88  }
89 
95  }
96 
98  {
99  if (this == &rhs) {
100  return *this;
101  }
102 
103  packetOnly = rhs.packetOnly;
107  return *this;
108  }
128  uint32_t sampleRateHz;
129 };
130 
162  int minPort;
166  int maxPort;
174  CLIENT_ROLE_TYPE clientRoleType;
177  CHANNEL_PROFILE_TYPE channelProfile;
178 
183 
188 
193 
202 
204  : autoSubscribeAudio(true),
205  autoSubscribeVideo(true),
207  maxSendBitrate(-1),
208  minPort(0),
209  maxPort(0),
210  clientRoleType(CLIENT_ROLE_AUDIENCE),
211  channelProfile(CHANNEL_PROFILE_LIVE_BROADCASTING),
212  audioRecvEncodedFrame(false),
213  audioRecvMediaPacket(false),
214  videoRecvMediaPacket(false),
215  isInteractiveAudience(false) {}
216 };
217 
229  protected:
230  ~IRtcConnection() {}
231 
232  public:
260  virtual int connect(const char* token, const char* channelId, user_id_t userId) = 0;
261 
273  virtual int connect(const TConnectSettings& settings) = 0;
274 
286  virtual int disconnect() = 0;
287 
315  virtual int startLastmileProbeTest(const LastmileProbeConfig& config) = 0;
316 
323  virtual int stopLastmileProbeTest() = 0;
324 
334  virtual int renewToken(const char* token) = 0;
335 
344 
352  virtual ILocalUser* getLocalUser() = 0;
353 
366  virtual int getRemoteUsers(UserList& users) = 0;
367 
378  virtual int getUserInfo(user_id_t userId, agora::UserInfo& userInfo) = 0;
379 
388  virtual int registerObserver(IRtcConnectionObserver* observer, void(*safeDeleter)(IRtcConnectionObserver*) = NULL) = 0;
389 
399  virtual int unregisterObserver(IRtcConnectionObserver* observer) = 0;
400 
409  virtual int registerNetworkObserver(INetworkObserver* observer, void(*safeDeleter)(INetworkObserver*) = NULL) = 0;
410 
420  virtual int unregisterNetworkObserver(INetworkObserver* observer) = 0;
421 
429  virtual conn_id_t getConnId() = 0;
430 
439 
448 
468  virtual int createDataStream(int* streamId, bool reliable, bool ordered, bool sync) = 0;
469 
485  virtual int sendStreamMessage(int streamId, const char* data, size_t length) = 0;
486 
505  virtual int enableEncryption(bool enabled, const EncryptionConfig& config) = 0;
506 
520  virtual int sendCustomReportMessage(const char* id, const char* category, const char* event, const char* label, int value) = 0;
532  virtual int getUserInfoByUserAccount(const char* userAccount, rtc::UserInfo* userInfo) = 0;
544  virtual int getUserInfoByUid(uid_t uid, rtc::UserInfo* userInfo) = 0;
557  virtual base::NtpTime getNtpTime() = 0;
558 };
559 
564  public:
565  virtual ~IRtcConnectionObserver() {}
566 
573  virtual void onConnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
574 
581  virtual void onDisconnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
582 
589  virtual void onConnecting(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
590 
597  virtual void onReconnecting(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
598 
599  // This should be deleted. onConnected is enough.
600  virtual void onReconnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
601 
607  virtual void onConnectionLost(const TConnectionInfo& connectionInfo) = 0;
608 
616  virtual void onLastmileQuality(const QUALITY_TYPE quality) = 0;
617 
625  virtual void onLastmileProbeResult(const LastmileProbeResult& result) = 0;
626 
637  virtual void onTokenPrivilegeWillExpire(const char* token) = 0;
638 
645  virtual void onTokenPrivilegeDidExpire() = 0;
646 
653  virtual void onConnectionFailure(const TConnectionInfo& connectionInfo,
654  CONNECTION_CHANGED_REASON_TYPE reason) = 0;
655 
663  virtual void onUserJoined(user_id_t userId) = 0;
664 
673  virtual void onUserLeft(user_id_t userId, USER_OFFLINE_REASON_TYPE reason) = 0;
674 
682  virtual void onTransportStats(const RtcStats& stats) = 0;
683 
690  virtual void onChangeRoleSuccess(CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole) {
691  (void)oldRole;
692  (void)newRole;
693  }
694 
698  virtual void onChangeRoleFailure(CLIENT_ROLE_CHANGE_FAILED_REASON reason, CLIENT_ROLE_TYPE currentRole) {
699  (void)reason;
700  (void)currentRole;
701  }
702 
713  virtual void onUserNetworkQuality(user_id_t userId, QUALITY_TYPE txQuality,
714  QUALITY_TYPE rxQuality) {
715  (void)userId;
716  (void)txQuality;
717  (void)rxQuality;
718  }
719 
723  virtual void onNetworkTypeChanged(NETWORK_TYPE type) {
724  (void)type;
725  }
726 
735  virtual void onApiCallExecuted(int err, const char* api, const char* result) {
736  (void)err;
737  (void)api;
738  (void)result;
739  }
740 
742  virtual void onContentInspectResult(media::CONTENT_INSPECT_RESULT result) { (void)result; }
755  virtual void onSnapshotTaken(uid_t uid, const char* filePath, int width, int height, int errCode) {
756  (void)uid;
757  (void)filePath;
758  (void)width;
759  (void)height;
760  (void)errCode;
761  }
767  virtual void onError(ERROR_CODE_TYPE error, const char* msg) {
768  (void)error;
769  (void)msg;
770  }
771 
777  virtual void onWarning(WARN_CODE_TYPE warning, const char* msg) {
778  (void)warning;
779  (void)msg;
780  }
781 
811  virtual void onChannelMediaRelayStateChanged(int state, int code) = 0;
812 
818  virtual void onLocalUserRegistered(uid_t uid, const char* userAccount) {
819  (void)uid;
820  (void)userAccount;
821  }
822 
824  virtual void onUserAccountUpdated(uid_t uid, const char* userAccount){
825  (void)uid;
826  (void)userAccount;
827  }
828 
838  virtual void onStreamMessageError(user_id_t userId, int streamId, int code, int missed,
839  int cached) {
840  (void)userId;
841  (void)streamId;
842  (void)code;
843  (void)missed;
844  (void)cached;
845  }
846 
851  virtual void onEncryptionError(ENCRYPTION_ERROR_TYPE errorType) {
852  (void)errorType;
853  }
860  virtual void onUploadLogResult(const char* requestId, bool success, UPLOAD_ERROR_REASON reason) {
861  (void)requestId;
862  (void)success;
863  (void)reason;
864  }
865 };
866 
868  public:
869  virtual ~INetworkObserver() {}
870 
871  public:
880  virtual void onUplinkNetworkInfoUpdated(const UplinkNetworkInfo& info) {
881  (void)info;
882  }
883 
892  (void)info;
893  }
894 };
895 
896 } // namespace rtc
897 } // namespace agora
agora::rtc::IRtcConnectionObserver::onUserNetworkQuality
virtual void onUserNetworkQuality(user_id_t userId, QUALITY_TYPE txQuality, QUALITY_TYPE rxQuality)
Definition: NGIAgoraRtcConnection.h:713
agora::rtc::TConnectionInfo::state
CONNECTION_STATE_TYPE state
Definition: NGIAgoraRtcConnection.h:37
agora::rtc::RtcConnectionConfiguration::audioRecvEncodedFrame
bool audioRecvEncodedFrame
Definition: NGIAgoraRtcConnection.h:182
agora::rtc::RtcConnectionConfiguration::channelProfile
CHANNEL_PROFILE_TYPE channelProfile
Definition: NGIAgoraRtcConnection.h:177
agora::rtc::UserInfo
Definition: AgoraBase.h:5257
agora::rtc::AudioSubscriptionOptions::bytesPerSample
size_t bytesPerSample
Definition: NGIAgoraRtcConnection.h:120
agora::rtc::AudioSubscriptionOptions::sampleRateHz
uint32_t sampleRateHz
Definition: NGIAgoraRtcConnection.h:128
agora::rtc::LastmileProbeResult
Definition: AgoraBase.h:3920
agora::rtc::IRtcConnection::getConnectionInfo
virtual TConnectionInfo getConnectionInfo()=0
agora::rtc::IRtcConnectionObserver::onEncryptionError
virtual void onEncryptionError(ENCRYPTION_ERROR_TYPE errorType)
Definition: NGIAgoraRtcConnection.h:851
agora::rtc::RtcConnectionConfiguration::audioSubscriptionOptions
AudioSubscriptionOptions audioSubscriptionOptions
Definition: NGIAgoraRtcConnection.h:170
agora::rtc::IRtcConnectionObserver::onError
virtual void onError(ERROR_CODE_TYPE error, const char *msg)
Definition: NGIAgoraRtcConnection.h:767
agora::rtc::IRtcConnectionObserver::onConnecting
virtual void onConnecting(const TConnectionInfo &connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)=0
agora::base::IAgoraParameter
Definition: IAgoraParameter.h:239
agora::rtc::RtcConnectionConfiguration::minPort
int minPort
Definition: NGIAgoraRtcConnection.h:162
agora::rtc::LastmileProbeConfig
Definition: AgoraBase.h:3846
agora::rtc::IRtcConnection::sendCustomReportMessage
virtual int sendCustomReportMessage(const char *id, const char *category, const char *event, const char *label, int value)=0
agora::rtc::IRtcConnectionObserver::onTransportStats
virtual void onTransportStats(const RtcStats &stats)=0
agora::rtc::INetworkObserver
Definition: NGIAgoraRtcConnection.h:867
agora::rtc::IRtcConnectionObserver::onChangeRoleFailure
virtual void onChangeRoleFailure(CLIENT_ROLE_CHANGE_FAILED_REASON reason, CLIENT_ROLE_TYPE currentRole)
Definition: NGIAgoraRtcConnection.h:698
agora::rtc::IRtcConnectionObserver
Definition: NGIAgoraRtcConnection.h:563
agora::base::NtpTime
Definition: time_utils.h:13
agora::rtc::IRtcConnection::stopLastmileProbeTest
virtual int stopLastmileProbeTest()=0
agora::rtc::IRtcConnectionObserver::onUserJoined
virtual void onUserJoined(user_id_t userId)=0
agora::rtc::IRtcConnection::startLastmileProbeTest
virtual int startLastmileProbeTest(const LastmileProbeConfig &config)=0
agora::rtc::IRtcConnection::getUserInfo
virtual int getUserInfo(user_id_t userId, agora::UserInfo &userInfo)=0
agora::rtc::IRtcConnection::getNtpTime
virtual base::NtpTime getNtpTime()=0
agora::rtc::IRtcConnectionObserver::onSnapshotTaken
virtual void onSnapshotTaken(uid_t uid, const char *filePath, int width, int height, int errCode)
snapshot taken callback
Definition: NGIAgoraRtcConnection.h:755
agora::util::AList
Definition: AgoraBase.h:239
agora::rtc::IRtcConnection::disconnect
virtual int disconnect()=0
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:142
agora::rtc::TConnectSettings
Definition: NGIAgoraRtcConnection.h:50
agora::rtc::RtcConnectionConfiguration::audioRecvMediaPacket
bool audioRecvMediaPacket
Definition: NGIAgoraRtcConnection.h:187
agora::rtc::IRtcConnectionObserver::onContentInspectResult
virtual void onContentInspectResult(media::CONTENT_INSPECT_RESULT result)
Definition: NGIAgoraRtcConnection.h:742
agora::rtc::IRtcConnection::getTransportStats
virtual RtcStats getTransportStats()=0
agora::rtc::IRtcConnection::unregisterNetworkObserver
virtual int unregisterNetworkObserver(INetworkObserver *observer)=0
agora::rtc::TConnectionInfo
Definition: NGIAgoraRtcConnection.h:25
agora::rtc::IRtcConnection::getRemoteUsers
virtual int getRemoteUsers(UserList &users)=0
agora::rtc::IRtcConnectionObserver::onTokenPrivilegeWillExpire
virtual void onTokenPrivilegeWillExpire(const char *token)=0
agora::rtc::IRtcConnection::renewToken
virtual int renewToken(const char *token)=0
agora::rtc::IRtcConnectionObserver::onUserAccountUpdated
virtual void onUserAccountUpdated(uid_t uid, const char *userAccount)
Definition: NGIAgoraRtcConnection.h:824
agora::rtc::IRtcConnection::sendStreamMessage
virtual int sendStreamMessage(int streamId, const char *data, size_t length)=0
agora::rtc::RtcConnectionConfiguration::isInteractiveAudience
bool isInteractiveAudience
Definition: NGIAgoraRtcConnection.h:201
agora::rtc::IRtcConnection::connect
virtual int connect(const char *token, const char *channelId, user_id_t userId)=0
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:33
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::AudioSubscriptionOptions
Definition: NGIAgoraRtcConnection.h:82
agora::rtc::IRtcConnectionObserver::onLocalUserRegistered
virtual void onLocalUserRegistered(uid_t uid, const char *userAccount)
Definition: NGIAgoraRtcConnection.h:818
agora::rtc::IRtcConnectionObserver::onStreamMessageError
virtual void onStreamMessageError(user_id_t userId, int streamId, int code, int missed, int cached)
Definition: NGIAgoraRtcConnection.h:838
agora::rtc::IRtcConnection::getLocalUser
virtual ILocalUser * getLocalUser()=0
agora::rtc::INetworkObserver::onDownlinkNetworkInfoUpdated
virtual void onDownlinkNetworkInfoUpdated(const DownlinkNetworkInfo &info)
Definition: NGIAgoraRtcConnection.h:891
agora::rtc::IRtcConnectionObserver::onChannelMediaRelayStateChanged
virtual void onChannelMediaRelayStateChanged(int state, int code)=0
agora::UserInfo
Definition: AgoraBase.h:1168
agora::rtc::IRtcConnectionObserver::onConnectionFailure
virtual void onConnectionFailure(const TConnectionInfo &connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)=0
agora::rtc::ILocalUser
Definition: NGIAgoraLocalUser.h:51
agora::rtc::RtcConnectionConfiguration::clientRoleType
CLIENT_ROLE_TYPE clientRoleType
Definition: NGIAgoraRtcConnection.h:174
agora::rtc::IRtcConnection::enableEncryption
virtual int enableEncryption(bool enabled, const EncryptionConfig &config)=0
agora::rtc::RtcConnectionConfiguration::enableAudioRecordingOrPlayout
bool enableAudioRecordingOrPlayout
Definition: NGIAgoraRtcConnection.h:154
agora::rtc::IRtcConnectionObserver::onNetworkTypeChanged
virtual void onNetworkTypeChanged(NETWORK_TYPE type)
Definition: NGIAgoraRtcConnection.h:723
agora::rtc::IRtcConnectionObserver::onConnectionLost
virtual void onConnectionLost(const TConnectionInfo &connectionInfo)=0
agora::rtc::RtcConnectionConfiguration::videoRecvMediaPacket
bool videoRecvMediaPacket
Definition: NGIAgoraRtcConnection.h:192
agora::rtc::IRtcConnectionObserver::onWarning
virtual void onWarning(WARN_CODE_TYPE warning, const char *msg)
Definition: NGIAgoraRtcConnection.h:777
agora::rtc::RtcConnectionConfiguration::autoSubscribeVideo
bool autoSubscribeVideo
Definition: NGIAgoraRtcConnection.h:148
agora::rtc::IRtcConnectionObserver::onUserLeft
virtual void onUserLeft(user_id_t userId, USER_OFFLINE_REASON_TYPE reason)=0
agora::rtc::IRtcConnectionObserver::onApiCallExecuted
virtual void onApiCallExecuted(int err, const char *api, const char *result)
Definition: NGIAgoraRtcConnection.h:735
agora::rtc::EncryptionConfig
Definition: AgoraBase.h:5156
agora::rtc::AudioSubscriptionOptions::packetOnly
bool packetOnly
Definition: NGIAgoraRtcConnection.h:116
agora::rtc::IRtcConnectionObserver::onLastmileQuality
virtual void onLastmileQuality(const QUALITY_TYPE quality)=0
agora::rtc::TConnectSettings::token
const char * token
Definition: NGIAgoraRtcConnection.h:54
agora::rtc::RtcStats
Definition: AgoraBase.h:2250
agora::rtc::IRtcConnection::registerObserver
virtual int registerObserver(IRtcConnectionObserver *observer, void(*safeDeleter)(IRtcConnectionObserver *)=NULL)=0
agora::rtc::RtcConnectionConfiguration
Definition: NGIAgoraRtcConnection.h:136
agora::rtc::IRtcConnection::connect
virtual int connect(const TConnectSettings &settings)=0
agora::RefCountInterface
Definition: AgoraRefPtr.h:31
agora::rtc::RtcConnectionConfiguration::maxPort
int maxPort
Definition: NGIAgoraRtcConnection.h:166
agora::rtc::TConnectSettings::userId
user_id_t userId
Definition: NGIAgoraRtcConnection.h:71
agora::rtc::INetworkObserver::onUplinkNetworkInfoUpdated
virtual void onUplinkNetworkInfoUpdated(const UplinkNetworkInfo &info)
Definition: NGIAgoraRtcConnection.h:880
agora::rtc::TConnectionInfo::localUserId
util::AString localUserId
Definition: NGIAgoraRtcConnection.h:41
agora::rtc::IRtcConnectionObserver::onUploadLogResult
virtual void onUploadLogResult(const char *requestId, bool success, UPLOAD_ERROR_REASON reason)
Definition: NGIAgoraRtcConnection.h:860
agora::rtc::TConnectSettings::channelId
const char * channelId
Definition: NGIAgoraRtcConnection.h:65
agora::rtc::IRtcConnection
Definition: NGIAgoraRtcConnection.h:228
agora::util::CopyableAutoPtr
Definition: AgoraBase.h:162
agora::rtc::IRtcConnection::registerNetworkObserver
virtual int registerNetworkObserver(INetworkObserver *observer, void(*safeDeleter)(INetworkObserver *)=NULL)=0
agora::rtc::IRtcConnection::getConnId
virtual conn_id_t getConnId()=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::IRtcConnectionObserver::onChangeRoleSuccess
virtual void onChangeRoleSuccess(CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole)
Definition: NGIAgoraRtcConnection.h:690
agora::rtc::RtcConnectionConfiguration::maxSendBitrate
int maxSendBitrate
Definition: NGIAgoraRtcConnection.h:158
agora::rtc::AudioSubscriptionOptions::numberOfChannels
size_t numberOfChannels
Definition: NGIAgoraRtcConnection.h:124
agora::rtc::TConnectionInfo::internalUid
uid_t internalUid
Definition: NGIAgoraRtcConnection.h:45
agora::Optional< int64_t >
agora::rtc::TConnectionInfo::id
conn_id_t id
Definition: NGIAgoraRtcConnection.h:29