SEBSERV-137 fixed -->

"Connection requested" shall be considered as active SEB Client
This commit is contained in:
anhefti 2021-07-12 11:27:52 +02:00
parent e42336aa6a
commit fe45a0357c
7 changed files with 11 additions and 21 deletions

View file

@ -34,12 +34,12 @@ public final class ClientConnection implements GrantEntity {
public final boolean connectingStatus;
public final boolean establishedStatus;
public final boolean indicatorActiveStatus;
public final boolean clientActiveStatus;
ConnectionStatus(final boolean connectingStatus, final boolean establishedStatus) {
this.connectingStatus = connectingStatus;
this.establishedStatus = establishedStatus;
this.indicatorActiveStatus = connectingStatus || establishedStatus;
this.clientActiveStatus = connectingStatus || establishedStatus;
}
}

View file

@ -369,7 +369,7 @@ public class MonitoringClientConnection implements TemplateComposer {
})
.noEventPropagation()
.publishIf(() -> currentUser.get().hasRole(UserRole.EXAM_SUPPORTER) &&
connectionData.clientConnection.status.indicatorActiveStatus);
connectionData.clientConnection.status.clientActiveStatus);
if (connectionData.clientConnection.status == ConnectionStatus.ACTIVE) {
final ProctoringServiceSettings proctoringSettings = restService

View file

@ -436,7 +436,7 @@ public class MonitoringRunningExam implements TemplateComposer {
private Set<EntityKey> selectionForQuitInstruction(final ClientConnectionTable clientTable) {
final Set<String> connectionTokens = clientTable.getConnectionTokens(
cc -> cc.status.indicatorActiveStatus,
cc -> cc.status.clientActiveStatus,
true);
if (connectionTokens == null || connectionTokens.isEmpty()) {
return Collections.emptySet();

View file

@ -189,7 +189,7 @@ public class ClientConnectionDetails {
final double value = indValue.getValue();
final String displayValue = IndicatorValue.getDisplayValue(indValue);
if (!this.connectionData.clientConnection.status.indicatorActiveStatus) {
if (!this.connectionData.clientConnection.status.clientActiveStatus) {
form.setFieldValue(
indData.indicator.name,

View file

@ -597,7 +597,7 @@ public final class ClientConnectionTable {
continue;
}
if (!this.connectionData.clientConnection.status.indicatorActiveStatus) {
if (!this.connectionData.clientConnection.status.clientActiveStatus) {
final String value = (indicatorData.indicator.type.showOnlyInActiveState)
? Constants.EMPTY_NOTE
: IndicatorValue.getDisplayValue(indicatorValue);

View file

@ -86,6 +86,10 @@ public class WebserviceInit implements ApplicationListener<ApplicationReadyEvent
SEBServerInit.INIT_LOGGER.info("---->");
SEBServerInit.INIT_LOGGER.info("----> *** Info:");
if (this.webserviceInfo.isDistributed()) {
SEBServerInit.INIT_LOGGER.info("----> Distributed Setup: {}", this.webserviceInfo.getWebserviceUUID());
}
try {
SEBServerInit.INIT_LOGGER.info("----> Server address: {}", this.environment.getProperty("server.address"));
SEBServerInit.INIT_LOGGER.info("----> Server port: {}", this.environment.getProperty("server.port"));

View file

@ -14,14 +14,12 @@ import java.util.function.Predicate;
import org.springframework.cache.CacheManager;
import ch.ethz.seb.sebserver.gbl.Constants;
import ch.ethz.seb.sebserver.gbl.api.APIMessage;
import ch.ethz.seb.sebserver.gbl.model.exam.Exam;
import ch.ethz.seb.sebserver.gbl.model.session.ClientConnection;
import ch.ethz.seb.sebserver.gbl.model.session.ClientConnection.ConnectionStatus;
import ch.ethz.seb.sebserver.gbl.model.session.ClientConnectionData;
import ch.ethz.seb.sebserver.gbl.util.Result;
import ch.ethz.seb.sebserver.gbl.util.Utils;
import ch.ethz.seb.sebserver.webservice.servicelayer.dao.ClientConnectionDAO;
import ch.ethz.seb.sebserver.webservice.servicelayer.dao.ExamDAO;
import ch.ethz.seb.sebserver.webservice.servicelayer.dao.FilterMap;
@ -185,19 +183,7 @@ public interface ExamSessionService {
* @param connection ClientConnectionData instance
* @return true if the given ClientConnectionData is an active SEB client connection */
static boolean isActiveConnection(final ClientConnectionData connection) {
if (connection.clientConnection.status.establishedStatus) {
return true;
}
if (connection.clientConnection.status == ConnectionStatus.CONNECTION_REQUESTED) {
final Long creationTime = connection.clientConnection.getCreationTime();
final long millisecondsNow = Utils.getMillisecondsNow();
if (millisecondsNow - creationTime < 30 * Constants.SECOND_IN_MILLIS) {
return true;
}
}
return false;
return connection.clientConnection.status.clientActiveStatus;
}
}