Skip to content

Commit

Permalink
Refactor code to pass quality gate
Browse files Browse the repository at this point in the history
  • Loading branch information
mekya committed Mar 1, 2025
1 parent 5bd09ac commit 22de8a3
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 51 deletions.
89 changes: 48 additions & 41 deletions src/main/java/io/antmedia/AntMediaApplicationAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ public class AntMediaApplicationAdapter extends MultiThreadedApplicationAdapter
private Random random = new Random();

private IStatsCollector statsCollector;

private Set<IAppSettingsUpdateListener> settingsUpdateListenerSet = new ConcurrentHashSet<IAppSettingsUpdateListener>();

@Override
Expand Down Expand Up @@ -700,7 +700,7 @@ public void closeBroadcast(String streamId) {
notifyHook(listenerHookURL, streamId, mainTrackId, HOOK_ACTION_END_LIVE_STREAM, name, category,
null, null, metaData, null);
}

PublishEndedEvent publishEndedEvent = new PublishEndedEvent();
publishEndedEvent.setStreamId(streamId);
publishEndedEvent.setDurationMs(System.currentTimeMillis() - broadcast.getStartTime());
Expand Down Expand Up @@ -1006,34 +1006,41 @@ public ServerSettings getServerSettings()
return serverSettings;
}

public static Broadcast saveUndefinedBroadcast(String streamId, String streamName, AntMediaApplicationAdapter appAdapter, String streamStatus, long absoluteStartTimeMs, String publishType, String mainTrackStreamId, String metaData, String role, boolean isVirtual) {
public static Broadcast createZombiBroadcast(String streamId, String streamName, String streamStatus, String publishType, String mainTrackStreamId, String metaData, String role) {
Broadcast newBroadcast = new Broadcast();
long now = System.currentTimeMillis();
newBroadcast.setDate(now);
newBroadcast.setStartTime(now);
newBroadcast.setUpdateTime(now);
newBroadcast.setZombi(true);
newBroadcast.setName(streamName);
newBroadcast.setMainTrackStreamId(mainTrackStreamId);
newBroadcast.setMetaData(metaData);
newBroadcast.setRole(role);
try {
newBroadcast.setStreamId(streamId);
newBroadcast.setPublishType(publishType);

return RestServiceBase.saveBroadcast(newBroadcast,
streamStatus, appAdapter.getScope().getName(), appAdapter.getDataStore(),
appAdapter.getAppSettings().getListenerHookURL(), appAdapter.getServerSettings(), absoluteStartTimeMs, isVirtual);
} catch (Exception e) {
newBroadcast.setStatus(streamStatus);
return newBroadcast;
}
catch (Exception e) {
logger.error(ExceptionUtils.getStackTrace(e));
}
return null;
}

public static Broadcast saveUndefinedBroadcast(String streamId, String streamName, AntMediaApplicationAdapter appAdapter, String streamStatus, long absoluteStartTimeMs, String publishType, String mainTrackStreamId, String metaData, String role) {
return saveUndefinedBroadcast(streamId, streamName, appAdapter, streamStatus, absoluteStartTimeMs, publishType, mainTrackStreamId, metaData, role, false);
Broadcast broadcast = createZombiBroadcast(streamId, streamName, streamStatus, publishType, mainTrackStreamId, metaData, role);

broadcast.setAbsoluteStartTimeMs(absoluteStartTimeMs);
return RestServiceBase.saveBroadcast(broadcast,
streamStatus, appAdapter.getScope().getName(), appAdapter.getDataStore(),
appAdapter.getAppSettings().getListenerHookURL(), appAdapter.getServerSettings(), absoluteStartTimeMs);
}

public static Broadcast saveBroadcast(Broadcast broadcast, AntMediaApplicationAdapter appAdapter) {
return RestServiceBase.saveBroadcast(broadcast,
null, appAdapter.getScope().getName(), appAdapter.getDataStore(),
appAdapter.getAppSettings().getListenerHookURL(), appAdapter.getServerSettings(), -1);
}


@Override
@Deprecated
Expand All @@ -1045,7 +1052,7 @@ public void muxingFinished(String streamId, File File, long startTime, long dura

@Override
public void muxingFinished(Broadcast broadcast, String streamId, File file, long startTime, long duration, int resolution, String previewFilePath, String vodId) {

String listenerHookURL = null;
String streamName = file.getName();
String description = null;
Expand All @@ -1068,7 +1075,7 @@ public void muxingFinished(Broadcast broadcast, String streamId, File file, long
else {
logger.error("Broadcast is null for muxingFinished for stream: {} it's not supposed to happen", streamId);
}

String vodName = file.getName();
String filePath = file.getPath();
long fileSize = file.length();
Expand All @@ -1094,7 +1101,7 @@ public void muxingFinished(Broadcast broadcast, String streamId, File file, long
newVod.setLongitude(longitude);
newVod.setLatitude(latitude);
newVod.setAltitude(altitude);



if (getDataStore().addVod(newVod) == null) {
Expand Down Expand Up @@ -1296,10 +1303,10 @@ private void putToMap(String keyName, Object keyValue, Map<String, Object> map)

public boolean sendClusterPost(String url, String clusterCommunicationToken)
{

return callClusterRestMethod(url, clusterCommunicationToken);
}

public boolean callClusterRestMethod(String url, String clusterCommunicationToken)
{

Expand Down Expand Up @@ -1470,15 +1477,15 @@ public void setStreamAcceptFilter(StreamAcceptFilter streamAcceptFilter) {
public boolean isValidStreamParameters(int width, int height, int fps, int bitrate, String streamId) {
return streamAcceptFilter.isValidStreamParameters(width, height, fps, bitrate, streamId);
}

/**
* Important information: Status field of Broadcast class checks the update time to report the status is broadcasting or not.
* {@link Broadcast#getStatus()}
*/
*/
public static final boolean isStreaming(String status) {

return (IAntMediaStreamHandler.BROADCAST_STATUS_BROADCASTING.equals(status)
|| IAntMediaStreamHandler.BROADCAST_STATUS_PREPARING.equals(status));
|| IAntMediaStreamHandler.BROADCAST_STATUS_PREPARING.equals(status));
}

public Result startStreaming(Broadcast broadcast) {
Expand Down Expand Up @@ -1607,7 +1614,7 @@ else if (broadcast.getType().equals(AntMediaApplicationAdapter.LIVE_STREAM))
}
return result;
}

public OnvifCamera getOnvifCamera(String id) {
OnvifCamera onvifCamera = onvifCameraList.get(id);
if (onvifCamera == null) {
Expand Down Expand Up @@ -1642,7 +1649,7 @@ public void setQualityParameters(String streamId, PublishStatsEvent stats, long
Broadcast broadcastLocal = getDataStore().get(streamId);
if (broadcastLocal != null)
{


BroadcastUpdate broadcastUpdate = new BroadcastUpdate();
broadcastUpdate.setSpeed(stats.getSpeed());
Expand All @@ -1656,22 +1663,22 @@ public void setQualityParameters(String streamId, PublishStatsEvent stats, long
broadcastUpdate.setBitrate(bitrate);
}



broadcastUpdate.setWidth(stats.getWidth());
broadcastUpdate.setHeight(stats.getHeight());

broadcastUpdate.setEncoderQueueSize(stats.getEncodingQueueSize());
broadcastUpdate.setDropPacketCountInIngestion(stats.getDroppedPacketCountInIngestion());
broadcastUpdate.setDropFrameCountInEncoding(stats.getDroppedFrameCountInEncoding());
broadcastUpdate.setPacketLostRatio(stats.getPacketLostRatio());
broadcastUpdate.setPacketsLost(stats.getPacketsLost());
broadcastUpdate.setJitterMs(stats.getJitterMs());
broadcastUpdate.setRttMs(stats.getRoundTripTimeMs());
broadcastUpdate.setRemoteIp(stats.getRemoteIp());
broadcastUpdate.setUserAgent(stats.getUserAgent());
broadcastUpdate.setReceivedBytes(stats.getTotalByteReceived());
broadcastUpdate.setJitterMs(stats.getJitterMs());
broadcastUpdate.setRttMs(stats.getRoundTripTimeMs());

broadcastUpdate.setRemoteIp(stats.getRemoteIp());
broadcastUpdate.setUserAgent(stats.getUserAgent());
broadcastUpdate.setReceivedBytes(stats.getTotalByteReceived());

getDataStore().updateBroadcastFields(streamId, broadcastUpdate);

Expand All @@ -1683,24 +1690,24 @@ public void setQualityParameters(String streamId, PublishStatsEvent stats, long
viewerCountEvent.setWebRTCViewerCount(broadcastLocal.getWebRTCViewerCount());

LoggerUtils.logAnalyticsFromServer(viewerCountEvent);

logger.debug("update source quality for stream:{} width:{} height:{} bitrate:{} input queue size:{} encoding queue size:{} packetsLost:{} packetLostRatio:{} jitter:{} rtt:{}",

streamId, stats.getWidth(), stats.getHeight(), broadcastUpdate.getBitrate(), stats.getInputQueueSize(), stats.getEncodingQueueSize(),
stats.getPacketsLost(), stats.getPacketLostRatio(), stats.getJitterMs(), stats.getRoundTripTimeMs());
}

});


}

@Override
public void setQualityParameters(String id, String quality, double speed, int pendingPacketSize, long updateTimeMs) {
PublishStatsEvent stats = new PublishStatsEvent();
stats.setSpeed(speed);
stats.setInputQueueSize(pendingPacketSize);

setQualityParameters(id, stats, updateTimeMs);
}

Expand Down Expand Up @@ -2192,18 +2199,18 @@ public synchronized boolean updateSettings(AppSettings newSettings, boolean noti
else {
logger.warn("Settings cannot be saved for {}", getScope().getName());
}

notifySettingsUpdateListeners(appSettings);

return result;
}

public void notifySettingsUpdateListeners(AppSettings appSettings) {
for (IAppSettingsUpdateListener listener : settingsUpdateListenerSet) {
listener.settingsUpdated(appSettings);
}
}

@Override
public void addSettingsUpdateListener(IAppSettingsUpdateListener listener) {
settingsUpdateListenerSet.add(listener);
Expand Down Expand Up @@ -2487,7 +2494,7 @@ public boolean removePacketListener(String streamId, IPacketListener listener) {
public void addFrameListener(String streamId, IFrameListener listener) {
//for enterprise
}

public IFrameListener createCustomBroadcast(String streamId) {
throw new IllegalStateException("This method is not implemented in Community Edition");
}
Expand Down
17 changes: 7 additions & 10 deletions src/main/java/io/antmedia/rest/RestServiceBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -257,15 +257,15 @@ public Broadcast createBroadcastWithStreamID(Broadcast broadcast) {
}

public static Broadcast saveBroadcast(Broadcast broadcast, String status, String scopeName, DataStore dataStore,
String settingsListenerHookURL, ServerSettings serverSettings, long absoluteStartTimeMs, boolean isVirtual) {
String settingsListenerHookURL, ServerSettings serverSettings, long absoluteStartTimeMs) {

if (broadcast == null) {
broadcast = new Broadcast();
}

broadcast.setStatus(status);
if (StringUtils.isNotBlank(status)) {
broadcast.setStatus(status);
}
broadcast.setDate(System.currentTimeMillis());
broadcast.setVirtual(isVirtual);

String listenerHookURL = broadcast.getListenerHookURL();

Expand All @@ -278,7 +278,9 @@ public static Broadcast saveBroadcast(Broadcast broadcast, String status, String
fqdn = serverSettings.getHostAddress();
}
broadcast.setOriginAdress(serverSettings.getHostAddress());
broadcast.setAbsoluteStartTimeMs(absoluteStartTimeMs);
if (absoluteStartTimeMs != 0) {
broadcast.setAbsoluteStartTimeMs(absoluteStartTimeMs);
}
removeEmptyPlayListItems(broadcast.getPlayListItemList());
if (fqdn != null && fqdn.length() >= 0) {
broadcast.setRtmpURL("rtmp://" + fqdn + "/" + scopeName + "/");
Expand All @@ -289,11 +291,6 @@ public static Broadcast saveBroadcast(Broadcast broadcast, String status, String
dataStore.save(broadcast);
return broadcast;
}

public static Broadcast saveBroadcast(Broadcast broadcast, String status, String scopeName, DataStore dataStore,
String settingsListenerHookURL, ServerSettings serverSettings, long absoluteStartTimeMs) {
return saveBroadcast(broadcast, status, scopeName, dataStore, settingsListenerHookURL, serverSettings, absoluteStartTimeMs, false);
}

public static void updatePlayListItemDurationsIfApplicable(List<PlayListItem> playListItemList, String streamId)
{
Expand Down

0 comments on commit 22de8a3

Please sign in to comment.