/// <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); } }
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); }
/// <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))); }
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 _)); }
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(); }); } }
//加入组成员 public Task AddToGroup(AddToGroup args) { this.FixScopeIdForContext().FixScopeIdForArgs(args); return(_hubEventBus.Raise(new AddToGroupEvent(this, args))); }