コード例 #1
0
        /// <summary>
        /// <inheritdoc/>
        /// </summary>
        public override async Task AddToGroupAsync(string connectionId, string groupName, CancellationToken cancellationToken = default)
        {
            if (connectionId == null)
            {
                throw new ArgumentNullException(nameof(connectionId));
            }

            if (groupName == null)
            {
                throw new ArgumentNullException(nameof(groupName));
            }

            var connection = Connections[connectionId];

            if (connection != null)
            {
                AddToGroupLocal(connection, groupName);
                return;
            }

            try
            {
                _logger.LogInformation("Publishing AddToGroup<THub> {GroupName} message to Rebus for {ConnectionId}.", groupName, connectionId);

                var command = new AddToGroup <THub>(serverName: ServerName, groupName: groupName, connectionId: connectionId);
                var ack     = await _bus.PublishRequest <Ack <THub> >(command, externalCancellationToken : cancellationToken).ConfigureAwait(false);

                _logger.LogInformation("Received response to AddToGroup<THub> {GroupName} message for {ConnectionId} from {ServerName}.", groupName, connectionId, ack.ServerName);
            }
            catch (TaskCanceledException e)
            {
                _logger.LogWarning(e, "AddToGroup<THub> {GroupName} for {ConnectionId} ack timed out.", groupName, connectionId);
            }
        }
コード例 #2
0
        public async Task AddToGroupHandlerHandle_WhenConnectionExists_AddsConnectionToGroupStoreAndRepliesToBus()
        {
            using var client = new TestClient();
            var connection = HubConnectionContextUtils.Create(connection: client.Connection);

            var fakeBus = new FakeBus();

            var hubLifetimeManager = ArrangeRebusLifetimeManager(fakeBus);

            await hubLifetimeManager.OnConnectedAsync(connection).OrTimeout();

            var addToGroupCommand = new AddToGroup <TestHub>("localhost", "group", connection.ConnectionId);

            var addToGroupHandler = new AddToGroupHandler <TestHub>(hubLifetimeManager, fakeBus);

            await addToGroupHandler.Handle(addToGroupCommand);

            Assert.True(hubLifetimeManager.GroupConnections.TryGetValue(addToGroupCommand.GroupName, out var groupStore));
            Assert.True(groupStore.GetEnumerator().ToEnumerable().Contains(connection));

            var ackReply = fakeBus.Events.OfType <ReplyMessageSent>().Select(m => m.ReplyMessage).OfType <Ack <TestHub> >().FirstOrDefault();

            Assert.NotNull(ackReply);
            Assert.AreEqual(hubLifetimeManager.ServerName, ackReply.ServerName);
        }
コード例 #3
0
        /// <summary>
        /// <inheritdoc/>
        /// </summary>
        public Task Handle(AddToGroup <THub> message)
        {
            var connection = _hubLifetimeManager.Connections[message.ConnectionId];

            // Connection doesn't exist on this server
            if (connection == null)
            {
                return(Task.CompletedTask);
            }

            _hubLifetimeManager.AddToGroupLocal(connection, message.GroupName);

            return(_bus.Reply(new Ack <THub>(serverName: _hubLifetimeManager.ServerName)));
        }
コード例 #4
0
        public async Task AddToGroupHandlerHandle_WhenConnectionDoesntExist_LeavesGroupStoreUntouched()
        {
            using var client = new TestClient();
            var connection = HubConnectionContextUtils.Create(connection: client.Connection);

            var fakeBus = new FakeBus();

            var hubLifetimeManager = ArrangeRebusLifetimeManager(fakeBus);

            var addToGroupCommand = new AddToGroup <TestHub>("localhost", "group", connection.ConnectionId);

            var addToGroupHandler = new AddToGroupHandler <TestHub>(hubLifetimeManager, fakeBus);

            await addToGroupHandler.Handle(addToGroupCommand);

            Assert.False(hubLifetimeManager.GroupConnections.TryGetValue(addToGroupCommand.GroupName, out _));
        }
コード例 #5
0
ファイル: DirectoryBaseNode.cs プロジェクト: wfu8/lightwave
        public void AddUserToGroup()
        {
            var frm = new AddToGroup(ServerDTO);

            if (frm.ShowDialog() == DialogResult.OK)
            {
                MiscUtilsService.CheckedExec(delegate()
                {
                    string[] values   = new string[2];
                    values[1]         = null;
                    values[0]         = Dn;
                    LdapMod[] ldapVal = new LdapMod[1];
                    ldapVal[0]        = new LdapMod((int)LdapMod.mod_ops.LDAP_MOD_ADD, VMDirConstants.ATTR_MEMBER, values);
                    ServerDTO.Connection.ModifyObject(frm.DNText, ldapVal);
                    MMCDlgHelper.ShowInformation(VMDirConstants.STAT_MEMBER_ADD_SUCC);
                    RefreshProperties();
                });
            }
        }
コード例 #6
0
ファイル: _AnyHub.cs プロジェクト: congzw/common-utils
 //加入组成员
 public Task AddToGroup(AddToGroup args)
 {
     this.FixScopeIdForContext().FixScopeIdForArgs(args);
     return(_hubEventBus.Raise(new AddToGroupEvent(this, args)));
 }