openvidu-server: cdr enabled condition checked in CallDetailRecord class

pull/88/merge
pabloFuente 2018-06-28 16:53:27 +02:00
parent a8495a6f54
commit 2a35293e18
4 changed files with 26 additions and 37 deletions

View File

@ -23,6 +23,9 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListSet;
import org.springframework.beans.factory.annotation.Autowired;
import io.openvidu.server.config.OpenviduConfig;
import io.openvidu.server.core.MediaOptions;
import io.openvidu.server.core.Participant;
import io.openvidu.server.recording.Recording;
@ -73,6 +76,9 @@ import io.openvidu.server.recording.Recording;
*/
public class CallDetailRecord {
@Autowired
protected OpenviduConfig openviduConfig;
private CDRLogger logger;
private Map<String, CDREvent> sessions = new ConcurrentHashMap<>();
@ -87,37 +93,37 @@ public class CallDetailRecord {
public void recordSessionCreated(String sessionId) {
CDREvent e = new CDREvent(CDREventName.sessionCreated, sessionId);
this.sessions.put(sessionId, e);
this.logger.log(e);
if (openviduConfig.isCdrEnabled()) this.logger.log(e);
}
public void recordSessionDestroyed(String sessionId, String reason) {
CDREvent e = this.sessions.remove(sessionId);
this.logger.log(new CDREvent(CDREventName.sessionDestroyed, e, reason));
if (openviduConfig.isCdrEnabled()) this.logger.log(new CDREvent(CDREventName.sessionDestroyed, e, reason));
}
public void recordParticipantJoined(Participant participant, String sessionId) {
CDREvent e = new CDREvent(CDREventName.participantJoined, participant, sessionId);
this.participants.put(participant.getParticipantPublicId(), e);
this.logger.log(e);
if (openviduConfig.isCdrEnabled()) this.logger.log(e);
}
public void recordParticipantLeft(Participant participant, String sessionId, String reason) {
CDREvent e = this.participants.remove(participant.getParticipantPublicId());
this.logger.log(new CDREvent(CDREventName.participantLeft, e, reason));
if (openviduConfig.isCdrEnabled()) this.logger.log(new CDREvent(CDREventName.participantLeft, e, reason));
}
public void recordNewPublisher(Participant participant, String sessionId, MediaOptions mediaOptions) {
CDREvent publisher = new CDREvent(CDREventName.webrtcConnectionCreated, participant, sessionId, mediaOptions,
null, System.currentTimeMillis(), null);
this.publications.put(participant.getParticipantPublicId(), publisher);
this.logger.log(publisher);
if (openviduConfig.isCdrEnabled()) this.logger.log(publisher);
}
public boolean stopPublisher(String participantPublicId, String reason) {
CDREvent publisher = this.publications.remove(participantPublicId);
if (publisher != null) {
publisher = new CDREvent(CDREventName.webrtcConnectionDestroyed, publisher, reason);
this.logger.log(publisher);
if (openviduConfig.isCdrEnabled()) this.logger.log(publisher);
return true;
}
return false;
@ -129,7 +135,7 @@ public class CallDetailRecord {
publisher.getMediaOptions(), publisher.getParticipantPublicId(), System.currentTimeMillis(), null);
this.subscriptions.putIfAbsent(participant.getParticipantPublicId(), new ConcurrentSkipListSet<>());
this.subscriptions.get(participant.getParticipantPublicId()).add(subscriber);
this.logger.log(subscriber);
if (openviduConfig.isCdrEnabled()) this.logger.log(subscriber);
}
public boolean stopSubscriber(String participantPublicId, String senderPublicId, String reason) {
@ -141,7 +147,7 @@ public class CallDetailRecord {
if (subscription.getReceivingFrom().equals(senderPublicId)) {
it.remove();
subscription = new CDREvent(CDREventName.webrtcConnectionDestroyed, subscription, reason);
this.logger.log(subscription);
if (openviduConfig.isCdrEnabled()) this.logger.log(subscription);
return true;
}
}
@ -150,11 +156,11 @@ public class CallDetailRecord {
}
public void recordRecordingStarted(String sessionId, Recording recording) {
this.logger.log(new CDREvent(CDREventName.recordingStarted, sessionId, recording));
if (openviduConfig.isCdrEnabled()) this.logger.log(new CDREvent(CDREventName.recordingStarted, sessionId, recording));
}
public void recordRecordingStopped(String sessionId, Recording recording) {
this.logger.log(new CDREvent(CDREventName.recordingStopped, sessionId, recording));
if (openviduConfig.isCdrEnabled()) this.logger.log(new CDREvent(CDREventName.recordingStopped, sessionId, recording));
}
}

View File

@ -64,15 +64,11 @@ public class SessionEventsHandler {
ReentrantLock lock = new ReentrantLock();
public void onSessionCreated(String sessionId) {
if (openviduConfig.isCdrEnabled()) {
CDR.recordSessionCreated(sessionId);
}
CDR.recordSessionCreated(sessionId);
}
public void onSessionClosed(String sessionId, String reason) {
if (openviduConfig.isCdrEnabled()) {
CDR.recordSessionDestroyed(sessionId, reason);
}
CDR.recordSessionDestroyed(sessionId, reason);
}
public void onParticipantJoined(Participant participant, String sessionId, Set<Participant> existingParticipants,
@ -327,9 +323,7 @@ public class SessionEventsHandler {
public void sendRecordingStartedNotification(Session session, Recording recording) {
if (openviduConfig.isCdrEnabled()) {
CDR.recordRecordingStarted(session.getSessionId(), recording);
}
CDR.recordRecordingStarted(session.getSessionId(), recording);
// Filter participants by roles according to "openvidu.recording.notification"
Set<Participant> filteredParticipants = this.filterParticipantsByRole(
@ -347,9 +341,7 @@ public class SessionEventsHandler {
public void sendRecordingStoppedNotification(Session session, Recording recording) {
if (openviduConfig.isCdrEnabled()) {
CDR.recordRecordingStopped(session.getSessionId(), recording);
}
CDR.recordRecordingStopped(session.getSessionId(), recording);
// Be sure to clean this map (this should return null)
this.recordingsStarted.remove(session.getSessionId());

View File

@ -107,9 +107,7 @@ public class KurentoParticipant extends Participant {
this.publisher.getEndpoint().addTag("name", publisherStreamId);
addEndpointListeners(this.publisher);
if (openviduConfig.isCdrEnabled()) {
CDR.recordNewPublisher(this, this.session.getSessionId(), mediaOptions);
}
CDR.recordNewPublisher(this, this.session.getSessionId(), mediaOptions);
}
@ -314,7 +312,7 @@ public class KurentoParticipant extends Participant {
log.info("PARTICIPANT {}: Is now receiving video from {} in room {}", this.getParticipantPublicId(),
senderName, this.session.getSessionId());
if (openviduConfig.isCdrEnabled() && !ProtocolElements.RECORDER_PARTICIPANT_PUBLICID.equals(this.getParticipantPublicId())) {
if (!ProtocolElements.RECORDER_PARTICIPANT_PUBLICID.equals(this.getParticipantPublicId())) {
CDR.recordNewSubscriber(this, this.session.getSessionId(), sender.getParticipantPublicId());
}
@ -475,9 +473,7 @@ public class KurentoParticipant extends Participant {
this.streaming = false;
publisher = null;
if (openviduConfig.isCdrEnabled()) {
CDR.stopPublisher(this.getParticipantPublicId(), reason);
}
CDR.stopPublisher(this.getParticipantPublicId(), reason);
} else {
log.warn("PARTICIPANT {}: Trying to release publisher endpoint but is null", getParticipantPublicId());
@ -489,7 +485,7 @@ public class KurentoParticipant extends Participant {
subscriber.unregisterErrorListeners();
releaseElement(senderName, subscriber.getEndpoint());
if (openviduConfig.isCdrEnabled() && !ProtocolElements.RECORDER_PARTICIPANT_PUBLICID.equals(this.getParticipantPublicId())) {
if (!ProtocolElements.RECORDER_PARTICIPANT_PUBLICID.equals(this.getParticipantPublicId())) {
CDR.stopSubscriber(this.getParticipantPublicId(), senderName, reason);
}

View File

@ -35,14 +35,12 @@ import org.kurento.client.KurentoClient;
import org.kurento.client.MediaPipeline;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import io.openvidu.client.OpenViduException;
import io.openvidu.client.OpenViduException.Code;
import io.openvidu.client.internal.ProtocolElements;
import io.openvidu.java.client.SessionProperties;
import io.openvidu.server.cdr.CallDetailRecord;
import io.openvidu.server.config.OpenviduConfig;
import io.openvidu.server.core.Participant;
import io.openvidu.server.core.Session;
@ -53,9 +51,6 @@ public class KurentoSession implements Session {
private final static Logger log = LoggerFactory.getLogger(Session.class);
public static final int ASYNC_LATCH_TIMEOUT = 30;
@Autowired
protected OpenviduConfig openviduConfig;
private final ConcurrentMap<String, KurentoParticipant> participants = new ConcurrentHashMap<>();
private String sessionId;
@ -115,7 +110,7 @@ public class KurentoSession implements Session {
log.info("SESSION {}: Added participant {}", sessionId, participant);
if (openviduConfig.isCdrEnabled() && !ProtocolElements.RECORDER_PARTICIPANT_PUBLICID.equals(participant.getParticipantPublicId())) {
if (!ProtocolElements.RECORDER_PARTICIPANT_PUBLICID.equals(participant.getParticipantPublicId())) {
CDR.recordParticipantJoined(participant, sessionId);
}
}
@ -171,7 +166,7 @@ public class KurentoSession implements Session {
this.removeParticipant(participant, reason);
participant.close(reason);
if (openviduConfig.isCdrEnabled() && !ProtocolElements.RECORDER_PARTICIPANT_PUBLICID.equals(participant.getParticipantPublicId())) {
if (!ProtocolElements.RECORDER_PARTICIPANT_PUBLICID.equals(participant.getParticipantPublicId())) {
CDR.recordParticipantLeft(participant, participant.getSession().getSessionId(), reason);
}
}