mirror of https://github.com/OpenVidu/openvidu.git
openvidu-server: move KurentoConnectionListener creation to KmsManager
parent
c37e777243
commit
4d32de7c19
|
@ -18,65 +18,12 @@
|
|||
package io.openvidu.server.kurento.kms;
|
||||
|
||||
import org.kurento.client.KurentoClient;
|
||||
import org.kurento.client.KurentoConnectionListener;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import io.openvidu.server.kurento.core.KurentoSession;
|
||||
import io.openvidu.server.kurento.core.KurentoSessionManager;
|
||||
|
||||
public class FixedOneKmsManager extends KmsManager {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(FixedOneKmsManager.class);
|
||||
|
||||
public FixedOneKmsManager(String kmsWsUri, LoadManager loadManager) {
|
||||
super(loadManager);
|
||||
|
||||
KurentoClient kClient = KurentoClient.create(kmsWsUri, new KurentoConnectionListener() {
|
||||
|
||||
@Override
|
||||
public void reconnected(boolean isReconnected) {
|
||||
((KurentoSessionManager) sessionManager).getKmsManager().setKurentoClientConnectedToKms(kmsWsUri, true);
|
||||
if (!isReconnected) {
|
||||
// Different KMS. Reset sessions status (no Publisher or SUbscriber endpoints)
|
||||
log.warn("Kurento Client reconnected to a different KMS instance, with uri {}", kmsWsUri);
|
||||
log.warn("Updating all webrtc endpoints for active sessions");
|
||||
final Kms kms = ((KurentoSessionManager) sessionManager).getKmsManager().kmss.get(kmsWsUri);
|
||||
final long timeOfKurentoDisconnection = kms.getTimeOfKurentoClientDisconnection();
|
||||
sessionManager.getSessions().forEach(s -> {
|
||||
((KurentoSession) s).restartStatusInKurento(timeOfKurentoDisconnection);
|
||||
});
|
||||
kms.setTimeOfKurentoClientDisconnection(0);
|
||||
} else {
|
||||
// Same KMS. We may infer that openvidu-server/KMS connection has been lost, but
|
||||
// not the clients/KMS connections
|
||||
log.warn("Kurento Client reconnected to same KMS with uri {}", kmsWsUri);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disconnected() {
|
||||
((KurentoSessionManager) sessionManager).getKmsManager().setKurentoClientConnectedToKms(kmsWsUri,
|
||||
false);
|
||||
((KurentoSessionManager) sessionManager).getKmsManager().setTimeOfKurentoClientDisconnection(kmsWsUri,
|
||||
System.currentTimeMillis());
|
||||
log.warn("Kurento Client disconnected from KMS with uri {}", kmsWsUri);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void connectionFailed() {
|
||||
((KurentoSessionManager) sessionManager).getKmsManager().setKurentoClientConnectedToKms(kmsWsUri,
|
||||
false);
|
||||
log.warn("Kurento Client failed connecting to KMS with uri {}", kmsWsUri);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void connected() {
|
||||
((KurentoSessionManager) sessionManager).getKmsManager().setKurentoClientConnectedToKms(kmsWsUri, true);
|
||||
log.warn("Kurento Client is now connected to KMS with uri {}", kmsWsUri);
|
||||
}
|
||||
});
|
||||
|
||||
KurentoClient kClient = KurentoClient.create(kmsWsUri, this.generateKurentoConnectionListener(kmsWsUri));
|
||||
this.addKms(new Kms(kmsWsUri, kClient, loadManager));
|
||||
}
|
||||
|
||||
|
|
|
@ -24,12 +24,15 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.kurento.client.KurentoConnectionListener;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import io.openvidu.server.core.SessionManager;
|
||||
import io.openvidu.server.kurento.core.KurentoSession;
|
||||
import io.openvidu.server.kurento.core.KurentoSessionManager;
|
||||
|
||||
@Service
|
||||
public abstract class KmsManager {
|
||||
|
@ -63,7 +66,7 @@ public abstract class KmsManager {
|
|||
|
||||
protected LoadManager loadManager;
|
||||
|
||||
private final Logger log = LoggerFactory.getLogger(KmsManager.class);
|
||||
private static final Logger log = LoggerFactory.getLogger(KmsManager.class);
|
||||
|
||||
// Using KMS websocket uris as unique identifiers
|
||||
protected Map<String, Kms> kmss = new ConcurrentHashMap<>();
|
||||
|
@ -138,4 +141,52 @@ public abstract class KmsManager {
|
|||
public boolean destroyWhenUnused() {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected KurentoConnectionListener generateKurentoConnectionListener(String kmsWsUri) {
|
||||
return new KurentoConnectionListener() {
|
||||
|
||||
@Override
|
||||
public void reconnected(boolean isReconnected) {
|
||||
((KurentoSessionManager) sessionManager).getKmsManager().setKurentoClientConnectedToKms(kmsWsUri, true);
|
||||
if (!isReconnected) {
|
||||
// Different KMS. Reset sessions status (no Publisher or SUbscriber endpoints)
|
||||
log.warn("Kurento Client reconnected to a different KMS instance, with uri {}", kmsWsUri);
|
||||
log.warn("Updating all webrtc endpoints for active sessions");
|
||||
final Kms kms = ((KurentoSessionManager) sessionManager).getKmsManager().kmss.get(kmsWsUri);
|
||||
final long timeOfKurentoDisconnection = kms.getTimeOfKurentoClientDisconnection();
|
||||
sessionManager.getSessions().forEach(s -> {
|
||||
((KurentoSession) s).restartStatusInKurento(timeOfKurentoDisconnection);
|
||||
});
|
||||
kms.setTimeOfKurentoClientDisconnection(0);
|
||||
} else {
|
||||
// Same KMS. We may infer that openvidu-server/KMS connection has been lost, but
|
||||
// not the clients/KMS connections
|
||||
log.warn("Kurento Client reconnected to same KMS with uri {}", kmsWsUri);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disconnected() {
|
||||
((KurentoSessionManager) sessionManager).getKmsManager().setKurentoClientConnectedToKms(kmsWsUri,
|
||||
false);
|
||||
((KurentoSessionManager) sessionManager).getKmsManager().setTimeOfKurentoClientDisconnection(kmsWsUri,
|
||||
System.currentTimeMillis());
|
||||
log.warn("Kurento Client disconnected from KMS with uri {}", kmsWsUri);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void connectionFailed() {
|
||||
((KurentoSessionManager) sessionManager).getKmsManager().setKurentoClientConnectedToKms(kmsWsUri,
|
||||
false);
|
||||
log.warn("Kurento Client failed connecting to KMS with uri {}", kmsWsUri);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void connected() {
|
||||
((KurentoSessionManager) sessionManager).getKmsManager().setKurentoClientConnectedToKms(kmsWsUri, true);
|
||||
log.warn("Kurento Client is now connected to KMS with uri {}", kmsWsUri);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue