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 
55  packetOnly(false),
56  bytesPerSample(TWO_BYTES_PER_SAMPLE),
58  sampleRateHz(0) {
59  }
60 
66  }
67 
69  {
70  if (this == &rhs) {
71  return *this;
72  }
73 
74  packetOnly = rhs.packetOnly;
78  return *this;
79  }
87  bool packetOnly;
99  uint32_t sampleRateHz;
100 };
101 
133  int minPort;
137  int maxPort;
145  CLIENT_ROLE_TYPE clientRoleType;
148  CHANNEL_PROFILE_TYPE channelProfile;
149 
154 
159 
164 
166  : autoSubscribeAudio(true),
167  autoSubscribeVideo(true),
169  maxSendBitrate(-1),
170  minPort(0),
171  maxPort(0),
172  clientRoleType(CLIENT_ROLE_AUDIENCE),
173  channelProfile(CHANNEL_PROFILE_LIVE_BROADCASTING),
174  audioRecvEncodedFrame(false),
175  audioRecvMediaPacket(false),
176  videoRecvMediaPacket(false) {}
177 };
178 
190  protected:
191  ~IRtcConnection() {}
192 
193  public:
221  virtual int connect(const char* token, const char* channelId, user_id_t userId) = 0;
222 
234  virtual int disconnect() = 0;
235 
263  virtual int startLastmileProbeTest(const LastmileProbeConfig& config) = 0;
264 
271  virtual int stopLastmileProbeTest() = 0;
272 
282  virtual int renewToken(const char* token) = 0;
283 
292 
300  virtual ILocalUser* getLocalUser() = 0;
301 
314  virtual int getRemoteUsers(UserList& users) = 0;
315 
326  virtual int getUserInfo(user_id_t userId, agora::UserInfo& userInfo) = 0;
327 
336  virtual int registerObserver(IRtcConnectionObserver* observer, void(*safeDeleter)(IRtcConnectionObserver*) = NULL) = 0;
337 
347  virtual int unregisterObserver(IRtcConnectionObserver* observer) = 0;
348 
357  virtual int registerNetworkObserver(INetworkObserver* observer, void(*safeDeleter)(INetworkObserver*) = NULL) = 0;
358 
368  virtual int unregisterNetworkObserver(INetworkObserver* observer) = 0;
369 
377  virtual conn_id_t getConnId() = 0;
378 
387 
396 
416  virtual int createDataStream(int* streamId, bool reliable, bool ordered, bool sync) = 0;
417 
433  virtual int sendStreamMessage(int streamId, const char* data, size_t length) = 0;
434 
453  virtual int enableEncryption(bool enabled, const EncryptionConfig& config) = 0;
454 
468  virtual int sendCustomReportMessage(const char* id, const char* category, const char* event, const char* label, int value) = 0;
480  virtual int getUserInfoByUserAccount(const char* userAccount, rtc::UserInfo* userInfo) = 0;
492  virtual int getUserInfoByUid(uid_t uid, rtc::UserInfo* userInfo) = 0;
505  virtual base::NtpTime getNtpTime() = 0;
506 };
507 
512  public:
513  virtual ~IRtcConnectionObserver() {}
514 
521  virtual void onConnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
522 
529  virtual void onDisconnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
530 
537  virtual void onConnecting(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
538 
545  virtual void onReconnecting(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
546 
547  // This should be deleted. onConnected is enough.
548  virtual void onReconnected(const TConnectionInfo& connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason) = 0;
549 
555  virtual void onConnectionLost(const TConnectionInfo& connectionInfo) = 0;
556 
564  virtual void onLastmileQuality(const QUALITY_TYPE quality) = 0;
565 
573  virtual void onLastmileProbeResult(const LastmileProbeResult& result) = 0;
574 
585  virtual void onTokenPrivilegeWillExpire(const char* token) = 0;
586 
593  virtual void onTokenPrivilegeDidExpire() = 0;
594 
601  virtual void onConnectionFailure(const TConnectionInfo& connectionInfo,
602  CONNECTION_CHANGED_REASON_TYPE reason) = 0;
603 
611  virtual void onUserJoined(user_id_t userId) = 0;
612 
621  virtual void onUserLeft(user_id_t userId, USER_OFFLINE_REASON_TYPE reason) = 0;
622 
630  virtual void onTransportStats(const RtcStats& stats) = 0;
631 
638  virtual void onChangeRoleSuccess(CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole) {
639  (void)oldRole;
640  (void)newRole;
641  }
642 
646  virtual void onChangeRoleFailure(CLIENT_ROLE_CHANGE_FAILED_REASON reason, CLIENT_ROLE_TYPE currentRole) {
647  (void)reason;
648  (void)currentRole;
649  }
650 
661  virtual void onUserNetworkQuality(user_id_t userId, QUALITY_TYPE txQuality,
662  QUALITY_TYPE rxQuality) {
663  (void)userId;
664  (void)txQuality;
665  (void)rxQuality;
666  }
667 
671  virtual void onNetworkTypeChanged(NETWORK_TYPE type) {
672  (void)type;
673  }
674 
683  virtual void onApiCallExecuted(int err, const char* api, const char* result) {
684  (void)err;
685  (void)api;
686  (void)result;
687  }
688 
690  virtual void onContentInspectResult(media::CONTENT_INSPECT_RESULT result) { (void)result; }
703  virtual void onSnapshotTaken(const char* channel, uid_t uid, const char* filePath, int width, int height, int errCode) {
704  (void)channel;
705  (void)uid;
706  (void)filePath;
707  (void)width;
708  (void)height;
709  (void)errCode;
710  }
716  virtual void onError(ERROR_CODE_TYPE error, const char* msg) {
717  (void)error;
718  (void)msg;
719  }
720 
726  virtual void onWarning(WARN_CODE_TYPE warning, const char* msg) {
727  (void)warning;
728  (void)msg;
729  }
730 
760  virtual void onChannelMediaRelayStateChanged(int state, int code) = 0;
761 
767  virtual void onLocalUserRegistered(uid_t uid, const char* userAccount) {
768  (void)uid;
769  (void)userAccount;
770  }
771 
773  virtual void onUserAccountUpdated(uid_t uid, const char* userAccount){
774  (void)uid;
775  (void)userAccount;
776  }
777 
787  virtual void onStreamMessageError(user_id_t userId, int streamId, int code, int missed,
788  int cached) {
789  (void)userId;
790  (void)streamId;
791  (void)code;
792  (void)missed;
793  (void)cached;
794  }
795 
800  virtual void onEncryptionError(ENCRYPTION_ERROR_TYPE errorType) {
801  (void)errorType;
802  }
809  virtual void onUploadLogResult(const char* requestId, bool success, UPLOAD_ERROR_REASON reason) {
810  (void)requestId;
811  (void)success;
812  (void)reason;
813  }
814 };
815 
817  public:
818  virtual ~INetworkObserver() {}
819 
820  public:
829  virtual void onUplinkNetworkInfoUpdated(const UplinkNetworkInfo& info) {
830  (void)info;
831  }
832 
841  (void)info;
842  }
843 };
844 
845 } // namespace rtc
846 } // namespace agora
agora::rtc::IRtcConnectionObserver::onUserNetworkQuality
virtual void onUserNetworkQuality(user_id_t userId, QUALITY_TYPE txQuality, QUALITY_TYPE rxQuality)
Definition: NGIAgoraRtcConnection.h:661
agora::rtc::TConnectionInfo::state
CONNECTION_STATE_TYPE state
Definition: NGIAgoraRtcConnection.h:37
agora::rtc::RtcConnectionConfiguration::audioRecvEncodedFrame
bool audioRecvEncodedFrame
Definition: NGIAgoraRtcConnection.h:153
agora::rtc::RtcConnectionConfiguration::channelProfile
CHANNEL_PROFILE_TYPE channelProfile
Definition: NGIAgoraRtcConnection.h:148
agora::rtc::UserInfo
Definition: AgoraBase.h:5093
agora::rtc::AudioSubscriptionOptions::bytesPerSample
size_t bytesPerSample
Definition: NGIAgoraRtcConnection.h:91
agora::rtc::AudioSubscriptionOptions::sampleRateHz
uint32_t sampleRateHz
Definition: NGIAgoraRtcConnection.h:99
agora::rtc::LastmileProbeResult
Definition: AgoraBase.h:3756
agora::rtc::IRtcConnection::getConnectionInfo
virtual TConnectionInfo getConnectionInfo()=0
agora::rtc::IRtcConnectionObserver::onEncryptionError
virtual void onEncryptionError(ENCRYPTION_ERROR_TYPE errorType)
Definition: NGIAgoraRtcConnection.h:800
agora::rtc::RtcConnectionConfiguration::audioSubscriptionOptions
AudioSubscriptionOptions audioSubscriptionOptions
Definition: NGIAgoraRtcConnection.h:141
agora::rtc::IRtcConnectionObserver::onError
virtual void onError(ERROR_CODE_TYPE error, const char *msg)
Definition: NGIAgoraRtcConnection.h:716
agora::rtc::IRtcConnectionObserver::onConnecting
virtual void onConnecting(const TConnectionInfo &connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)=0
agora::base::IAgoraParameter
Definition: IAgoraParameter.h:225
agora::rtc::RtcConnectionConfiguration::minPort
int minPort
Definition: NGIAgoraRtcConnection.h:133
agora::rtc::LastmileProbeConfig
Definition: AgoraBase.h:3682
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:816
agora::rtc::IRtcConnectionObserver::onChangeRoleFailure
virtual void onChangeRoleFailure(CLIENT_ROLE_CHANGE_FAILED_REASON reason, CLIENT_ROLE_TYPE currentRole)
Definition: NGIAgoraRtcConnection.h:646
agora::rtc::IRtcConnectionObserver
Definition: NGIAgoraRtcConnection.h:511
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::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:113
agora::rtc::RtcConnectionConfiguration::audioRecvMediaPacket
bool audioRecvMediaPacket
Definition: NGIAgoraRtcConnection.h:158
agora::rtc::IRtcConnectionObserver::onContentInspectResult
virtual void onContentInspectResult(media::CONTENT_INSPECT_RESULT result)
Definition: NGIAgoraRtcConnection.h:690
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:773
agora::rtc::IRtcConnection::sendStreamMessage
virtual int sendStreamMessage(int streamId, const char *data, size_t length)=0
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:53
agora::rtc::IRtcConnectionObserver::onLocalUserRegistered
virtual void onLocalUserRegistered(uid_t uid, const char *userAccount)
Definition: NGIAgoraRtcConnection.h:767
agora::rtc::IRtcConnectionObserver::onStreamMessageError
virtual void onStreamMessageError(user_id_t userId, int streamId, int code, int missed, int cached)
Definition: NGIAgoraRtcConnection.h:787
agora::rtc::IRtcConnection::getLocalUser
virtual ILocalUser * getLocalUser()=0
agora::rtc::INetworkObserver::onDownlinkNetworkInfoUpdated
virtual void onDownlinkNetworkInfoUpdated(const DownlinkNetworkInfo &info)
Definition: NGIAgoraRtcConnection.h:840
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:145
agora::rtc::IRtcConnection::enableEncryption
virtual int enableEncryption(bool enabled, const EncryptionConfig &config)=0
agora::rtc::RtcConnectionConfiguration::enableAudioRecordingOrPlayout
bool enableAudioRecordingOrPlayout
Definition: NGIAgoraRtcConnection.h:125
agora::rtc::IRtcConnectionObserver::onNetworkTypeChanged
virtual void onNetworkTypeChanged(NETWORK_TYPE type)
Definition: NGIAgoraRtcConnection.h:671
agora::rtc::IRtcConnectionObserver::onConnectionLost
virtual void onConnectionLost(const TConnectionInfo &connectionInfo)=0
agora::rtc::RtcConnectionConfiguration::videoRecvMediaPacket
bool videoRecvMediaPacket
Definition: NGIAgoraRtcConnection.h:163
agora::rtc::IRtcConnectionObserver::onWarning
virtual void onWarning(WARN_CODE_TYPE warning, const char *msg)
Definition: NGIAgoraRtcConnection.h:726
agora::rtc::RtcConnectionConfiguration::autoSubscribeVideo
bool autoSubscribeVideo
Definition: NGIAgoraRtcConnection.h:119
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:683
agora::rtc::EncryptionConfig
Definition: AgoraBase.h:4992
agora::rtc::AudioSubscriptionOptions::packetOnly
bool packetOnly
Definition: NGIAgoraRtcConnection.h:87
agora::rtc::IRtcConnectionObserver::onLastmileQuality
virtual void onLastmileQuality(const QUALITY_TYPE quality)=0
agora::rtc::RtcStats
Definition: AgoraBase.h:2131
agora::rtc::IRtcConnection::registerObserver
virtual int registerObserver(IRtcConnectionObserver *observer, void(*safeDeleter)(IRtcConnectionObserver *)=NULL)=0
agora::rtc::RtcConnectionConfiguration
Definition: NGIAgoraRtcConnection.h:107
agora::RefCountInterface
Definition: AgoraRefPtr.h:31
agora::rtc::RtcConnectionConfiguration::maxPort
int maxPort
Definition: NGIAgoraRtcConnection.h:137
agora::rtc::INetworkObserver::onUplinkNetworkInfoUpdated
virtual void onUplinkNetworkInfoUpdated(const UplinkNetworkInfo &info)
Definition: NGIAgoraRtcConnection.h:829
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:809
agora::rtc::IRtcConnection
Definition: NGIAgoraRtcConnection.h:189
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::IRtcConnectionObserver::onSnapshotTaken
virtual void onSnapshotTaken(const char *channel, uid_t uid, const char *filePath, int width, int height, int errCode)
snapshot taken callback
Definition: NGIAgoraRtcConnection.h:703
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:638
agora::rtc::RtcConnectionConfiguration::maxSendBitrate
int maxSendBitrate
Definition: NGIAgoraRtcConnection.h:129
agora::rtc::AudioSubscriptionOptions::numberOfChannels
size_t numberOfChannels
Definition: NGIAgoraRtcConnection.h:95
agora::rtc::TConnectionInfo::internalUid
uid_t internalUid
Definition: NGIAgoraRtcConnection.h:45
agora::rtc::TConnectionInfo::id
conn_id_t id
Definition: NGIAgoraRtcConnection.h:29