/// <inheritdoc/> public Task HandleAsync(ApplicationEventModel eventData) { var arguments = new object[] { eventData.ToApiModel() }; return(_callback.BroadcastAsync( EventTargets.ApplicationEventTarget, arguments)); }
/// <summary> /// Convert to api model /// </summary> /// <param name="model"></param> /// <returns></returns> public static ApplicationEventApiModel ToApiModel( this ApplicationEventModel model) { return(new ApplicationEventApiModel { EventType = (ApplicationEventType)model.EventType, Application = model.Application.Map <ApplicationInfoApiModel>() }); }
/// <summary> /// Convert to api model /// </summary> /// <param name="model"></param> /// <returns></returns> public static ApplicationEventApiModel ToApiModel( this ApplicationEventModel model) { return(new ApplicationEventApiModel { EventType = (ApplicationEventType)model.EventType, Id = model.Id, Application = model.Application.ToApiModel() }); }
public async Task TestPublishApplicationEventAndReceiveMultipleAsync(int total) { var bus = _factory.Resolve <IEventBus>(); var client = _factory.Resolve <IRegistryServiceEvents>(); var expected = new ApplicationEventModel { Application = new ApplicationInfoModel { SiteId = "TestSigfsdfg ff", ApplicationType = IIoT.OpcUa.Core.Models.ApplicationType.Client, NotSeenSince = DateTime.UtcNow, Capabilities = new HashSet <string> { "ag", "sadf", "" }, } }; var result = new TaskCompletionSource <bool>(); var counter = 0; await using (await client.SubscribeApplicationEventsAsync(ev => { counter++; if (counter == total) { result.SetResult(true); } return(Task.CompletedTask); })) { for (var i = 0; i < total; i++) { await bus.PublishAsync(expected); } await Task.WhenAny(result.Task, Task.Delay(1000)); Assert.True(result.Task.IsCompleted); } }
public async Task TestPublishApplicationEventAndReceiveAsync() { var bus = _factory.Resolve <IEventBus>(); var client = _factory.Resolve <IRegistryServiceEvents>(); var expected = new ApplicationEventModel { Application = new ApplicationInfoModel { SiteId = "TestSigfsdfg ff", ApplicationType = IIoT.OpcUa.Core.Models.ApplicationType.Client, NotSeenSince = DateTime.UtcNow, Capabilities = new HashSet <string> { "ag", "sadf", "" }, } }; var result = new TaskCompletionSource <ApplicationEventApiModel>(); await using (await client.SubscribeApplicationEventsAsync(ev => { result.SetResult(ev); return(Task.CompletedTask); })) { await bus.PublishAsync(expected); await Task.WhenAny(result.Task, Task.Delay(1000)); Assert.True(result.Task.IsCompleted); var received = result.Task.Result; Assert.NotNull(received?.Application); Assert.Equal(expected.Application.NotSeenSince, received.Application.NotSeenSince); Assert.Equal(expected.Application.SiteId, received.Application.SiteId); Assert.True(expected.Application.Capabilities .SequenceEqualsSafe(received.Application.Capabilities)); Assert.Equal(expected.Application.ApplicationType, (IIoT.OpcUa.Core.Models.ApplicationType)received.Application.ApplicationType); } }