python ircd using asyncio
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

22 lines
711 B

  1. from dataclasses import dataclass, field
  2. from typing import Dict
  3. from paircd.client import Client
  4. from paircd.channel import Channel
  5. @dataclass
  6. class Server:
  7. clients_by_nick: Dict[str, Client] = field(default_factory=dict)
  8. channels_by_name: Dict[str, Channel] = field(default_factory=dict)
  9. def add_client(self, client: Client) -> None:
  10. self.clients_by_nick[client.nickname] = client
  11. def get_channel_by_name(self, name: str) -> Channel:
  12. if name not in self.channels_by_name:
  13. self.channels_by_name[name] = Channel(name=name)
  14. return self.channels_by_name[name]
  15. def remove_client_by_name(self, name: str) -> None:
  16. del self.clients_by_nick[name]