public async Task <Unit> Handle(InitializeEquipmentRequest request, CancellationToken cancellationToken) { var connection = new EquipmentConnection(request.ConnectionId, request.Name, request.Devices, ImmutableDictionary <ProducerSource, UseMediaStateInfo> .Empty); await _repository.SetConnection(request.Participant, connection); var isJoined = await _mediator.Send(new CheckIsParticipantJoinedRequest(request.Participant)); if (!isJoined) { await _repository.RemoveConnection(request.Participant, connection.ConnectionId); throw EquipmentError.ParticipantNotJoined.ToException(); } await _mediator.Send(new UpdateSynchronizedObjectRequest(request.Participant.ConferenceId, SynchronizedEquipment.SyncObjId(request.Participant.Id))); return(Unit.Value); }
public async ValueTask SetConnection(Participant participant, EquipmentConnection connection) { var key = GetKey(participant); await _database.HashSetAsync(key, connection.ConnectionId, connection); }