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(); } } }
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); }