private static async Task PeerConnection_OnReceiveAsync(object sender, PeerConnectionMessageReceivedEventArgs e) { try { using (var serObj = SerializedObject.FromReadOnlySequence(e.Data)) { if (serObj is null) { return; } if (!(serObj.GetValue() is RegisteredService rService)) { return; } try { var received = new ReceivedService { ServiceId = rService.ServiceId, InstanceId = rService.InstanceId, Category = rService.Category, Name = rService.Name, Description = rService.Description, MachineName = rService.MachineName, ApplicationName = rService.ApplicationName, FrameworkVersion = rService.FrameworkVersion, EnvironmentName = rService.EnvironmentName, Data = rService.Data, Addresses = new[] { e.Address } }; bool exist; using (await ReceivedServicesLock.LockAsync().ConfigureAwait(false)) { exist = ReceivedServices.TryRemove(received.ServiceId, out var oldReceived); if (exist) { received.Addresses = received.Addresses.Concat(oldReceived.Addresses).Distinct().ToArray(); } ReceivedServices.TryAdd(received.ServiceId, received, ServiceTimeout); } var eArgs = new EventArgs <ReceivedService>(received); if (!exist) { OnNewServiceReceived?.Invoke(sender, eArgs); } OnServiceReceived?.Invoke(sender, eArgs); } catch (Exception) { // } } } catch (Exception) { // } }
public ReceivedController(UserManager <IdentityUser> userManager, CustomerService customerService, ReceivedService receivedService, RazorPagesReportingEngine reportingEngine, ILogger <ReceivedController> logger) { this.logger = logger; this.reportingEngine = reportingEngine; this.receivedService = receivedService; this.userManager = userManager; this.customerService = customerService; //this.transactionService = transactionService; }