public bool IsRegistered(IAdminPortClientUser owner, Server server)
 {
     if (RegisterInfo.TryGetValue(server.GetUniqueKey(), out AdminClientRegisterInfo info))
     {
         return(info.IsRegistered(owner));
     }
     return(false);
 }
 public IAdminPortClient GetClient(IAdminPortClientUser owner, Server server)
 {
     if (RegisterInfo.TryGetValue(server.GetUniqueKey(), out AdminClientRegisterInfo info))
     {
         if (info.IsRegistered(owner))
         {
             return(info.Client);
         }
     }
     throw new OttdException("Client is not registered - therefore it cannot retrieve AdminPortClient");
 }
 public async Task Unregister(IAdminPortClientUser owner, Server server)
 {
     if (RegisterInfo.TryGetValue(server.GetUniqueKey(), out AdminClientRegisterInfo info))
     {
         info.RemoveUser(owner);
         if (info.HasAnyUsers() == false && info.Client.ConnectionState != AdminConnectionState.Idle)
         {
             info.Client.EventReceived -= this.Client_EventReceived;
             await info.Client.Disconnect();
         }
     }
 }
Пример #4
0
        public async Task IfSomeoneUnregister_ItShouldNotAffectOtherOwners()
        {
            IAdminPortClientUser otherOwner = Mock.Of <IAdminPortClientUser>();
            Server server = new ServerFixture().WithPassword("123").Build();

            await provider.Register(DefaultUser, server);

            await provider.Register(otherOwner, server);

            await provider.Unregister(DefaultUser, server);

            var client = provider.GetClient(otherOwner, server);

            Assert.NotNull(client);
        }
        public async Task Register(IAdminPortClientUser owner, Server server)
        {
            AdminClientRegisterInfo info = RegisterInfo.GetOrAdd(server.GetUniqueKey(), (_) =>
            {
                IAdminPortClient client = this.adminPortClientFactory.Create(
                    new ServerInfo(server.ServerIp, server.ServerPort, server.ServerPassword)
                    );

                client.EventReceived += Client_EventReceived;

                return(new AdminClientRegisterInfo(server, client));
            });

            if (info.Client.ConnectionState == AdminConnectionState.Idle)
            {
                await info.Client.Join();
            }

            info.AddUser(owner);
        }
 public bool IsRegistered(IAdminPortClientUser user) => RegisteredUsers.ContainsKey(user);
 public void RemoveUser(IAdminPortClientUser user)
 {
     RegisteredUsers.TryRemove(user, out _);
 }
 public void AddUser(IAdminPortClientUser user)
 {
     RegisteredUsers.TryAdd(user, true);
 }