Example #1
0
        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));
        }
Example #2
0
        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);
        }