Skip to content

Commit

Permalink
fix. refactor event system
Browse files Browse the repository at this point in the history
  • Loading branch information
Matrixbirds committed Jun 28, 2019
1 parent 943a53b commit 58c5f99
Show file tree
Hide file tree
Showing 10 changed files with 172 additions and 213 deletions.
74 changes: 74 additions & 0 deletions android/src/main/java/com/syan/agora/AgoraConst.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package com.syan.agora;

public class AgoraConst {

public final static String AG_PREFIX = "ag_rtc";
public final static String AGWarning = "warning";
public final static String AGError = "error";
public final static String AGApiCallExecute = "apiCallExecute";
public final static String AGJoinChannelSuccess = "joinChannelSuccess";
public final static String AGRejoinChannelSuccess = "rejoinChannelSuccess";
public final static String AGLeaveChannel = "leaveChannel";
public final static String AGClientRoleChanged = "clientRoleChanged";
public final static String AGUserJoined = "userJoined";
public final static String AGUserOffline = "userOffline";
public final static String AGConnectionStateChanged = "connectionStateChanged";
public final static String AGConnectionLost = "connectionLost";
public final static String AGTokenPrivilegeWillExpire = "tokenPrivilegeWillExpire";
public final static String AGRequestToken = "requestToken";

public final static String AGMicrophoneEnabled = "microphoneEnabled";
public final static String AGAudioVolumeIndication = "audioVolumeIndication";
public final static String AGActiveSpeaker = "activeSpeaker";
public final static String AGFirstLocalAudioFrame = "firstLocalAudioFrame";
public final static String AGFirstRemoteAudioFrame = "firstRemoteAudioFrame";
public final static String AGVideoStopped = "videoStopped";
public final static String AGFirstLocalVideoFrame = "firstLocalVideoFrame";
public final static String AGFirstRemoteVideoDecoded = "firstRemoteVideoDecoded";
public final static String AGFirstRemoteVideoFrame = "firstRemoteVideoFrame";
public final static String AGUserMuteAudio = "userMuteAudio";
public final static String AGUserMuteVideo = "userMuteVideo";
public final static String AGUserEnableVideo = "userEnableVideo";
public final static String AGUserEnableLocalVideo = "userEnableLocalVideo";
public final static String AGVideoSizeChanged = "videoSizeChanged";
public final static String AGRtmpStreamingStateChanged = "rtmpStreamingStateChanged";
public final static String AGNetworkTypeChanged = "networkTypeChanged";
public final static String AGFirstRemoteAudioDecoded = "firstRemoteAudioDecoded";
public final static String AGMediaMetaDataReceived = "mediaMetaDataReceived";
public final static String AGLocalVideoChanged = "localVideoChanged";
public final static String AGRemoteVideoStateChanged = "remoteVideoStateChanged";
public final static String AGLocalPublishFallbackToAudioOnly = "localPublishFallbackToAudioOnly";
public final static String AGRemoteSubscribeFallbackToAudioOnly = "remoteSubscribeFallbackToAudioOnly";

public final static String AGAudioRouteChanged = "audioRouteChanged";
public final static String AGCameraReady = "cameraReady";
public final static String AGCameraFocusAreaChanged = "cameraFocusAreaChanged";
public final static String AGCameraExposureAreaChanged = "cameraExposureAreaChanged";

public final static String AGRtcStats = "rtcStats";
public final static String AGLastmileQuality = "lastmileQuality";
public final static String AGNetworkQuality = "networkQuality";
public final static String AGLocalVideoStats = "localVideoStats";
public final static String AGRemoteVideoStats = "remoteVideoStats";
public final static String AGRemoteAudioStats = "remoteAudioStats";
public final static String AGAudioTransportStatsOfUid = "audioTransportStatsOfUid";
public final static String AGVideoTransportStatsOfUid = "videoTransportStatsOfUid";

public final static String AGRemoteAudioMixingStart = "remoteAudioMixingStart";
public final static String AGRemoteAudioMixingFinish = "remoteAudioMixingFinish";
public final static String AGAudioEffectFinish = "audioEffectFinish";
public final static String AGAudioMixingStateChanged = "audioMixingStateChanged";

public final static String AGStreamPublished = "streamPublished";
public final static String AGStreamUnpublish = "streamUnpublish";
public final static String AGTranscodingUpdate = "transcodingUpdate";

public final static String AGStreamInjectedStatus = "streamInjectedStatus";

public final static String AGReceiveStreamMessage = "receiveStreamMessage";
public final static String AGOccurStreamMessageError = "occurStreamMessageError";

public final static String AGMediaEngineLoaded = "mediaEngineLoaded";
public final static String AGMediaEngineStartCall = "mediaEngineStartCall";
public final static String AGLastmileProbeResult = "lastmileProbeTestResult";
}
Empty file modified android/src/main/java/com/syan/agora/AgoraManager.java
100755 → 100644
Empty file.
74 changes: 5 additions & 69 deletions android/src/main/java/com/syan/agora/AgoraModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import io.agora.rtc.video.VideoEncoderConfiguration;

import static com.facebook.react.bridge.UiThreadUtil.runOnUiThread;
import static com.syan.agora.AgoraConst.*;

public class AgoraModule extends ReactContextBaseJavaModule {

Expand Down Expand Up @@ -259,74 +260,7 @@ public Map<String, Object> getConstants() {
return constants;
}

private final static String AGWarning = "warning";
private final static String AGError = "error";
private final static String AGApiCallExecute = "apiCallExecute";
private final static String AGJoinChannelSuccess = "joinChannelSuccess";
private final static String AGRejoinChannelSuccess = "rejoinChannelSuccess";
private final static String AGLeaveChannel = "leaveChannel";
private final static String AGClientRoleChanged = "clientRoleChanged";
private final static String AGUserJoined = "userJoined";
private final static String AGUserOffline = "userOffline";
private final static String AGConnectionStateChanged = "connectionStateChanged";
private final static String AGConnectionLost = "connectionLost";
private final static String AGTokenPrivilegeWillExpire = "tokenPrivilegeWillExpire";
private final static String AGRequestToken = "requestToken";

private final static String AGMicrophoneEnabled = "microphoneEnabled";
private final static String AGAudioVolumeIndication = "audioVolumeIndication";
private final static String AGActiveSpeaker = "activeSpeaker";
private final static String AGFirstLocalAudioFrame = "firstLocalAudioFrame";
private final static String AGFirstRemoteAudioFrame = "firstRemoteAudioFrame";
private final static String AGVideoStopped = "videoStopped";
private final static String AGFirstLocalVideoFrame = "firstLocalVideoFrame";
private final static String AGFirstRemoteVideoDecoded = "firstRemoteVideoDecoded";
private final static String AGFirstRemoteVideoFrame = "firstRemoteVideoFrame";
private final static String AGUserMuteAudio = "userMuteAudio";
private final static String AGUserMuteVideo = "userMuteVideo";
private final static String AGUserEnableVideo = "userEnableVideo";
private final static String AGUserEnableLocalVideo = "userEnableLocalVideo";
private final static String AGVideoSizeChanged = "videoSizeChanged";
private final static String AGRtmpStreamingStateChanged = "rtmpStreamingStateChanged";
private final static String AGNetworkTypeChanged = "networkTypeChanged";
private final static String AGFirstRemoteAudioDecoded = "firstRemoteAudioDecoded";
private final static String AGMediaMetaDataReceived = "mediaMetaDataReceived";
private final static String AGLocalVideoChanged = "localVideoChanged";
private final static String AGRemoteVideoStateChanged = "remoteVideoStateChanged";
private final static String AGLocalPublishFallbackToAudioOnly = "localPublishFallbackToAudioOnly";
private final static String AGRemoteSubscribeFallbackToAudioOnly = "remoteSubscribeFallbackToAudioOnly";

private final static String AGAudioRouteChanged = "audioRouteChanged";
private final static String AGCameraReady = "cameraReady";
private final static String AGCameraFocusAreaChanged = "cameraFocusAreaChanged";
private final static String AGCameraExposureAreaChanged = "cameraExposureAreaChanged";

private final static String AGRtcStats = "rtcStats";
private final static String AGLastmileQuality = "lastmileQuality";
private final static String AGNetworkQuality = "networkQuality";
private final static String AGLocalVideoStats = "localVideoStats";
private final static String AGRemoteVideoStats = "remoteVideoStats";
private final static String AGRemoteAudioStats = "remoteAudioStats";
private final static String AGAudioTransportStatsOfUid = "audioTransportStatsOfUid";
private final static String AGVideoTransportStatsOfUid = "videoTransportStatsOfUid";

private final static String AGRemoteAudioMixingStart = "remoteAudioMixingStart";
private final static String AGRemoteAudioMixingFinish = "remoteAudioMixingFinish";
private final static String AGAudioEffectFinish = "audioEffectFinish";
private final static String AGAudioMixingStateChanged = "audioMixingStateChanged";

private final static String AGStreamPublished = "streamPublished";
private final static String AGStreamUnpublish = "streamUnpublish";
private final static String AGTranscodingUpdate = "transcodingUpdate";

private final static String AGStreamInjectedStatus = "streamInjectedStatus";

private final static String AGReceiveStreamMessage = "receiveStreamMessage";
private final static String AGOccurStreamMessageError = "occurStreamMessageError";

private final static String AGMediaEngineLoaded = "mediaEngineLoaded";
private final static String AGMediaEngineStartCall = "mediaEngineStartCall";
private final static String AGLastmileProbeResult = "lastmileProbeTestResult";

// private final static String AGIntervalTest = "startEchoTestWithInterval";

private MediaObserver mediaObserver = null;
Expand Down Expand Up @@ -2742,8 +2676,10 @@ public void setCameraCapturerConfiguration(ReadableMap options, Promise promise)
private void sendEvent(ReactContext reactContext,
String eventName,
@Nullable WritableMap params) {
StringBuffer agoraEvtName = new StringBuffer(AG_PREFIX);
agoraEvtName.append(eventName);
reactContext
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit(eventName, params);
.emit(agoraEvtName.toString(), params);
}
}
3 changes: 3 additions & 0 deletions ios/RCTAgora/AgoraConst.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

#import <AgoraRtcEngineKit/AgoraRtcEngineKit.h>

static NSString *AG_PREFIX = @"ag_rtc";

static NSString *RCTAgoraErrorDomain = @"RCTAgoraErrorDomain";

static NSString *AGWarning = @"warning";
Expand Down Expand Up @@ -97,4 +99,5 @@ typedef NS_ENUM(NSInteger, AgoraModeType) {

+ (instancetype)share;

+ (NSArray<NSString*> *) supportEvents;
@end
80 changes: 80 additions & 0 deletions ios/RCTAgora/AgoraConst.m
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,86 @@ + (instancetype)share {
return _person;
}

+ (NSArray<NSString*>*) supportEvents {
NSArray<NSString*>* array = @[AGWarning,
AGError,
AGApiCallExecute,
AGJoinChannelSuccess,
AGRejoinChannelSuccess,
AGLeaveChannel,
AGClientRoleChanged,
AGUserJoined,
AGUserOffline,
AGConnectionStateChanged,
AGConnectionLost,
AGTokenPrivilegeWillExpire,
AGRequestToken,

AGMicrophoneEnabled,
AGAudioVolumeIndication,
AGActiveSpeaker,
AGFirstLocalAudioFrame,
AGFirstRemoteAudioFrame,
AGFirstRemoteAudioDecoded,
AGVideoStopped,
AGFirstLocalVideoFrame,
AGFirstRemoteVideoDecoded,
AGFirstRemoteVideoFrame,
AGUserMuteAudio,
AGUserMuteVideo,
AGUserEnableVideo,
AGUserEnableLocalVideo,
AGVideoSizeChanged,
AGRemoteVideoStateChanged,
AGLocalPublishFallbackToAudioOnly,
AGRemoteSubscribeFallbackToAudioOnly,

AGAudioRouteChanged,
AGCameraReady,
AGCameraFocusAreaChanged,
AGCameraExposureAreaChanged,

AGRtcStats,
AGLastmileQuality,
AGNetworkQuality,
AGLocalVideoStats,
AGRemoteVideoStats,
AGRemoteAudioStats,
AGAudioTransportStatsOfUid,
AGVideoTransportStatsOfUid,

AGAudioMixingStateChanged,
AGRemoteAudioMixingStart,
AGRemoteAudioMixingFinish,
AGAudioEffectFinish,

AGStreamPublished,
AGStreamUnpublish,
AGTranscodingUpdate,

AGStreamInjectedStatus,

AGReceiveStreamMessage,
AGOccurStreamMessageError,

AGMediaEngineLoaded,
AGMediaEngineStartCall,
AGIntervalTest,
AGLastmileProbeTestResult,
AGRtmpStreamingStateChanged,
AGLocalVideoChanged,
AGNetworkTypeChanged,
AGFirstRemoteAudioFrame,
AGMediaMetaDataReceived];

NSMutableArray<NSString *> *eventList = [NSMutableArray arrayWithCapacity:[array count]];
[eventList enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
id mapObj = [NSString stringWithFormat:@"%@%@", AG_PREFIX, obj];
[eventList addObject:mapObj];
}];
return eventList;
}

- (id)copyWithZone:(NSZone *)zone {
return _person;
}
Expand Down
77 changes: 4 additions & 73 deletions ios/RCTAgora/RCTAgora.m
Original file line number Diff line number Diff line change
Expand Up @@ -1998,84 +1998,15 @@ - (NSDictionary *)constantsToExport {
}
}


- (NSArray<NSString *> *)supportedEvents {
return @[
AGWarning,
AGError,
AGApiCallExecute,
AGJoinChannelSuccess,
AGRejoinChannelSuccess,
AGLeaveChannel,
AGClientRoleChanged,
AGUserJoined,
AGUserOffline,
AGConnectionStateChanged,
AGConnectionLost,
AGTokenPrivilegeWillExpire,
AGRequestToken,

AGMicrophoneEnabled,
AGAudioVolumeIndication,
AGActiveSpeaker,
AGFirstLocalAudioFrame,
AGFirstRemoteAudioFrame,
AGFirstRemoteAudioDecoded,
AGVideoStopped,
AGFirstLocalVideoFrame,
AGFirstRemoteVideoDecoded,
AGFirstRemoteVideoFrame,
AGUserMuteAudio,
AGUserMuteVideo,
AGUserEnableVideo,
AGUserEnableLocalVideo,
AGVideoSizeChanged,
AGRemoteVideoStateChanged,
AGLocalPublishFallbackToAudioOnly,
AGRemoteSubscribeFallbackToAudioOnly,

AGAudioRouteChanged,
AGCameraReady,
AGCameraFocusAreaChanged,
AGCameraExposureAreaChanged,

AGRtcStats,
AGLastmileQuality,
AGNetworkQuality,
AGLocalVideoStats,
AGRemoteVideoStats,
AGRemoteAudioStats,
AGAudioTransportStatsOfUid,
AGVideoTransportStatsOfUid,

AGAudioMixingStateChanged,
AGRemoteAudioMixingStart,
AGRemoteAudioMixingFinish,
AGAudioEffectFinish,

AGStreamPublished,
AGStreamUnpublish,
AGTranscodingUpdate,

AGStreamInjectedStatus,

AGReceiveStreamMessage,
AGOccurStreamMessageError,

AGMediaEngineLoaded,
AGMediaEngineStartCall,
AGIntervalTest,
AGLastmileProbeTestResult,
AGRtmpStreamingStateChanged,
AGLocalVideoChanged,
AGNetworkTypeChanged,
AGFirstRemoteAudioFrame,
AGMediaMetaDataReceived
];
return [AgoraConst supportEvents];
}

- (void) sendEvent:(NSString *)msg params:(NSDictionary *)params {
if (hasListeners) {
[self sendEventWithName:msg body:params];
NSString *evtName = [NSString stringWithFormat:@"%@%@", AG_PREFIX, msg];
[self sendEventWithName:evtName body:params];
}
}

Expand Down
17 changes: 1 addition & 16 deletions lib/RtcEngine.native.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { Option, Callback, AudioMixingOption, DataStreamOption, PlayEffectOption
* Other methods of the RtcEngine object serve for agora native sdk and set up error logging.
*/
declare class RtcEngine {
private static eventTypes;
private static readonly AG_PREFIX;
/**
* Creates a RtcEngine Object internal.
*
Expand Down Expand Up @@ -35,21 +35,6 @@ declare class RtcEngine {
* @param listener
*/
static on(eventType: string, listener: (...args: any[]) => any): void;
/**
* remove event listeners
*
* This method unsubscribes specified eventType related all listeners. You should call this method when you want to unsubscribe some eventType.
* @param eventType
*/
static off(eventType: string): void;
/**
* remove all events listeners
*
* This method unsubscribes all eventTypes related listeners.
*
* @param token
*/
static removeAllListeners(): void;
/**
* renew token
*
Expand Down
Loading

0 comments on commit 58c5f99

Please sign in to comment.