Call handling state machine refactor.

This commit is contained in:
Cody Henthorne
2020-10-16 15:42:04 -04:00
committed by Alan Evans
parent b3f0a44f10
commit 5eaac6cb17
31 changed files with 3446 additions and 1391 deletions

View File

@@ -116,4 +116,16 @@ public class CallParticipant {
public int hashCode() {
return Objects.hash(cameraState, recipient, identityKey, videoSink, videoEnabled, microphoneEnabled);
}
@Override
public @NonNull String toString() {
return "CallParticipant{" +
"cameraState=" + cameraState +
", recipient=" + recipient.getId() +
", identityKey=" + (identityKey == null ? "absent" : "present") +
", videoSink=" + (videoSink.getEglBase() == null ? "not initialized" : "initialized") +
", videoEnabled=" + videoEnabled +
", microphoneEnabled=" + microphoneEnabled +
'}';
}
}

View File

@@ -1,6 +1,7 @@
package org.thoughtcrime.securesms.events;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.annimon.stream.Stream;
@@ -13,6 +14,8 @@ import java.util.List;
public class WebRtcViewModel {
public enum State {
IDLE,
// Normal states
CALL_PRE_JOIN,
CALL_INCOMING,
@@ -48,7 +51,7 @@ public class WebRtcViewModel {
public WebRtcViewModel(@NonNull State state,
@NonNull Recipient recipient,
@NonNull CameraState localCameraState,
@NonNull BroadcastVideoSink localSink,
@Nullable BroadcastVideoSink localSink,
boolean isBluetoothAvailable,
boolean isMicrophoneEnabled,
boolean isRemoteVideoOffer,
@@ -62,7 +65,7 @@ public class WebRtcViewModel {
this.callConnectedTime = callConnectedTime;
this.remoteParticipants = remoteParticipants;
localParticipant = CallParticipant.createLocal(localCameraState, localSink, isMicrophoneEnabled);
localParticipant = CallParticipant.createLocal(localCameraState, localSink != null ? localSink : new BroadcastVideoSink(null), isMicrophoneEnabled);
}
public @NonNull State getState() {
@@ -97,4 +100,15 @@ public class WebRtcViewModel {
return remoteParticipants;
}
@Override public @NonNull String toString() {
return "WebRtcViewModel{" +
"state=" + state +
", recipient=" + recipient.getId() +
", isBluetoothAvailable=" + isBluetoothAvailable +
", isRemoteVideoOffer=" + isRemoteVideoOffer +
", callConnectedTime=" + callConnectedTime +
", localParticipant=" + localParticipant +
", remoteParticipants=" + remoteParticipants +
'}';
}
}