public void Creates_the_ViewModel_from_dto() { var dto = new StudioComponentDto() { Id = 355, Name = "5gjdgj", IsPlaceholder = true, Inputs = new List <StudioComponentEndpointDto> { new StudioComponentEndpointDto() { IOType = Shared.EndpointIOType.Input, ConnectionType = "ghd", DataKind = Shared.DataKind.Video, Id = 1, Name = "Input 1" } }, Outputs = new List <StudioComponentEndpointDto> { new StudioComponentEndpointDto() { IOType = Shared.EndpointIOType.Output, ConnectionType = "hgffds", DataKind = Shared.DataKind.Data, Id = 1, Name = "Output 1" } } }; var vm = new PlaceholderViewModel(dto); Assert.AreEqual(dto.Id, vm.Id); Assert.AreEqual(dto.Name, vm.Name); Assert.AreEqual(dto.Inputs.Count, vm.Inputs.Count); Assert.AreEqual(dto.Outputs.Count, vm.Outputs.Count); Assert.AreEqual(dto.Inputs.First().Id, vm.Inputs[0].Id); Assert.AreEqual(dto.Outputs.First().Id, vm.Outputs[0].Id); Assert.AreEqual(vm, vm.Inputs[0].ComponentViewModel); Assert.AreEqual(vm, vm.Outputs[0].ComponentViewModel); }
public PlaceholderViewModel(StudioComponentDto studioComponentDto) : base(studioComponentDto) { if (!studioComponentDto.IsPlaceholder) { throw new ArgumentException("Provided DTO does not describe a placeholder."); } }
public async Task <bool> JoinVirtualStudio(string virtualStudioName, StudioComponentDto studioComponent) { string connectionId = Context.ConnectionId; await RemoveClientFromAnyVirtualStudioAsync(connectionId); await AddClientToVirtualStudioAsync(connectionId, virtualStudioName, studioComponent); return(true); }
public void Throws_ArgumentException_when_IsPlaceholder_is_set_to_false() { var dto = new StudioComponentDto() { IsPlaceholder = false, }; Assert.ThrowsException <ArgumentException>(() => new PlaceholderViewModel(dto)); }
public Task AddPlaceholderNode(string virtualStudioName, StudioComponentDto component, float x, float y) { virtualStudioViewModel.ComponentNodes.Add(new ComponentNodeViewModel() { Component = new PlaceholderViewModel(component), PositionX = x, PositionY = y }); return(Task.CompletedTask); }
private WebRtcManager(IVirtualStudioConnection virtualStudioConnection, StudioComponentDto studioComponent, IJSRuntime jsRuntime, ElementReference receivingVideoElement, ElementReference rtpTimestamp) { this.studioComponent = studioComponent; this.virtualStudioConnection = virtualStudioConnection; this.jsRuntime = jsRuntime; this.receivingVideoElement = receivingVideoElement; this.rtpTimestamp = rtpTimestamp; objRef = DotNetObjectReference.Create(this); virtualStudioConnection.AddListener(this); }
public void Adds_a_Placeholder_to_ComponentNodes() { var updater = new VirtualStudioViewModelUpdater(viewModel); var placeholderDto = new StudioComponentDto { Id = 10, IsPlaceholder = true, }; updater.AddPlaceholderNode(virtualStudioName, placeholderDto, 123, 456); var addedComponentNode = viewModel.ComponentNodes.First(c => c.Component.Id == 10); Assert.AreEqual(123, addedComponentNode.PositionX); Assert.AreEqual(456, addedComponentNode.PositionY); }
public void Adds_a_placeholder_to_repository() { var placeholderDto = new StudioComponentDto { Id = 10, Name = "Placeholder 10", IsPlaceholder = true, Outputs = new List <StudioComponentEndpointDto> { new StudioComponentEndpointDto { IOType = Shared.EndpointIOType.Output, Id = 1 } }, Inputs = new List <StudioComponentEndpointDto> { new StudioComponentEndpointDto { IOType = Shared.EndpointIOType.Input, Id = 2 }, new StudioComponentEndpointDto { IOType = Shared.EndpointIOType.Input, Id = 3 } } }; var updater = new VirtualStudioViewModelUpdater(viewModel); updater.AddPlaceholderToRepository(virtualStudioName, placeholderDto); var addedClient = viewModel.ComponentRepository.Placeholders.First(c => c.Id == 10); Assert.AreEqual(placeholderDto.Name, addedClient.Name); Assert.IsTrue(addedClient is PlaceholderViewModel); Assert.AreEqual(placeholderDto.Outputs.Count, addedClient.Outputs.Count); Assert.AreEqual(placeholderDto.Inputs.Count, addedClient.Inputs.Count); Assert.AreEqual(placeholderDto.Inputs.First().IOType, addedClient.Inputs[0].IOType); Assert.AreEqual(placeholderDto.Outputs.First().IOType, addedClient.Outputs[0].IOType); CollectionAssert.AreEqual(placeholderDto.Outputs.Select(o => o.Id).ToArray(), addedClient.Outputs.Select(o => o.Id).ToArray()); CollectionAssert.AreEqual(placeholderDto.Inputs.Select(o => o.Id).ToArray(), addedClient.Inputs.Select(o => o.Id).ToArray()); }
public ComponentViewModel(StudioComponentDto studioComponentDto) { Id = studioComponentDto.Id; Name = studioComponentDto.Name; if (studioComponentDto.Inputs != null) { foreach (var input in studioComponentDto.Inputs) { Inputs.Add(new StudioComponentEndpointViewModel(this, input)); } } if (studioComponentDto.Outputs != null) { foreach (var output in studioComponentDto.Outputs) { Outputs.Add(new StudioComponentEndpointViewModel(this, output)); } } }
async Task ConnectToServer() { virtualStudioConnection = await SignalRVirtualStudioConnection.CreateAsync("192.168.2.109", 5001, true); virtualStudioConnection.AddListener(this); StudioComponentDto studioComponentDto = new StudioComponentDto { Name = "AR Camera", IsPlaceholder = false, Inputs = new List <StudioComponentEndpointDto> { new StudioComponentEndpointDto() { IOType = EndpointIOType.Input, ConnectionType = "WebRTC", DataKind = DataKind.Video, Id = 2, Name = "Feedback" } }, Outputs = new List <StudioComponentEndpointDto> { new StudioComponentEndpointDto() { IOType = EndpointIOType.Output, ConnectionType = "WebRTC", DataKind = DataKind.VideoAudio, Id = 1, Name = "Video" } } }; bool success = await virtualStudioConnection.JoinVirtualStudio(virtualStudioName, studioComponentDto); if (success) { Console.WriteLine($"Joined '{virtualStudioName}' successfully."); } else { Console.WriteLine($"Joining '{virtualStudioName}' failed."); } }
private async Task AddClientToVirtualStudioAsync(string connectionId, string virtualStudioName, StudioComponentDto studioComponentDto) { await Groups.AddToGroupAsync(connectionId, virtualStudioName); connectionIdToGroupMapping[connectionId] = virtualStudioName; logger.LogInformation($"StudioClient '{Context.ConnectionId}' joined {virtualStudioName}"); if (virtualStudios.TryGetVirtualStudio(virtualStudioName, out Core.VirtualStudio virtualStudio)) { var studioClient = new SignalRStudioClient(virtualStudioName, connectionId, virtualStudioClientProvider, studioComponentDto); connectionIdToStudioClientMapping[connectionId] = studioClient; virtualStudio.ComponentRepository.AddClient(studioClient.StudioComponent); virtualStudio.AddComponent(studioClient.StudioComponent); } }
public Task AddPlaceholderToRepository(string virtualStudioName, StudioComponentDto component) { virtualStudioViewModel.ComponentRepository.Placeholders.Add(new PlaceholderViewModel(component)); return(Task.CompletedTask); }
public Task AddPlaceholder(string virtualStudioName, StudioComponentDto component) { // Do nothing. return(Task.CompletedTask); }
public Task AddClientToRepository(string virtualStudioName, StudioComponentDto component) { virtualStudioViewModel.ComponentRepository.Clients.Add(new ComponentViewModel(component)); return(Task.CompletedTask); }
public Task <bool> JoinVirtualStudio(string virtualStudioName, StudioComponentDto studioComponent) => hubConnection.InvokeAsync <bool>(nameof(JoinVirtualStudio), virtualStudioName, studioComponent);
public Task <OperationResponse> AddPlaceholderToRepository(StudioComponentDto placeholder) => InvokeIfConnected(() => HubConnection.InvokeAsync <OperationResponse>(nameof(AddPlaceholderToRepository), placeholder));
public AddPlaceholderToRepositoryCommand(StudioComponentDto component) { this.component = component; }
public Task <OperationResponse> AddPlaceholderToRepository(StudioComponentDto placeholder) => ExecuteOperation(new AddPlaceholderToRepositoryCommand(placeholder));
public Task AddPlaceholderNode(string virtualStudioName, StudioComponentDto component, float x, float y) => GetGroup(virtualStudioName).AddPlaceholderNode(virtualStudioName, component, x, y);
public Task AddPlaceholderToRepository(string virtualStudioName, StudioComponentDto component) => GetGroup(virtualStudioName).AddPlaceholderToRepository(virtualStudioName, component);
public static async Task <WebRtcManager> CreateAsync(IVirtualStudioConnection virtualStudioConnection, StudioComponentDto studioComponent, IJSRuntime jsRuntime, ElementReference receivingVideoElement, ElementReference rtpTimestamp) { var manager = new WebRtcManager(virtualStudioConnection, studioComponent, jsRuntime, receivingVideoElement, rtpTimestamp); manager.handlerId = await jsRuntime.InvokeAsync <int>("WebRtcHandlerManager.createHandler"); return(manager); }