コード例 #1
0
        /// <summary>Вызов процедуры удаления группы разъёмов</summary>
        /// <param name="request">Запрос</param>
        /// <param name="context">Контекст</param>
        /// <returns>Завершённая задача после того, как были написаны заголовки ответов</returns>
        public override Task <Empty> DeleteSocketGroup(SocketGroupIdentity request, ServerCallContext context)
        {
            DebugWrite($"RpcCall 'DeleteSocketGroup': '{request}' from {context.Peer}");

            _groupService.DeleteSocketGroup(request.GroupName);
            return(Task.FromResult(new Empty()));
        }
コード例 #2
0
        public override async Task <Empty> DeleteSocketGroup(SocketGroupIdentity request, ServerCallContext context)
        {
            DebugWrite($"RpcCall 'DeleteSocketGroup': '{request}' from {context.Peer}");

            if (!_socketGroupCache.EntityExists(request.GroupName))
            {
                throw new RpcException(new Status(StatusCode.NotFound, $"SocketGroup {request.GroupName} not found"));
            }
            await _client.DeleteSocketGroupAsync(new SocketGroupIdentity { GroupName = request.GroupName });

            _socketGroupCache.Remove(request.GroupName);
            return(new Empty());
        }
コード例 #3
0
        public override async Task GetSocketsInGroup(SocketGroupIdentity request,
                                                     IServerStreamWriter <CustomSocket> responseStream, ServerCallContext context)
        {
            DebugWrite($"RpcCall 'GetSocketsInGroup': '{request}' from {context.Peer}");

            if (!_socketGroupCache.EntityExists(request.GroupName))
            {
                throw new RpcException(new Status(StatusCode.NotFound, $"SocketGroup {request.GroupName} not found"));
            }
            var socketGroup = _socketGroupCache.Get(request.GroupName);

            foreach (var socketName in socketGroup.SocketNames)
            {
                await responseStream.WriteAsync(_socketCache.Get(socketName));
            }
        }
コード例 #4
0
        private async Task RemoveGroup(string groupName)
        {
            var groupIdentity = new SocketGroupIdentity {
                GroupName = groupName
            };

            try
            {
                await Client.DeleteSocketGroupAsync(groupIdentity);

                Console.WriteLine($"Группа: {groupName} была успешно удалена.");
            }
            catch (Exception e)
            {
                WritePaddedTop(e.Message);
            }
        }
コード例 #5
0
        /// <summary>Вызов процедуры создания группы разъёмов</summary>
        /// <param name="request">Запрос</param>
        /// <param name="context">Контекст</param>
        /// <returns>Завершённая задача после того, как были написаны заголовки ответов</returns>
        public override Task <SocketGroup> AddSocketGroup(SocketGroupIdentity request, ServerCallContext context)
        {
            DebugWrite($"RpcCall 'AddSocketGroup': '{request}' from {context.Peer}");

            var group = _groupService.GetSocketGroup(request.GroupName);

            if (group != null)
            {
                throw new RpcException(
                          new Status(StatusCode.AlreadyExists, $"SocketGroup {request.GroupName} already exists")
                          );
            }
            return(Task.FromResult(_groupService.CreateSocketGroup(
                                       new SocketGroup {
                GroupName = request.GroupName
            })));
        }
コード例 #6
0
        public override async Task <SocketGroup> AddSocketGroup(SocketGroupIdentity request, ServerCallContext context)
        {
            DebugWrite($"RpcCall 'AddSocketGroup': '{request}' from {context.Peer}");

            if (_socketGroupCache.EntityExists(request.GroupName))
            {
                throw new RpcException(
                          new Status(StatusCode.AlreadyExists, $"SocketGroup {request.GroupName} already exists")
                          );
            }

            var socketGroup =
                await _client.AddSocketGroupAsync(new SocketGroupIdentity { GroupName = request.GroupName });

            _socketGroupCache.Add(socketGroup);

            return(socketGroup);
        }
コード例 #7
0
        private async Task GetSocketsByGroupName(string groupName)
        {
            var groupIdentity = new SocketGroupIdentity {
                GroupName = groupName
            };

            try
            {
                var socketsInGroup = await Client.GetSocketsInGroup(groupIdentity).ResponseStream.ToListAsync();

                WritePaddedTop($"Разъемы принадлежащие группе {groupName}");
                var socketsNamesResultString = string.Empty;
                foreach (var socket in socketsInGroup)
                {
                    socketsNamesResultString += $"{socket.SocketName}; ";
                }
                Console.WriteLine(socketsNamesResultString);
            }
            catch (Exception e)
            {
                WritePaddedTop(e.Message);
            }
        }