public async Task <Response> CreateResponseAsync() { var users = new ConcurrentBag <UserVm>(); var getUsersTasks = new List <Task> { Task.Run(async() => { users.AddRange(privacyService.ApplyPrivacySettings(await loadUsersService.FindUsersByPhonesAsync(request.Phones).ConfigureAwait(false), request.Phones, clientConnection.UserId)); }) }; var nodeConnections = connectionsService.GetNodeConnections(); foreach (var connection in nodeConnections) { getUsersTasks.Add(Task.Run(async() => { if (connection.IsEncryptedConnection && connection.NodeWebSocket.State == WebSocketState.Open) { users.AddRange(await nodeRequestSender.BatchPhonesSearchAsync(connection, request.Phones, clientConnection.UserId).ConfigureAwait(false)); } })); } await Task.WhenAll(getUsersTasks).ConfigureAwait(false); return(new UsersResponse(request.RequestId, users)); }
public async Task HandleAsync() { var users = await loadUsersService.FindUsersByPhonesAsync(request.Phones).ConfigureAwait(false); NodeWebSocketCommunicationManager.SendResponse( new UsersNodeResponse(request.RequestId, privacyService.ApplyPrivacySettings(users, request.Phones, request.RequestorId)), current); }