make clientid a stronger type
This commit is contained in:
		
							parent
							
								
									e9a24e515d
								
							
						
					
					
						commit
						709d0bae81
					
				| @ -61,7 +61,7 @@ pub struct ClientPool<S, R>{ | ||||
|     client_ids: HashMap<Token, ClientId>, | ||||
|     clients: HashMap<ClientId, Client<S, R>>, | ||||
|     listener: TcpListener, | ||||
|     client_id_incr: ClientId, | ||||
|     client_id_incr: usize, | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @ -90,13 +90,13 @@ impl<S, R> ClientPool<S, R> where | ||||
|     fn new_client(&mut self) { | ||||
|         let (socket, _addr) = self.listener.accept().unwrap(); | ||||
| 
 | ||||
|         let client_id = self.client_id_incr; | ||||
|         let client_id = ClientId(self.client_id_incr); | ||||
|         self.client_id_incr += 1; | ||||
| 
 | ||||
|         self.poll.register(&socket, Token(client_id), Ready::readable() | Ready::writable(), PollOpt::edge()).unwrap(); | ||||
|         self.poll.register(&socket, Token(client_id.0), Ready::readable() | Ready::writable(), PollOpt::edge()).unwrap(); | ||||
|         let client = Client::new(client_id, socket); | ||||
| 
 | ||||
|         self.client_ids.insert(Token(client_id), client_id); | ||||
|         self.client_ids.insert(Token(client_id.0), client_id); | ||||
|         self.clients.insert(client_id, client); | ||||
|         self.sender.send(ClientPoolAction::NewClient(client_id)).unwrap(); | ||||
|     } | ||||
|  | ||||
| @ -1,7 +1,8 @@ | ||||
| use libpso::PacketParseError; | ||||
| use libpso::crypto::PSOCipher; | ||||
| 
 | ||||
| pub type ClientId = usize; | ||||
| #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] | ||||
| pub struct ClientId(pub usize); | ||||
| 
 | ||||
| pub enum OnConnect<S: SendServerPacket> { | ||||
|     Packet(S), | ||||
|  | ||||
| @ -339,10 +339,10 @@ mod test { | ||||
|             created_at: SystemTime::now(), | ||||
|         }); | ||||
| 
 | ||||
|         let send = server.handle(5, &RecvCharacterPacket::RequestSettings(RequestSettings {flag: 0})).collect::<Vec<_>>(); | ||||
|         let send = server.handle(ClientId(5), &RecvCharacterPacket::RequestSettings(RequestSettings {flag: 0})).collect::<Vec<_>>(); | ||||
|         assert!(send.len() == 1); | ||||
| 
 | ||||
|         assert!(send[0].0 == 5); | ||||
|         assert!(send[0].0 == ClientId(5)); | ||||
|         let bytes = send[0].1.as_bytes(); | ||||
|         assert!(bytes[2] == 0xE2); | ||||
|         assert!(bytes.len() == 0xAFC); | ||||
| @ -353,9 +353,9 @@ mod test { | ||||
|         struct TestData; | ||||
|         impl DataAccess for TestData {} | ||||
|         let mut server = CharacterServerState::new(TestData {}); | ||||
|         let send = server.handle(1, &RecvCharacterPacket::Checksum(Checksum {flag: 0, | ||||
|                                                                              checksum: 1234, | ||||
|                                                                              padding: 0, | ||||
|         let send = server.handle(ClientId(1), &RecvCharacterPacket::Checksum(Checksum {flag: 0, | ||||
|                                                                                        checksum: 1234, | ||||
|                                                                                        padding: 0, | ||||
|         })).collect::<Vec<_>>(); | ||||
|         assert!(send.len() == 1); | ||||
| 
 | ||||
|  | ||||
| @ -174,7 +174,7 @@ mod test { | ||||
| 
 | ||||
|         let mut server = LoginServerState::new(TestData {}); | ||||
| 
 | ||||
|         let send = server.handle(1, &RecvLoginPacket::Login(Login { | ||||
|         let send = server.handle(ClientId(1), &RecvLoginPacket::Login(Login { | ||||
|             flag: 0, | ||||
|             tag: 65536, | ||||
|             guildcard: 0, | ||||
| @ -194,7 +194,7 @@ mod test { | ||||
| 
 | ||||
|         })).collect::<Vec<_>>(); | ||||
|         assert!(send == vec![ | ||||
|             (1, SendLoginPacket::LoginResponse(LoginResponse { | ||||
|             (ClientId(1), SendLoginPacket::LoginResponse(LoginResponse { | ||||
|                 flag: 0, | ||||
|                 status: AccountStatus::Ok, | ||||
|                 tag: 65536, | ||||
| @ -204,7 +204,7 @@ mod test { | ||||
|                                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||
|                 caps: 258 | ||||
|             })), | ||||
|             (1, SendLoginPacket::RedirectClient(RedirectClient { | ||||
|             (ClientId(1), SendLoginPacket::RedirectClient(RedirectClient { | ||||
|                 flag: 0, | ||||
|                 ip: 16777343, | ||||
|                 port: 12001, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user