public override async Task <SocketGroup> RemoveFromSocketGroup(CustomSocketIdentityJoinGroup request,
                                                                       ServerCallContext context)
        {
            DebugWrite($"RpcCall 'RemoveFromSocketGroup': '{request}' from {context.Peer}");

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

            if (!socketGroup.SocketNames.Contains(socketName))
            {
                throw new RpcException(
                          new Status(StatusCode.NotFound, $"Socket {socketName} not in group {socketGroup.GroupName}")
                          );
            }
            await _client.RemoveSocketFromGroupAsync(new CustomSocketIdentityJoinGroup
            {
                Group = new SocketGroupIdentity {
                    GroupName = socketGroup.GroupName
                },
                Socket = new CustomSocketIdentity {
                    SocketName = socketName
                }
            });

            socketGroup.SocketNames.Remove(socketName);
            _socketGroupCache.Update(socketGroup.GroupName, socketGroup);

            return(socketGroup);
        }
        /// <summary>Удаление разъёма из группы разъёмов</summary>
        /// <param name="request">Запрос</param>
        /// <param name="context">Контекст</param>
        /// <returns>Завершённая задача после того, как были написаны заголовки ответов</returns>
        public override Task <SocketGroup> RemoveSocketFromGroup(CustomSocketIdentityJoinGroup request,
                                                                 ServerCallContext context)
        {
            DebugWrite($"RpcCall 'RemoveSocketFromGroup': '{request}' from {context.Peer}");

            var groupName  = request.Group.GroupName;
            var socketName = request.Socket.SocketName;
            // Проверка существования такого разъёма и такой группы
            var socket      = _socketService.GetSocket(socketName);
            var socketGroup = _groupService.GetSocketGroup(groupName);

            if (socket == null || socketGroup == null || socket.Item2 == null)
            {
                throw new RpcException(new Status(StatusCode.NotFound,
                                                  $"SocketGroup {request.Group.GroupName} or Socket {request.Socket.SocketName} not found"));
            }
            return(Task.FromResult(_groupService.RemoveSocketFromGroup(groupName, socket.Item2.SocketName)));
        }
        public override Task <CustomSocket> CheckSocketInGroup(CustomSocketIdentityJoinGroup request,
                                                               ServerCallContext context)
        {
            DebugWrite($"RpcCall 'CheckSocketInGroup': '{request}' from {context.Peer}");

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

            if (!socketGroup.SocketNames.Contains(request.Socket.SocketName))
            {
                throw new RpcException(new Status(StatusCode.NotFound,
                                                  $"Socket {request.Socket.SocketName} in SocketGroup {request.Group.GroupName} not found")
                                       );
            }

            return(Task.FromResult(_socketCache.Get(request.Socket.SocketName)));
        }
Ejemplo n.º 4
0
        private async Task RemoveSocketFromGroup(string socketName, string groupName)
        {
            var socketJoinGroup = new CustomSocketIdentityJoinGroup
            {
                Socket = new CustomSocketIdentity {
                    SocketName = socketName
                },
                Group = new SocketGroupIdentity {
                    GroupName = groupName
                }
            };

            try
            {
                await Client.RemoveFromSocketGroupAsync(socketJoinGroup);

                Console.WriteLine($"Разъем: {socketName} был успешно удалён из группы {groupName}.");
            }
            catch (Exception e)
            {
                WritePaddedTop(e.Message);
            }
        }
Ejemplo n.º 5
0
        private async Task AddSocketToGroup(string socketName, string groupName)
        {
            var socketJoinGroup = new CustomSocketIdentityJoinGroup
            {
                Socket = new CustomSocketIdentity {
                    SocketName = socketName
                },
                Group = new SocketGroupIdentity {
                    GroupName = groupName
                }
            };

            try
            {
                await Client.AddToSocketGroupAsync(socketJoinGroup);

                Console.WriteLine($"Разъем: {socketName} был успешно добавлен в группу {groupName}.");
            }
            catch (Exception e)
            {
                WritePaddedTop(e.Message);
            }
        }