diff --git a/documentation/comprl.html b/documentation/comprl.html new file mode 100644 index 0000000..42fc001 --- /dev/null +++ b/documentation/comprl.html @@ -0,0 +1,234 @@ + + +
+ + + +This module initializes the client package for the competition server.
+This module contains the Agent class, used by the end-user connecting to the server.
+1""" + 2This module contains the Agent class, used by the end-user connecting to the server. + 3""" + 4 + 5from typing import final + 6 + 7 + 8from comprl.client.interfaces import IAgent + 9from comprl.client import networking +10 +11 +12class Agent(IAgent): +13 """Agent used by the end-user connecting to the server. +14 +15 This class represents an agent that interacts with the server. It provides methods +16 for registering event handlers and connecting to the server. +17 """ +18 +19 def __init__(self) -> None: +20 super().__init__() +21 +22 @final +23 def event(self, func): +24 """Decorator to register a function as an event handler. +25 +26 Args: +27 func (function): The function to be registered as an event handler. +28 +29 Returns: +30 function: The registered event handler function. +31 +32 """ +33 setattr(self, func.__name__, func) +34 return func +35 +36 @final +37 def run(self, token: str, host: str = "localhost", port: int = 65335) -> None: +38 """Connects the client to the server. +39 +40 This method connects the client to the server using the specified token, host, +41 and port. It internally calls the `run` method of the base class to establish +42 the connection. +43 +44 Args: +45 token (str): The token used for authentication. +46 host (str): The host address of the server. Defaults to "localhost". +47 port (int): The port number of the server. Defaults to 65335. +48 +49 Returns: +50 None +51 +52 """ +53 super().run(token) +54 networking.connect_agent(self, host, port) +55 +56 def on_error(self, msg: str): +57 """Called if an error occurred on the server side.""" +58 print(f"Error: {msg}") +59 +60 def on_message(self, msg: str): +61 """Called if a message is sent from the server.""" +62 print(f"Info: {msg}") +63 +64 def on_disconnect(self): +65 """Called when the agent disconnects from the server.""" +66 print("Error: Agent disconnected from the server.") +
13class Agent(IAgent): +14 """Agent used by the end-user connecting to the server. +15 +16 This class represents an agent that interacts with the server. It provides methods +17 for registering event handlers and connecting to the server. +18 """ +19 +20 def __init__(self) -> None: +21 super().__init__() +22 +23 @final +24 def event(self, func): +25 """Decorator to register a function as an event handler. +26 +27 Args: +28 func (function): The function to be registered as an event handler. +29 +30 Returns: +31 function: The registered event handler function. +32 +33 """ +34 setattr(self, func.__name__, func) +35 return func +36 +37 @final +38 def run(self, token: str, host: str = "localhost", port: int = 65335) -> None: +39 """Connects the client to the server. +40 +41 This method connects the client to the server using the specified token, host, +42 and port. It internally calls the `run` method of the base class to establish +43 the connection. +44 +45 Args: +46 token (str): The token used for authentication. +47 host (str): The host address of the server. Defaults to "localhost". +48 port (int): The port number of the server. Defaults to 65335. +49 +50 Returns: +51 None +52 +53 """ +54 super().run(token) +55 networking.connect_agent(self, host, port) +56 +57 def on_error(self, msg: str): +58 """Called if an error occurred on the server side.""" +59 print(f"Error: {msg}") +60 +61 def on_message(self, msg: str): +62 """Called if a message is sent from the server.""" +63 print(f"Info: {msg}") +64 +65 def on_disconnect(self): +66 """Called when the agent disconnects from the server.""" +67 print("Error: Agent disconnected from the server.") +
Agent used by the end-user connecting to the server.
+ +This class represents an agent that interacts with the server. It provides methods +for registering event handlers and connecting to the server.
+23 @final +24 def event(self, func): +25 """Decorator to register a function as an event handler. +26 +27 Args: +28 func (function): The function to be registered as an event handler. +29 +30 Returns: +31 function: The registered event handler function. +32 +33 """ +34 setattr(self, func.__name__, func) +35 return func +
Decorator to register a function as an event handler.
+ +Args: + func (function): The function to be registered as an event handler.
+ +Returns: + function: The registered event handler function.
+37 @final +38 def run(self, token: str, host: str = "localhost", port: int = 65335) -> None: +39 """Connects the client to the server. +40 +41 This method connects the client to the server using the specified token, host, +42 and port. It internally calls the `run` method of the base class to establish +43 the connection. +44 +45 Args: +46 token (str): The token used for authentication. +47 host (str): The host address of the server. Defaults to "localhost". +48 port (int): The port number of the server. Defaults to 65335. +49 +50 Returns: +51 None +52 +53 """ +54 super().run(token) +55 networking.connect_agent(self, host, port) +
Connects the client to the server.
+ +This method connects the client to the server using the specified token, host,
+and port. It internally calls the run
method of the base class to establish
+the connection.
Args: + token (str): The token used for authentication. + host (str): The host address of the server. Defaults to "localhost". + port (int): The port number of the server. Defaults to 65335.
+ +Returns: + None
+57 def on_error(self, msg: str): +58 """Called if an error occurred on the server side.""" +59 print(f"Error: {msg}") +
Called if an error occurred on the server side.
+61 def on_message(self, msg: str): +62 """Called if a message is sent from the server.""" +63 print(f"Info: {msg}") +
Called if a message is sent from the server.
+65 def on_disconnect(self): +66 """Called when the agent disconnects from the server.""" +67 print("Error: Agent disconnected from the server.") +
Called when the agent disconnects from the server.
+This module contains the interface for the agent.
+1""" + 2This module contains the interface for the agent. + 3""" + 4 + 5 + 6class IAgent: + 7 """agent interface which could be used by the end-user""" + 8 + 9 def run(self, token: str): +10 """ +11 Runs the agent with the specified token. +12 +13 Args: +14 token (str): The token used for authentication. +15 """ +16 self.token = token +17 +18 def auth(self) -> str: +19 """ +20 Returns the authentication token. +21 +22 Returns: +23 str: The authentication token. +24 """ +25 return self.token +26 +27 def is_ready(self) -> bool: +28 """ +29 Returns if the agent is ready to play. +30 +31 Returns: +32 bool: True if the agent is ready to play, False otherwise. +33 """ +34 return True +35 +36 def on_start_game(self, game_id: int) -> None: +37 """ +38 Called when a new game starts. +39 +40 Args: +41 game_id (int): The ID of the new game. +42 +43 Returns: +44 bool: True if the agent is ready to play, False otherwise. +45 """ +46 pass +47 +48 def get_step(self, obv: list[float]) -> list[float]: +49 """ +50 Requests the agent's action based on the current observation. +51 +52 Args: +53 obv (list[float]): The current observation. +54 +55 Returns: +56 list[float]: The agent's action. +57 """ +58 raise NotImplementedError("step function not implemented") +59 +60 def on_end_game(self, result: bool, stats: list[float]) -> None: +61 """ +62 Called when a game ends. +63 +64 Args: +65 result: The result of the game. +66 stats: The statistics of the game. +67 +68 Returns: +69 bool: True if the agent handled the end of the game, False otherwise. +70 """ +71 pass +72 +73 def on_error(self, msg: str): +74 """ +75 Called when an error occurs. +76 +77 Args: +78 msg (str): The error message. +79 """ +80 pass +81 +82 def on_message(self, msg: str): +83 """Called when a message is sent from the server. +84 +85 Args: +86 msg (str): The message +87 """ +88 pass +89 +90 def on_disconnect(self): +91 """Called when the agent disconnects from the server.""" +92 pass +
7class IAgent: + 8 """agent interface which could be used by the end-user""" + 9 +10 def run(self, token: str): +11 """ +12 Runs the agent with the specified token. +13 +14 Args: +15 token (str): The token used for authentication. +16 """ +17 self.token = token +18 +19 def auth(self) -> str: +20 """ +21 Returns the authentication token. +22 +23 Returns: +24 str: The authentication token. +25 """ +26 return self.token +27 +28 def is_ready(self) -> bool: +29 """ +30 Returns if the agent is ready to play. +31 +32 Returns: +33 bool: True if the agent is ready to play, False otherwise. +34 """ +35 return True +36 +37 def on_start_game(self, game_id: int) -> None: +38 """ +39 Called when a new game starts. +40 +41 Args: +42 game_id (int): The ID of the new game. +43 +44 Returns: +45 bool: True if the agent is ready to play, False otherwise. +46 """ +47 pass +48 +49 def get_step(self, obv: list[float]) -> list[float]: +50 """ +51 Requests the agent's action based on the current observation. +52 +53 Args: +54 obv (list[float]): The current observation. +55 +56 Returns: +57 list[float]: The agent's action. +58 """ +59 raise NotImplementedError("step function not implemented") +60 +61 def on_end_game(self, result: bool, stats: list[float]) -> None: +62 """ +63 Called when a game ends. +64 +65 Args: +66 result: The result of the game. +67 stats: The statistics of the game. +68 +69 Returns: +70 bool: True if the agent handled the end of the game, False otherwise. +71 """ +72 pass +73 +74 def on_error(self, msg: str): +75 """ +76 Called when an error occurs. +77 +78 Args: +79 msg (str): The error message. +80 """ +81 pass +82 +83 def on_message(self, msg: str): +84 """Called when a message is sent from the server. +85 +86 Args: +87 msg (str): The message +88 """ +89 pass +90 +91 def on_disconnect(self): +92 """Called when the agent disconnects from the server.""" +93 pass +
agent interface which could be used by the end-user
+10 def run(self, token: str): +11 """ +12 Runs the agent with the specified token. +13 +14 Args: +15 token (str): The token used for authentication. +16 """ +17 self.token = token +
Runs the agent with the specified token.
+ +Args: + token (str): The token used for authentication.
+19 def auth(self) -> str: +20 """ +21 Returns the authentication token. +22 +23 Returns: +24 str: The authentication token. +25 """ +26 return self.token +
Returns the authentication token.
+ +Returns: + str: The authentication token.
+28 def is_ready(self) -> bool: +29 """ +30 Returns if the agent is ready to play. +31 +32 Returns: +33 bool: True if the agent is ready to play, False otherwise. +34 """ +35 return True +
Returns if the agent is ready to play.
+ +Returns: + bool: True if the agent is ready to play, False otherwise.
+37 def on_start_game(self, game_id: int) -> None: +38 """ +39 Called when a new game starts. +40 +41 Args: +42 game_id (int): The ID of the new game. +43 +44 Returns: +45 bool: True if the agent is ready to play, False otherwise. +46 """ +47 pass +
Called when a new game starts.
+ +Args: + game_id (int): The ID of the new game.
+ +Returns: + bool: True if the agent is ready to play, False otherwise.
+49 def get_step(self, obv: list[float]) -> list[float]: +50 """ +51 Requests the agent's action based on the current observation. +52 +53 Args: +54 obv (list[float]): The current observation. +55 +56 Returns: +57 list[float]: The agent's action. +58 """ +59 raise NotImplementedError("step function not implemented") +
Requests the agent's action based on the current observation.
+ +Args: + obv (list[float]): The current observation.
+ +Returns: + list[float]: The agent's action.
+61 def on_end_game(self, result: bool, stats: list[float]) -> None: +62 """ +63 Called when a game ends. +64 +65 Args: +66 result: The result of the game. +67 stats: The statistics of the game. +68 +69 Returns: +70 bool: True if the agent handled the end of the game, False otherwise. +71 """ +72 pass +
Called when a game ends.
+ +Args: + result: The result of the game. + stats: The statistics of the game.
+ +Returns: + bool: True if the agent handled the end of the game, False otherwise.
+74 def on_error(self, msg: str): +75 """ +76 Called when an error occurs. +77 +78 Args: +79 msg (str): The error message. +80 """ +81 pass +
Called when an error occurs.
+ +Args: + msg (str): The error message.
+Contains all networking related classes and functions for the client.
+1""" + 2Contains all networking related classes and functions for the client. + 3""" + 4 + 5import logging as log + 6 + 7from twisted.protocols import amp + 8from twisted.internet import reactor + 9from twisted.internet.endpoints import TCP4ClientEndpoint, connectProtocol + 10 + 11from comprl.shared.commands import Ready, StartGame, EndGame, Step, Auth, Error, Message + 12 + 13from .interfaces import IAgent + 14 + 15VERSION = 1 + 16 + 17 + 18class ClientProtocol(amp.AMP): + 19 """Protocol for the client. + 20 + 21 Represents the protocol used by the client to communicate with the server. + 22 """ + 23 + 24 def __init__(self, agent: IAgent, boxReceiver=None, locator=None): + 25 """Initialize the COMPClientProtocol. + 26 + 27 Args: + 28 agent (COMPAgent): The agent associated with the protocol. + 29 boxReceiver (object, optional): The box receiver object. Defaults to None. + 30 locator (object, optional): The locator object. Defaults to None. + 31 """ + 32 super().__init__(boxReceiver, locator) + 33 self.agent: IAgent = agent + 34 + 35 def connectionMade(self): + 36 """Called when the connection to the server is made.""" + 37 log.debug("Connected to server") + 38 return super().connectionMade() + 39 + 40 def connectionLost(self, reason): + 41 """Called when the connection to the server is lost. + 42 + 43 Args: + 44 reason (object): The reason for the lost connection. + 45 """ + 46 log.debug(f"Disconnected from the server. Reason: {reason}") + 47 if reactor.running: + 48 reactor.stop() + 49 self.agent.on_disconnect() + 50 return super().connectionLost(reason) + 51 + 52 @Auth.responder + 53 def auth(self): + 54 """Called for authenticating the client. + 55 + 56 Returns: + 57 dict: The client's authentication token and version. + 58 Example: {"token": b'...', "version": 1} + 59 """ + 60 return {"token": str.encode(self.agent.auth()), "version": VERSION} + 61 + 62 @Ready.responder + 63 def ready(self): + 64 """Called when the server wants to know if the client is ready. + 65 + 66 Returns: + 67 dict: A dictionary indicating if the client is ready. + 68 Example: {"ready": True} + 69 """ + 70 return {"ready": self.agent.is_ready()} + 71 + 72 @StartGame.responder + 73 def start_game(self, game_id: int): + 74 """Called when the server starts the game. + 75 + 76 Args: + 77 game_id (str): The ID of the game. + 78 + 79 Returns: + 80 dict: A dictionary indicating if the client is ready to start the game. + 81 Example: {"ready": True} + 82 """ + 83 self.agent.on_start_game(game_id) + 84 return {} + 85 + 86 @EndGame.responder + 87 def end_game(self, result, stats): + 88 """Called when the server ends the game. + 89 + 90 Args: + 91 result (bool): A boolean indicating if the game was won. + 92 stats (object): Other statistics. + 93 + 94 Returns: + 95 dict: A dictionary indicating if the client is ready to start a new game. + 96 Example: {"ready": True} + 97 """ + 98 self.agent.on_end_game(result=result, stats=stats) + 99 return {} +100 +101 @Step.responder +102 def step(self, obv: list[float]): +103 """Called when the server wants the client to make a step. +104 +105 Args: +106 obv (list[float])): The environment given by the server. +107 +108 Returns: +109 dict: A dictionary containing the action that should be executed. +110 Example: {"action": 1} +111 """ +112 action = self.agent.get_step(obv) +113 if isinstance(action, list) and all(isinstance(x, float) for x in action): +114 return {"action": action} +115 else: +116 raise Exception( +117 "Tried to send an action with wrong type. " +118 "Only actions of type list[float] can be send." +119 ) +120 +121 @Error.responder +122 def on_error(self, msg): +123 """Called if an error occurred on the server side. +124 +125 Args: +126 msg (object): The error description. +127 """ +128 self.agent.on_error(msg=str(msg, encoding="utf-8")) +129 return {} +130 +131 @Message.responder +132 def on_message(self, msg): +133 """Called if a message from the server is sent. +134 +135 Args: +136 msg (object): The message. +137 """ +138 self.agent.on_message(msg=str(msg, encoding="utf-8")) +139 return {} +140 +141 +142def connect_agent(agent: IAgent, host: str = "localhost", port: int = 65335): +143 """Connects the client to the server. +144 +145 This method connects the client to the server using the specified token, host, +146 and port. It internally calls the `run` method of the base class to establish +147 the connection. +148 +149 Args: +150 token (str): The token used for authentication. +151 host (str): The host address of the server. Defaults to "localhost". +152 port (int): The port number of the server. Defaults to 65335. +153 +154 Returns: +155 None +156 +157 """ +158 connectProtocol( +159 TCP4ClientEndpoint(reactor, host, port), +160 ClientProtocol(agent), +161 # we lose the protocol here, is this a problem? +162 ) +163 reactor.run() # type: ignore[attr-defined] +
19class ClientProtocol(amp.AMP): + 20 """Protocol for the client. + 21 + 22 Represents the protocol used by the client to communicate with the server. + 23 """ + 24 + 25 def __init__(self, agent: IAgent, boxReceiver=None, locator=None): + 26 """Initialize the COMPClientProtocol. + 27 + 28 Args: + 29 agent (COMPAgent): The agent associated with the protocol. + 30 boxReceiver (object, optional): The box receiver object. Defaults to None. + 31 locator (object, optional): The locator object. Defaults to None. + 32 """ + 33 super().__init__(boxReceiver, locator) + 34 self.agent: IAgent = agent + 35 + 36 def connectionMade(self): + 37 """Called when the connection to the server is made.""" + 38 log.debug("Connected to server") + 39 return super().connectionMade() + 40 + 41 def connectionLost(self, reason): + 42 """Called when the connection to the server is lost. + 43 + 44 Args: + 45 reason (object): The reason for the lost connection. + 46 """ + 47 log.debug(f"Disconnected from the server. Reason: {reason}") + 48 if reactor.running: + 49 reactor.stop() + 50 self.agent.on_disconnect() + 51 return super().connectionLost(reason) + 52 + 53 @Auth.responder + 54 def auth(self): + 55 """Called for authenticating the client. + 56 + 57 Returns: + 58 dict: The client's authentication token and version. + 59 Example: {"token": b'...', "version": 1} + 60 """ + 61 return {"token": str.encode(self.agent.auth()), "version": VERSION} + 62 + 63 @Ready.responder + 64 def ready(self): + 65 """Called when the server wants to know if the client is ready. + 66 + 67 Returns: + 68 dict: A dictionary indicating if the client is ready. + 69 Example: {"ready": True} + 70 """ + 71 return {"ready": self.agent.is_ready()} + 72 + 73 @StartGame.responder + 74 def start_game(self, game_id: int): + 75 """Called when the server starts the game. + 76 + 77 Args: + 78 game_id (str): The ID of the game. + 79 + 80 Returns: + 81 dict: A dictionary indicating if the client is ready to start the game. + 82 Example: {"ready": True} + 83 """ + 84 self.agent.on_start_game(game_id) + 85 return {} + 86 + 87 @EndGame.responder + 88 def end_game(self, result, stats): + 89 """Called when the server ends the game. + 90 + 91 Args: + 92 result (bool): A boolean indicating if the game was won. + 93 stats (object): Other statistics. + 94 + 95 Returns: + 96 dict: A dictionary indicating if the client is ready to start a new game. + 97 Example: {"ready": True} + 98 """ + 99 self.agent.on_end_game(result=result, stats=stats) +100 return {} +101 +102 @Step.responder +103 def step(self, obv: list[float]): +104 """Called when the server wants the client to make a step. +105 +106 Args: +107 obv (list[float])): The environment given by the server. +108 +109 Returns: +110 dict: A dictionary containing the action that should be executed. +111 Example: {"action": 1} +112 """ +113 action = self.agent.get_step(obv) +114 if isinstance(action, list) and all(isinstance(x, float) for x in action): +115 return {"action": action} +116 else: +117 raise Exception( +118 "Tried to send an action with wrong type. " +119 "Only actions of type list[float] can be send." +120 ) +121 +122 @Error.responder +123 def on_error(self, msg): +124 """Called if an error occurred on the server side. +125 +126 Args: +127 msg (object): The error description. +128 """ +129 self.agent.on_error(msg=str(msg, encoding="utf-8")) +130 return {} +131 +132 @Message.responder +133 def on_message(self, msg): +134 """Called if a message from the server is sent. +135 +136 Args: +137 msg (object): The message. +138 """ +139 self.agent.on_message(msg=str(msg, encoding="utf-8")) +140 return {} +
Protocol for the client.
+ +Represents the protocol used by the client to communicate with the server.
+25 def __init__(self, agent: IAgent, boxReceiver=None, locator=None): +26 """Initialize the COMPClientProtocol. +27 +28 Args: +29 agent (COMPAgent): The agent associated with the protocol. +30 boxReceiver (object, optional): The box receiver object. Defaults to None. +31 locator (object, optional): The locator object. Defaults to None. +32 """ +33 super().__init__(boxReceiver, locator) +34 self.agent: IAgent = agent +
Initialize the COMPClientProtocol.
+ +Args: + agent (COMPAgent): The agent associated with the protocol. + boxReceiver (object, optional): The box receiver object. Defaults to None. + locator (object, optional): The locator object. Defaults to None.
+36 def connectionMade(self): +37 """Called when the connection to the server is made.""" +38 log.debug("Connected to server") +39 return super().connectionMade() +
Called when the connection to the server is made.
+41 def connectionLost(self, reason): +42 """Called when the connection to the server is lost. +43 +44 Args: +45 reason (object): The reason for the lost connection. +46 """ +47 log.debug(f"Disconnected from the server. Reason: {reason}") +48 if reactor.running: +49 reactor.stop() +50 self.agent.on_disconnect() +51 return super().connectionLost(reason) +
Called when the connection to the server is lost.
+ +Args: + reason (object): The reason for the lost connection.
+53 @Auth.responder +54 def auth(self): +55 """Called for authenticating the client. +56 +57 Returns: +58 dict: The client's authentication token and version. +59 Example: {"token": b'...', "version": 1} +60 """ +61 return {"token": str.encode(self.agent.auth()), "version": VERSION} +
Called for authenticating the client.
+ +Returns: + dict: The client's authentication token and version. + Example: {"token": b'...', "version": 1}
+63 @Ready.responder +64 def ready(self): +65 """Called when the server wants to know if the client is ready. +66 +67 Returns: +68 dict: A dictionary indicating if the client is ready. +69 Example: {"ready": True} +70 """ +71 return {"ready": self.agent.is_ready()} +
Called when the server wants to know if the client is ready.
+ +Returns: + dict: A dictionary indicating if the client is ready. + Example: {"ready": True}
+73 @StartGame.responder +74 def start_game(self, game_id: int): +75 """Called when the server starts the game. +76 +77 Args: +78 game_id (str): The ID of the game. +79 +80 Returns: +81 dict: A dictionary indicating if the client is ready to start the game. +82 Example: {"ready": True} +83 """ +84 self.agent.on_start_game(game_id) +85 return {} +
Called when the server starts the game.
+ +Args: + game_id (str): The ID of the game.
+ +Returns: + dict: A dictionary indicating if the client is ready to start the game. + Example: {"ready": True}
+87 @EndGame.responder + 88 def end_game(self, result, stats): + 89 """Called when the server ends the game. + 90 + 91 Args: + 92 result (bool): A boolean indicating if the game was won. + 93 stats (object): Other statistics. + 94 + 95 Returns: + 96 dict: A dictionary indicating if the client is ready to start a new game. + 97 Example: {"ready": True} + 98 """ + 99 self.agent.on_end_game(result=result, stats=stats) +100 return {} +
Called when the server ends the game.
+ +Args: + result (bool): A boolean indicating if the game was won. + stats (object): Other statistics.
+ +Returns: + dict: A dictionary indicating if the client is ready to start a new game. + Example: {"ready": True}
+102 @Step.responder +103 def step(self, obv: list[float]): +104 """Called when the server wants the client to make a step. +105 +106 Args: +107 obv (list[float])): The environment given by the server. +108 +109 Returns: +110 dict: A dictionary containing the action that should be executed. +111 Example: {"action": 1} +112 """ +113 action = self.agent.get_step(obv) +114 if isinstance(action, list) and all(isinstance(x, float) for x in action): +115 return {"action": action} +116 else: +117 raise Exception( +118 "Tried to send an action with wrong type. " +119 "Only actions of type list[float] can be send." +120 ) +
Called when the server wants the client to make a step.
+ +Args: + obv (list[float])): The environment given by the server.
+ +Returns: + dict: A dictionary containing the action that should be executed. + Example: {"action": 1}
+122 @Error.responder +123 def on_error(self, msg): +124 """Called if an error occurred on the server side. +125 +126 Args: +127 msg (object): The error description. +128 """ +129 self.agent.on_error(msg=str(msg, encoding="utf-8")) +130 return {} +
Called if an error occurred on the server side.
+ +Args: + msg (object): The error description.
+132 @Message.responder +133 def on_message(self, msg): +134 """Called if a message from the server is sent. +135 +136 Args: +137 msg (object): The message. +138 """ +139 self.agent.on_message(msg=str(msg, encoding="utf-8")) +140 return {} +
Called if a message from the server is sent.
+ +Args: + msg (object): The message.
+143def connect_agent(agent: IAgent, host: str = "localhost", port: int = 65335): +144 """Connects the client to the server. +145 +146 This method connects the client to the server using the specified token, host, +147 and port. It internally calls the `run` method of the base class to establish +148 the connection. +149 +150 Args: +151 token (str): The token used for authentication. +152 host (str): The host address of the server. Defaults to "localhost". +153 port (int): The port number of the server. Defaults to 65335. +154 +155 Returns: +156 None +157 +158 """ +159 connectProtocol( +160 TCP4ClientEndpoint(reactor, host, port), +161 ClientProtocol(agent), +162 # we lose the protocol here, is this a problem? +163 ) +164 reactor.run() # type: ignore[attr-defined] +
Connects the client to the server.
+ +This method connects the client to the server using the specified token, host,
+and port. It internally calls the run
method of the base class to establish
+the connection.
Args: + token (str): The token used for authentication. + host (str): The host address of the server. Defaults to "localhost". + port (int): The port number of the server. Defaults to 65335.
+ +Returns: + None
+This module contains the interfaces for the game data.
+1""" + 2This module contains the interfaces for the game data. + 3""" + 4 + 5from datetime import datetime + 6from enum import IntEnum, Enum + 7 + 8from comprl.shared.types import GameID + 9 +10 +11class GameEndState(IntEnum): +12 """ +13 Represents the possible end states of a game. +14 +15 Attributes: +16 WIN: The game ended with a win. +17 DRAW: The game ended in a draw. +18 DISCONNECTED: The game ended due to a disconnection. +19 """ +20 +21 WIN = 0 +22 DRAW = 1 +23 DISCONNECTED = 2 +24 +25 +26class GameResult: +27 """Result and statistics of a game""" +28 +29 def __init__( +30 self, +31 game_id: GameID, +32 user1_id: int, +33 user2_id: int, +34 score_user_1: float, +35 score_user_2: float, +36 start_time=None, +37 end_state: GameEndState = GameEndState.WIN, +38 is_user1_winner: bool = True, +39 is_user1_disconnected: bool = True, +40 ) -> None: +41 """initialize a game result +42 +43 Args: +44 game_id (UUID): id of the game +45 user1_id (int): id of the first user +46 user2_id (int): id of the second user +47 score_user_1 (float): score of the first user +48 score_user_2 (float): score of the second user +49 start_time (str, optional): time, when the game started. +50 Defaults to None (current time). +51 end_state (int, optional): end-state of the game. +52 Defaults to GameEndState.WIN. +53 is_user1_winner (bool, optional): is user 1 the winner? +54 Defaults to True. +55 is_user1_disconnected (bool, optional): is user 1 disconnected? +56 Defaults to True. +57 """ +58 self.game_id = game_id +59 self.user1_id = user1_id +60 self.user2_id = user2_id +61 self.score_user_1 = score_user_1 +62 self.score_user_2 = score_user_2 +63 self.start_time = start_time +64 self.end_state = end_state +65 +66 if self.start_time is None: +67 self.start_time = datetime.now() +68 +69 self.winner_id = None +70 if end_state == GameEndState.WIN: +71 self.winner_id = user1_id if is_user1_winner else user2_id +72 +73 self.disconnected_id = None +74 if end_state == GameEndState.DISCONNECTED: +75 self.disconnected_id = user1_id if is_user1_disconnected else user2_id +76 +77 +78class UserRole(Enum): +79 """ +80 Represents the possible user roles. +81 +82 Attributes: +83 USER: Normal user without administrative rights. +84 ADMIN = User with administrative rights. +85 """ +86 +87 USER = "user" +88 ADMIN = "admin" +
12class GameEndState(IntEnum): +13 """ +14 Represents the possible end states of a game. +15 +16 Attributes: +17 WIN: The game ended with a win. +18 DRAW: The game ended in a draw. +19 DISCONNECTED: The game ended due to a disconnection. +20 """ +21 +22 WIN = 0 +23 DRAW = 1 +24 DISCONNECTED = 2 +
Represents the possible end states of a game.
+ +Attributes: + WIN: The game ended with a win. + DRAW: The game ended in a draw. + DISCONNECTED: The game ended due to a disconnection.
+27class GameResult: +28 """Result and statistics of a game""" +29 +30 def __init__( +31 self, +32 game_id: GameID, +33 user1_id: int, +34 user2_id: int, +35 score_user_1: float, +36 score_user_2: float, +37 start_time=None, +38 end_state: GameEndState = GameEndState.WIN, +39 is_user1_winner: bool = True, +40 is_user1_disconnected: bool = True, +41 ) -> None: +42 """initialize a game result +43 +44 Args: +45 game_id (UUID): id of the game +46 user1_id (int): id of the first user +47 user2_id (int): id of the second user +48 score_user_1 (float): score of the first user +49 score_user_2 (float): score of the second user +50 start_time (str, optional): time, when the game started. +51 Defaults to None (current time). +52 end_state (int, optional): end-state of the game. +53 Defaults to GameEndState.WIN. +54 is_user1_winner (bool, optional): is user 1 the winner? +55 Defaults to True. +56 is_user1_disconnected (bool, optional): is user 1 disconnected? +57 Defaults to True. +58 """ +59 self.game_id = game_id +60 self.user1_id = user1_id +61 self.user2_id = user2_id +62 self.score_user_1 = score_user_1 +63 self.score_user_2 = score_user_2 +64 self.start_time = start_time +65 self.end_state = end_state +66 +67 if self.start_time is None: +68 self.start_time = datetime.now() +69 +70 self.winner_id = None +71 if end_state == GameEndState.WIN: +72 self.winner_id = user1_id if is_user1_winner else user2_id +73 +74 self.disconnected_id = None +75 if end_state == GameEndState.DISCONNECTED: +76 self.disconnected_id = user1_id if is_user1_disconnected else user2_id +
Result and statistics of a game
+30 def __init__( +31 self, +32 game_id: GameID, +33 user1_id: int, +34 user2_id: int, +35 score_user_1: float, +36 score_user_2: float, +37 start_time=None, +38 end_state: GameEndState = GameEndState.WIN, +39 is_user1_winner: bool = True, +40 is_user1_disconnected: bool = True, +41 ) -> None: +42 """initialize a game result +43 +44 Args: +45 game_id (UUID): id of the game +46 user1_id (int): id of the first user +47 user2_id (int): id of the second user +48 score_user_1 (float): score of the first user +49 score_user_2 (float): score of the second user +50 start_time (str, optional): time, when the game started. +51 Defaults to None (current time). +52 end_state (int, optional): end-state of the game. +53 Defaults to GameEndState.WIN. +54 is_user1_winner (bool, optional): is user 1 the winner? +55 Defaults to True. +56 is_user1_disconnected (bool, optional): is user 1 disconnected? +57 Defaults to True. +58 """ +59 self.game_id = game_id +60 self.user1_id = user1_id +61 self.user2_id = user2_id +62 self.score_user_1 = score_user_1 +63 self.score_user_2 = score_user_2 +64 self.start_time = start_time +65 self.end_state = end_state +66 +67 if self.start_time is None: +68 self.start_time = datetime.now() +69 +70 self.winner_id = None +71 if end_state == GameEndState.WIN: +72 self.winner_id = user1_id if is_user1_winner else user2_id +73 +74 self.disconnected_id = None +75 if end_state == GameEndState.DISCONNECTED: +76 self.disconnected_id = user1_id if is_user1_disconnected else user2_id +
initialize a game result
+ +Args: + game_id (UUID): id of the game + user1_id (int): id of the first user + user2_id (int): id of the second user + score_user_1 (float): score of the first user + score_user_2 (float): score of the second user + start_time (str, optional): time, when the game started. + Defaults to None (current time). + end_state (int, optional): end-state of the game. + Defaults to GameEndState.WIN. + is_user1_winner (bool, optional): is user 1 the winner? + Defaults to True. + is_user1_disconnected (bool, optional): is user 1 disconnected? + Defaults to True.
+79class UserRole(Enum): +80 """ +81 Represents the possible user roles. +82 +83 Attributes: +84 USER: Normal user without administrative rights. +85 ADMIN = User with administrative rights. +86 """ +87 +88 USER = "user" +89 ADMIN = "admin" +
Represents the possible user roles.
+ +Attributes: + USER: Normal user without administrative rights. + ADMIN = User with administrative rights.
+Implementation of the data access objects for managing game and user data in SQLite.
+1""" + 2Implementation of the data access objects for managing game and user data in SQLite. + 3""" + 4 + 5import dataclasses + 6import sqlite3 + 7 + 8from comprl.server.data.interfaces import GameResult, UserRole + 9from comprl.shared.types import GameID + 10 + 11 + 12@dataclasses.dataclass + 13class SQLiteConnectionInfo: + 14 """ + 15 Represents the connection information for SQLite database. + 16 + 17 Attributes: + 18 host (str): The host of the SQLite database. + 19 table (int): The table number in the database. + 20 """ + 21 + 22 host: str + 23 table: str + 24 + 25 + 26class GameData: + 27 """ + 28 Represents a data access object for managing game data in a SQLite database. + 29 + 30 Attributes: + 31 connection (sqlite3.Connection): The connection to the SQLite database. + 32 cursor (sqlite3.Cursor): The cursor for executing SQL queries. + 33 + 34 """ + 35 + 36 def __init__(self, connection: SQLiteConnectionInfo) -> None: + 37 # connect to the database + 38 self.connection = sqlite3.connect(connection.host) + 39 self.cursor = self.connection.cursor() + 40 self.table = connection.table + 41 + 42 self.cursor.execute( + 43 f""" + 44 CREATE TABLE IF NOT EXISTS {self.table} ( + 45 game_id TEXT NOT NULL PRIMARY KEY, + 46 user1, + 47 user2, + 48 score1, + 49 score2, + 50 start_time, + 51 end_state, + 52 winner, + 53 disconnected)""" + 54 ) + 55 + 56 def add(self, game_result: GameResult) -> None: + 57 """ + 58 Adds a game result to the database. + 59 + 60 Args: + 61 game_result (GameResult): The game result to be added. + 62 + 63 """ + 64 self.cursor.execute( + 65 f"""INSERT INTO {self.table} VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)""", + 66 ( + 67 str(game_result.game_id), + 68 game_result.user1_id, + 69 game_result.user2_id, + 70 game_result.score_user_1, + 71 game_result.score_user_2, + 72 game_result.start_time, + 73 game_result.end_state, + 74 game_result.winner_id, + 75 game_result.disconnected_id, + 76 ), + 77 ) + 78 self.connection.commit() + 79 + 80 def remove(self, game_id: GameID) -> None: + 81 """ + 82 Removes a game from the database based on its ID. + 83 + 84 Args: + 85 game_id (str): The ID of the game to be removed. + 86 + 87 """ + 88 self.cursor.execute( + 89 f"""DELETE FROM {self.table} WHERE game_id=?""", + 90 (game_id,), + 91 ) + 92 self.connection.commit() + 93 + 94 # TODO: I skipped some functions here due to time constraints. + 95 # And cuurently no use of them in the code... + 96 + 97 + 98class UserData: + 99 """ +100 Represents a data access object for managing game data in a SQLite database. +101 +102 Attributes: +103 connection (sqlite3.Connection): The connection to the SQLite database. +104 cursor (sqlite3.Cursor): The cursor for executing SQL queries. +105 """ +106 +107 def __init__(self, connection: SQLiteConnectionInfo) -> None: +108 """ +109 Initializes a new instance of the UserData class. +110 +111 Args: +112 connection (SQLiteConnectionInfo): The connection information for SQLite. +113 """ +114 # connect to the database +115 self.connection = sqlite3.connect(connection.host) +116 self.cursor = self.connection.cursor() +117 self.table = connection.table +118 +119 self.cursor.execute( +120 f""" +121 CREATE TABLE IF NOT EXISTS {connection.table} ( +122 user_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, +123 username TEXT NOT NULL UNIQUE, +124 password TEXT NOT NULL, +125 role TEXT NOT NULL DEFAULT 'user', +126 token TEXT NOT NULL, +127 mu FLOAT NOT NULL, +128 sigma FLOAT NOT NULL +129 )""" +130 ) +131 +132 def add( +133 self, +134 user_name: str, +135 user_password: str, +136 user_token: str, +137 user_role=UserRole.USER, +138 user_mu=25.000, +139 user_sigma=8.333, +140 ) -> int: +141 """ +142 Adds a new user to the database. +143 +144 Args: +145 user_name (str): The name of the user. +146 user_password (str): The password of the user. +147 user_token (str): The token of the user. +148 user_role (UserRole, optional): The role of the user. +149 Defaults to UserRole.USER. +150 user_mu (float, optional): The mu value of the user. Defaults to 25. +151 user_sigma (float, optional): The sigma value of the user. Defaults to 8.33. +152 +153 Returns: +154 int: The ID of the newly added user. +155 """ +156 +157 user_role = user_role.value +158 +159 self.cursor.execute( +160 f"""INSERT INTO {self.table}(username, password, role, token, mu, sigma) +161 VALUES (?,?,?,?,?,?)""", +162 (user_name, user_password, user_role, user_token, user_mu, user_sigma), +163 ) +164 self.cursor.execute( +165 f"""SELECT user_id FROM {self.table} WHERE token=?""", +166 (user_token,), +167 ) +168 self.connection.commit() +169 return self.cursor.fetchone()[0] +170 +171 def remove(self, user_id: int) -> None: +172 """ +173 Removes a user from the database based on their ID. +174 +175 Args: +176 user_id (int): The ID of the user to be removed. +177 """ +178 self.cursor.execute( +179 f"""DELETE FROM {self.table} WHERE user_id=?""", +180 (user_id,), +181 ) +182 self.connection.commit() +183 +184 def is_verified(self, user_token: str) -> bool: +185 """ +186 Checks if a user is verified based on their token. +187 +188 Args: +189 user_token (str): The token of the user. +190 +191 Returns: +192 bool: True if the user is verified, False otherwise. +193 """ +194 self.cursor.execute( +195 f"""SELECT user_id FROM {self.table} WHERE token=?""", +196 (user_token,), +197 ) +198 result = self.cursor.fetchone() +199 if result is not None: +200 return True +201 return False +202 +203 def get_user_id(self, user_token: str) -> int | None: +204 """ +205 Retrieves the ID of a user based on their token. +206 +207 Args: +208 user_token (str): The token of the user. +209 +210 Returns: +211 int: The ID of the user, or -1 if the user is not found. +212 """ +213 self.cursor.execute( +214 f"""SELECT user_id FROM {self.table} WHERE token=?""", +215 (user_token,), +216 ) +217 result = self.cursor.fetchone() +218 if result is not None: +219 return result[0] +220 +221 return None +222 +223 def get_matchmaking_parameters(self, user_id: int) -> tuple[float, float]: +224 """ +225 Retrieves the matchmaking parameters of a user based on their ID. +226 +227 Args: +228 user_id (int): The ID of the user. +229 +230 Returns: +231 tuple[float, float]: The mu and sigma values of the user. +232 """ +233 self.cursor.execute( +234 f"""SELECT mu, sigma FROM {self.table} WHERE user_id=?""", +235 (user_id,), +236 ) +237 return self.cursor.fetchone() +238 +239 def set_matchmaking_parameters(self, user_id: int, mu: float, sigma: float) -> None: +240 """ +241 Sets the matchmaking parameters of a user based on their ID. +242 +243 Args: +244 user_id (int): The ID of the user. +245 mu (float): The new mu value of the user. +246 sigma (float): The new sigma value of the user. +247 """ +248 self.cursor.execute( +249 f"""UPDATE {self.table} SET mu=?, sigma=? WHERE user_id=?""", +250 (mu, sigma, user_id), +251 ) +252 self.connection.commit() +
13@dataclasses.dataclass +14class SQLiteConnectionInfo: +15 """ +16 Represents the connection information for SQLite database. +17 +18 Attributes: +19 host (str): The host of the SQLite database. +20 table (int): The table number in the database. +21 """ +22 +23 host: str +24 table: str +
Represents the connection information for SQLite database.
+ +Attributes: + host (str): The host of the SQLite database. + table (int): The table number in the database.
+27class GameData: +28 """ +29 Represents a data access object for managing game data in a SQLite database. +30 +31 Attributes: +32 connection (sqlite3.Connection): The connection to the SQLite database. +33 cursor (sqlite3.Cursor): The cursor for executing SQL queries. +34 +35 """ +36 +37 def __init__(self, connection: SQLiteConnectionInfo) -> None: +38 # connect to the database +39 self.connection = sqlite3.connect(connection.host) +40 self.cursor = self.connection.cursor() +41 self.table = connection.table +42 +43 self.cursor.execute( +44 f""" +45 CREATE TABLE IF NOT EXISTS {self.table} ( +46 game_id TEXT NOT NULL PRIMARY KEY, +47 user1, +48 user2, +49 score1, +50 score2, +51 start_time, +52 end_state, +53 winner, +54 disconnected)""" +55 ) +56 +57 def add(self, game_result: GameResult) -> None: +58 """ +59 Adds a game result to the database. +60 +61 Args: +62 game_result (GameResult): The game result to be added. +63 +64 """ +65 self.cursor.execute( +66 f"""INSERT INTO {self.table} VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)""", +67 ( +68 str(game_result.game_id), +69 game_result.user1_id, +70 game_result.user2_id, +71 game_result.score_user_1, +72 game_result.score_user_2, +73 game_result.start_time, +74 game_result.end_state, +75 game_result.winner_id, +76 game_result.disconnected_id, +77 ), +78 ) +79 self.connection.commit() +80 +81 def remove(self, game_id: GameID) -> None: +82 """ +83 Removes a game from the database based on its ID. +84 +85 Args: +86 game_id (str): The ID of the game to be removed. +87 +88 """ +89 self.cursor.execute( +90 f"""DELETE FROM {self.table} WHERE game_id=?""", +91 (game_id,), +92 ) +93 self.connection.commit() +94 +95 # TODO: I skipped some functions here due to time constraints. +96 # And cuurently no use of them in the code... +
Represents a data access object for managing game data in a SQLite database.
+ +Attributes: + connection (sqlite3.Connection): The connection to the SQLite database. + cursor (sqlite3.Cursor): The cursor for executing SQL queries.
+37 def __init__(self, connection: SQLiteConnectionInfo) -> None: +38 # connect to the database +39 self.connection = sqlite3.connect(connection.host) +40 self.cursor = self.connection.cursor() +41 self.table = connection.table +42 +43 self.cursor.execute( +44 f""" +45 CREATE TABLE IF NOT EXISTS {self.table} ( +46 game_id TEXT NOT NULL PRIMARY KEY, +47 user1, +48 user2, +49 score1, +50 score2, +51 start_time, +52 end_state, +53 winner, +54 disconnected)""" +55 ) +
57 def add(self, game_result: GameResult) -> None: +58 """ +59 Adds a game result to the database. +60 +61 Args: +62 game_result (GameResult): The game result to be added. +63 +64 """ +65 self.cursor.execute( +66 f"""INSERT INTO {self.table} VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)""", +67 ( +68 str(game_result.game_id), +69 game_result.user1_id, +70 game_result.user2_id, +71 game_result.score_user_1, +72 game_result.score_user_2, +73 game_result.start_time, +74 game_result.end_state, +75 game_result.winner_id, +76 game_result.disconnected_id, +77 ), +78 ) +79 self.connection.commit() +
Adds a game result to the database.
+ +Args: + game_result (GameResult): The game result to be added.
+81 def remove(self, game_id: GameID) -> None: +82 """ +83 Removes a game from the database based on its ID. +84 +85 Args: +86 game_id (str): The ID of the game to be removed. +87 +88 """ +89 self.cursor.execute( +90 f"""DELETE FROM {self.table} WHERE game_id=?""", +91 (game_id,), +92 ) +93 self.connection.commit() +
Removes a game from the database based on its ID.
+ +Args: + game_id (str): The ID of the game to be removed.
+99class UserData: +100 """ +101 Represents a data access object for managing game data in a SQLite database. +102 +103 Attributes: +104 connection (sqlite3.Connection): The connection to the SQLite database. +105 cursor (sqlite3.Cursor): The cursor for executing SQL queries. +106 """ +107 +108 def __init__(self, connection: SQLiteConnectionInfo) -> None: +109 """ +110 Initializes a new instance of the UserData class. +111 +112 Args: +113 connection (SQLiteConnectionInfo): The connection information for SQLite. +114 """ +115 # connect to the database +116 self.connection = sqlite3.connect(connection.host) +117 self.cursor = self.connection.cursor() +118 self.table = connection.table +119 +120 self.cursor.execute( +121 f""" +122 CREATE TABLE IF NOT EXISTS {connection.table} ( +123 user_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, +124 username TEXT NOT NULL UNIQUE, +125 password TEXT NOT NULL, +126 role TEXT NOT NULL DEFAULT 'user', +127 token TEXT NOT NULL, +128 mu FLOAT NOT NULL, +129 sigma FLOAT NOT NULL +130 )""" +131 ) +132 +133 def add( +134 self, +135 user_name: str, +136 user_password: str, +137 user_token: str, +138 user_role=UserRole.USER, +139 user_mu=25.000, +140 user_sigma=8.333, +141 ) -> int: +142 """ +143 Adds a new user to the database. +144 +145 Args: +146 user_name (str): The name of the user. +147 user_password (str): The password of the user. +148 user_token (str): The token of the user. +149 user_role (UserRole, optional): The role of the user. +150 Defaults to UserRole.USER. +151 user_mu (float, optional): The mu value of the user. Defaults to 25. +152 user_sigma (float, optional): The sigma value of the user. Defaults to 8.33. +153 +154 Returns: +155 int: The ID of the newly added user. +156 """ +157 +158 user_role = user_role.value +159 +160 self.cursor.execute( +161 f"""INSERT INTO {self.table}(username, password, role, token, mu, sigma) +162 VALUES (?,?,?,?,?,?)""", +163 (user_name, user_password, user_role, user_token, user_mu, user_sigma), +164 ) +165 self.cursor.execute( +166 f"""SELECT user_id FROM {self.table} WHERE token=?""", +167 (user_token,), +168 ) +169 self.connection.commit() +170 return self.cursor.fetchone()[0] +171 +172 def remove(self, user_id: int) -> None: +173 """ +174 Removes a user from the database based on their ID. +175 +176 Args: +177 user_id (int): The ID of the user to be removed. +178 """ +179 self.cursor.execute( +180 f"""DELETE FROM {self.table} WHERE user_id=?""", +181 (user_id,), +182 ) +183 self.connection.commit() +184 +185 def is_verified(self, user_token: str) -> bool: +186 """ +187 Checks if a user is verified based on their token. +188 +189 Args: +190 user_token (str): The token of the user. +191 +192 Returns: +193 bool: True if the user is verified, False otherwise. +194 """ +195 self.cursor.execute( +196 f"""SELECT user_id FROM {self.table} WHERE token=?""", +197 (user_token,), +198 ) +199 result = self.cursor.fetchone() +200 if result is not None: +201 return True +202 return False +203 +204 def get_user_id(self, user_token: str) -> int | None: +205 """ +206 Retrieves the ID of a user based on their token. +207 +208 Args: +209 user_token (str): The token of the user. +210 +211 Returns: +212 int: The ID of the user, or -1 if the user is not found. +213 """ +214 self.cursor.execute( +215 f"""SELECT user_id FROM {self.table} WHERE token=?""", +216 (user_token,), +217 ) +218 result = self.cursor.fetchone() +219 if result is not None: +220 return result[0] +221 +222 return None +223 +224 def get_matchmaking_parameters(self, user_id: int) -> tuple[float, float]: +225 """ +226 Retrieves the matchmaking parameters of a user based on their ID. +227 +228 Args: +229 user_id (int): The ID of the user. +230 +231 Returns: +232 tuple[float, float]: The mu and sigma values of the user. +233 """ +234 self.cursor.execute( +235 f"""SELECT mu, sigma FROM {self.table} WHERE user_id=?""", +236 (user_id,), +237 ) +238 return self.cursor.fetchone() +239 +240 def set_matchmaking_parameters(self, user_id: int, mu: float, sigma: float) -> None: +241 """ +242 Sets the matchmaking parameters of a user based on their ID. +243 +244 Args: +245 user_id (int): The ID of the user. +246 mu (float): The new mu value of the user. +247 sigma (float): The new sigma value of the user. +248 """ +249 self.cursor.execute( +250 f"""UPDATE {self.table} SET mu=?, sigma=? WHERE user_id=?""", +251 (mu, sigma, user_id), +252 ) +253 self.connection.commit() +
Represents a data access object for managing game data in a SQLite database.
+ +Attributes: + connection (sqlite3.Connection): The connection to the SQLite database. + cursor (sqlite3.Cursor): The cursor for executing SQL queries.
+108 def __init__(self, connection: SQLiteConnectionInfo) -> None: +109 """ +110 Initializes a new instance of the UserData class. +111 +112 Args: +113 connection (SQLiteConnectionInfo): The connection information for SQLite. +114 """ +115 # connect to the database +116 self.connection = sqlite3.connect(connection.host) +117 self.cursor = self.connection.cursor() +118 self.table = connection.table +119 +120 self.cursor.execute( +121 f""" +122 CREATE TABLE IF NOT EXISTS {connection.table} ( +123 user_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, +124 username TEXT NOT NULL UNIQUE, +125 password TEXT NOT NULL, +126 role TEXT NOT NULL DEFAULT 'user', +127 token TEXT NOT NULL, +128 mu FLOAT NOT NULL, +129 sigma FLOAT NOT NULL +130 )""" +131 ) +
Initializes a new instance of the UserData class.
+ +Args: + connection (SQLiteConnectionInfo): The connection information for SQLite.
+133 def add( +134 self, +135 user_name: str, +136 user_password: str, +137 user_token: str, +138 user_role=UserRole.USER, +139 user_mu=25.000, +140 user_sigma=8.333, +141 ) -> int: +142 """ +143 Adds a new user to the database. +144 +145 Args: +146 user_name (str): The name of the user. +147 user_password (str): The password of the user. +148 user_token (str): The token of the user. +149 user_role (UserRole, optional): The role of the user. +150 Defaults to UserRole.USER. +151 user_mu (float, optional): The mu value of the user. Defaults to 25. +152 user_sigma (float, optional): The sigma value of the user. Defaults to 8.33. +153 +154 Returns: +155 int: The ID of the newly added user. +156 """ +157 +158 user_role = user_role.value +159 +160 self.cursor.execute( +161 f"""INSERT INTO {self.table}(username, password, role, token, mu, sigma) +162 VALUES (?,?,?,?,?,?)""", +163 (user_name, user_password, user_role, user_token, user_mu, user_sigma), +164 ) +165 self.cursor.execute( +166 f"""SELECT user_id FROM {self.table} WHERE token=?""", +167 (user_token,), +168 ) +169 self.connection.commit() +170 return self.cursor.fetchone()[0] +
Adds a new user to the database.
+ +Args: + user_name (str): The name of the user. + user_password (str): The password of the user. + user_token (str): The token of the user. + user_role (UserRole, optional): The role of the user. + Defaults to UserRole.USER. + user_mu (float, optional): The mu value of the user. Defaults to 25. + user_sigma (float, optional): The sigma value of the user. Defaults to 8.33.
+ +Returns: + int: The ID of the newly added user.
+172 def remove(self, user_id: int) -> None: +173 """ +174 Removes a user from the database based on their ID. +175 +176 Args: +177 user_id (int): The ID of the user to be removed. +178 """ +179 self.cursor.execute( +180 f"""DELETE FROM {self.table} WHERE user_id=?""", +181 (user_id,), +182 ) +183 self.connection.commit() +
Removes a user from the database based on their ID.
+ +Args: + user_id (int): The ID of the user to be removed.
+185 def is_verified(self, user_token: str) -> bool: +186 """ +187 Checks if a user is verified based on their token. +188 +189 Args: +190 user_token (str): The token of the user. +191 +192 Returns: +193 bool: True if the user is verified, False otherwise. +194 """ +195 self.cursor.execute( +196 f"""SELECT user_id FROM {self.table} WHERE token=?""", +197 (user_token,), +198 ) +199 result = self.cursor.fetchone() +200 if result is not None: +201 return True +202 return False +
Checks if a user is verified based on their token.
+ +Args: + user_token (str): The token of the user.
+ +Returns: + bool: True if the user is verified, False otherwise.
+204 def get_user_id(self, user_token: str) -> int | None: +205 """ +206 Retrieves the ID of a user based on their token. +207 +208 Args: +209 user_token (str): The token of the user. +210 +211 Returns: +212 int: The ID of the user, or -1 if the user is not found. +213 """ +214 self.cursor.execute( +215 f"""SELECT user_id FROM {self.table} WHERE token=?""", +216 (user_token,), +217 ) +218 result = self.cursor.fetchone() +219 if result is not None: +220 return result[0] +221 +222 return None +
Retrieves the ID of a user based on their token.
+ +Args: + user_token (str): The token of the user.
+ +Returns: + int: The ID of the user, or -1 if the user is not found.
+224 def get_matchmaking_parameters(self, user_id: int) -> tuple[float, float]: +225 """ +226 Retrieves the matchmaking parameters of a user based on their ID. +227 +228 Args: +229 user_id (int): The ID of the user. +230 +231 Returns: +232 tuple[float, float]: The mu and sigma values of the user. +233 """ +234 self.cursor.execute( +235 f"""SELECT mu, sigma FROM {self.table} WHERE user_id=?""", +236 (user_id,), +237 ) +238 return self.cursor.fetchone() +
Retrieves the matchmaking parameters of a user based on their ID.
+ +Args: + user_id (int): The ID of the user.
+ +Returns: + tuple[float, float]: The mu and sigma values of the user.
+240 def set_matchmaking_parameters(self, user_id: int, mu: float, sigma: float) -> None: +241 """ +242 Sets the matchmaking parameters of a user based on their ID. +243 +244 Args: +245 user_id (int): The ID of the user. +246 mu (float): The new mu value of the user. +247 sigma (float): The new sigma value of the user. +248 """ +249 self.cursor.execute( +250 f"""UPDATE {self.table} SET mu=?, sigma=? WHERE user_id=?""", +251 (mu, sigma, user_id), +252 ) +253 self.connection.commit() +
Sets the matchmaking parameters of a user based on their ID.
+ +Args: + user_id (int): The ID of the user. + mu (float): The new mu value of the user. + sigma (float): The new sigma value of the user.
+This module contains the interfaces for the non-networking logic.
+1""" + 2This module contains the interfaces for the non-networking logic. + 3""" + 4 + 5import abc + 6from typing import Callable, Optional + 7from datetime import datetime + 8import numpy as np + 9import pickle + 10 + 11from comprl.shared.types import GameID, PlayerID + 12from comprl.server.util import IDGenerator + 13from comprl.server.data.interfaces import GameResult, GameEndState + 14 + 15 + 16class IAction: + 17 """Interface for an action""" + 18 + 19 pass + 20 + 21 + 22class IPlayer(abc.ABC): + 23 """Interface for a player""" + 24 + 25 def __init__(self) -> None: + 26 self.id: PlayerID = IDGenerator.generate_player_id() + 27 self.user_id: Optional[int] = None + 28 self.is_connected = True + 29 + 30 @abc.abstractmethod + 31 def authenticate(self, result_callback): + 32 """authenticates player + 33 + 34 Args: + 35 result_callback (Callable): callback + 36 """ + 37 ... + 38 + 39 @abc.abstractmethod + 40 def is_ready(self, result_callback) -> bool: + 41 """checks if the player is ready to play + 42 + 43 Returns: + 44 bool: returns true if the player is ready to play + 45 """ + 46 ... + 47 + 48 @abc.abstractmethod + 49 def notify_start(self, game_id): + 50 """notifies player that the game has started""" + 51 ... + 52 + 53 @abc.abstractmethod + 54 def get_action(self, obv, result_callback) -> IAction: + 55 """gets an action from the player + 56 + 57 Args: + 58 obv (Any): observation + 59 result_callback (Callable): callback + 60 + 61 Returns: + 62 IAction: action + 63 """ + 64 ... + 65 + 66 @abc.abstractmethod + 67 def notify_end(self, result, stats): + 68 """notifies player that the game has ended""" + 69 ... + 70 + 71 @abc.abstractmethod + 72 def disconnect(self, reason: str): + 73 """disconnect the player""" + 74 ... + 75 + 76 @abc.abstractmethod + 77 def notify_error(self, error: str): + 78 """notifies the player of an error""" + 79 ... + 80 + 81 @abc.abstractmethod + 82 def notify_info(self, msg: str): + 83 """notifies the player of an information""" + 84 ... + 85 + 86 + 87class IGame(abc.ABC): + 88 """ + 89 Interface for a game. + 90 + 91 Attributes: + 92 id (GameID): + 93 The unique identifier of the game. + 94 players (dict[PlayerID, IPlayer]): + 95 A dictionary of players participating in the game. + 96 start_time (datetime): + 97 The start time of the game. + 98 finish_callbacks (list[Callable[["IGame"], None]]): + 99 A list of callbacks to be executed when the game ends. +100 """ +101 +102 @abc.abstractmethod +103 def __init__(self, players: list[IPlayer]) -> None: +104 """ +105 Initializes a new instance of the IGame class. +106 +107 Args: +108 players (list[IPlayer]): A list of players participating in the game. +109 """ +110 self.id: GameID = IDGenerator.generate_game_id() +111 self.players = {p.id: p for p in players} +112 self.finish_callbacks: list[Callable[["IGame"], None]] = [] +113 self.scores: dict[PlayerID, float] = {p.id: 0.0 for p in players} +114 self.start_time = datetime.now() +115 self.disconnected_player_id: PlayerID | None = None +116 # dict storing all actions and possible more to be saved later. +117 # "actions" is a list of all actions in the game +118 self.game_info: dict[str, list[np.ndarray]] = {} +119 self.all_actions: list[np.ndarray] = [] +120 # When writing a game class you can fill the dict game_info with more +121 # information +122 +123 def add_finish_callback(self, callback: Callable[["IGame"], None]) -> None: +124 """ +125 Adds a callback function to be executed when the game ends. +126 +127 Args: +128 callback (Callable[["IGame"], None]): The callback function to be added. +129 """ +130 self.finish_callbacks.append(callback) +131 +132 def start(self): +133 """ +134 Notifies all players that the game has started and starts the game cycle. +135 """ +136 self.start_time = datetime.now() +137 +138 for player in self.players.values(): +139 player.notify_start(self.id) +140 +141 self._run() +142 +143 def _end(self, reason="unknown"): +144 """ +145 Notifies all players that the game has ended and writes all actions in a file. +146 +147 Args: +148 reason (str): The reason why the game has ended. Defaults to "unknown". +149 """ +150 +151 # store actions: +152 # TODO: maybe add multithreading here to ease the load on the main server thread +153 # as storing the actions can take a while +154 self.game_info["actions"] = np.array(self.all_actions) +155 +156 with open("comprl/server/game_actions/" + str(self.id) + ".pkl", "wb") as f: +157 pickle.dump(self.game_info, f) +158 +159 # notify end +160 for callback in self.finish_callbacks: +161 callback(self) +162 +163 for player in self.players.values(): +164 if player.id == self.disconnected_player_id: +165 continue +166 player.notify_end( +167 self._player_won(player.id), self._player_stats(player.id) +168 ) +169 +170 def _run(self): +171 """ +172 Collects all actions and puts them in the current_actions list. +173 """ +174 actions = {} +175 for p in self.players.values(): +176 +177 def _res(value, id=p.id): +178 if not self._validate_action(value): +179 self.players[id].disconnect("Invalid action") +180 actions[id] = value +181 if len(actions) == len(self.players): +182 # all players have submitted their actions +183 # update the game, and if the game is over, end it +184 if self.disconnected_player_id is not None: +185 return +186 self.all_actions.append([actions[p] for p in actions]) +187 if not self._update(actions): +188 self._run() +189 else: +190 self._end(reason="Player won") +191 +192 p.get_action(self._get_observation(p.id), _res) +193 +194 def force_end(self, player_id: PlayerID): +195 """forces the end of the game. Should be used when a player disconnects. +196 +197 Args: +198 player_id (PlayerID): the player that caused the forced end (disconnected) +199 """ +200 self.disconnected_player_id = player_id +201 self._end(reason="Player disconnected") +202 +203 def get_result(self) -> GameResult | None: +204 """ +205 Returns the result of the game. +206 +207 Returns: +208 GameResult: The result of the game. +209 """ +210 player_ids = list(self.players.keys()) +211 +212 game_end_state = GameEndState.DRAW +213 if self._player_won(player_ids[0]) or self._player_won(player_ids[1]): +214 game_end_state = GameEndState.WIN +215 if self.disconnected_player_id is not None: +216 game_end_state = GameEndState.DISCONNECTED +217 +218 user1_id = self.players[player_ids[0]].user_id +219 user2_id = self.players[player_ids[1]].user_id +220 +221 if user1_id is None or user2_id is None: +222 return None +223 +224 return GameResult( +225 game_id=self.id, +226 user1_id=user1_id, +227 user2_id=user2_id, +228 score_user_1=self.scores[player_ids[0]], +229 score_user_2=self.scores[player_ids[1]], +230 start_time=self.start_time, +231 end_state=game_end_state, +232 is_user1_winner=self._player_won(player_ids[0]), +233 is_user1_disconnected=(self.disconnected_player_id == player_ids[0]), +234 ) +235 +236 @abc.abstractmethod +237 def _update(self, actions: dict[PlayerID, list[float]]) -> bool: +238 """ +239 Updates the game with the players' actions. +240 +241 Returns: +242 bool: True if the game is over, False otherwise. +243 """ +244 return False +245 +246 @abc.abstractmethod +247 def _validate_action(self, action) -> bool: +248 """ +249 Checks whether an action is valid. +250 +251 Args: +252 action: The action to be validated. +253 +254 Returns: +255 bool: True if the action is valid, False otherwise. +256 """ +257 ... +258 +259 @abc.abstractmethod +260 def _get_observation(self, id: PlayerID) -> list[float]: +261 """ +262 Returns the observation for the player. +263 +264 Args: +265 id (PlayerID): The ID of the player for which the observation is requested. +266 +267 Returns: +268 list[float]: The observation for the player. +269 """ +270 ... +271 +272 @abc.abstractmethod +273 def _player_won(self, id: PlayerID) -> bool: +274 """ +275 Checks whether the player has won. +276 +277 Args: +278 id (PlayerID): The ID of the player to be checked. +279 +280 Returns: +281 bool: True if the player has won, False otherwise. +282 """ +283 ... +284 +285 @abc.abstractmethod +286 def _player_stats(self, id: PlayerID) -> list[float]: +287 """ +288 Returns all stats that should be sent to the player if the game has ended. +289 +290 Args: +291 id (PlayerID): The ID of the player. +292 +293 Returns: +294 int: The result of the player. +295 """ +296 ... +297 +298 +299class IServer: +300 """ +301 Interface for the server. +302 +303 This interface defines the methods that a server implementation should provide. +304 """ +305 +306 @abc.abstractmethod +307 def on_start(self): +308 """ +309 Gets called when the server starts. +310 """ +311 ... +312 +313 @abc.abstractmethod +314 def on_stop(self): +315 """ +316 Gets called when the server stops. +317 """ +318 ... +319 +320 @abc.abstractmethod +321 def on_connect(self, player: IPlayer): +322 """ +323 Gets called when a player connects. +324 Args: +325 player (IPlayer): The player that has connected. +326 """ +327 ... +328 +329 @abc.abstractmethod +330 def on_disconnect(self, player: IPlayer): +331 """ +332 Gets called when a player disconnects. +333 Args: +334 player (IPlayer): The player that has disconnected. +335 """ +336 ... +337 +338 @abc.abstractmethod +339 def on_timeout(self, player: IPlayer, failure, timeout): +340 """ +341 Gets called when a player has a timeout. +342 Args: +343 player (IPlayer): The player that has a timeout. +344 """ +345 ... +346 +347 @abc.abstractmethod +348 def on_remote_error(self, player: IPlayer, error): +349 """ +350 Gets called when an error in deferred occurs. +351 Args: +352 player (IPlayer): The player that caused the error. +353 error (Exception): Error that occurred +354 """ +355 ... +356 +357 @abc.abstractmethod +358 def on_update(self): +359 """ +360 Gets called when the server updates. +361 Frequency depends on the final implementation. +362 """ +363 ... +
Interface for an action
+23class IPlayer(abc.ABC): +24 """Interface for a player""" +25 +26 def __init__(self) -> None: +27 self.id: PlayerID = IDGenerator.generate_player_id() +28 self.user_id: Optional[int] = None +29 self.is_connected = True +30 +31 @abc.abstractmethod +32 def authenticate(self, result_callback): +33 """authenticates player +34 +35 Args: +36 result_callback (Callable): callback +37 """ +38 ... +39 +40 @abc.abstractmethod +41 def is_ready(self, result_callback) -> bool: +42 """checks if the player is ready to play +43 +44 Returns: +45 bool: returns true if the player is ready to play +46 """ +47 ... +48 +49 @abc.abstractmethod +50 def notify_start(self, game_id): +51 """notifies player that the game has started""" +52 ... +53 +54 @abc.abstractmethod +55 def get_action(self, obv, result_callback) -> IAction: +56 """gets an action from the player +57 +58 Args: +59 obv (Any): observation +60 result_callback (Callable): callback +61 +62 Returns: +63 IAction: action +64 """ +65 ... +66 +67 @abc.abstractmethod +68 def notify_end(self, result, stats): +69 """notifies player that the game has ended""" +70 ... +71 +72 @abc.abstractmethod +73 def disconnect(self, reason: str): +74 """disconnect the player""" +75 ... +76 +77 @abc.abstractmethod +78 def notify_error(self, error: str): +79 """notifies the player of an error""" +80 ... +81 +82 @abc.abstractmethod +83 def notify_info(self, msg: str): +84 """notifies the player of an information""" +85 ... +
Interface for a player
+31 @abc.abstractmethod +32 def authenticate(self, result_callback): +33 """authenticates player +34 +35 Args: +36 result_callback (Callable): callback +37 """ +38 ... +
authenticates player
+ +Args: + result_callback (Callable): callback
+40 @abc.abstractmethod +41 def is_ready(self, result_callback) -> bool: +42 """checks if the player is ready to play +43 +44 Returns: +45 bool: returns true if the player is ready to play +46 """ +47 ... +
checks if the player is ready to play
+ +Returns: + bool: returns true if the player is ready to play
+49 @abc.abstractmethod +50 def notify_start(self, game_id): +51 """notifies player that the game has started""" +52 ... +
notifies player that the game has started
+54 @abc.abstractmethod +55 def get_action(self, obv, result_callback) -> IAction: +56 """gets an action from the player +57 +58 Args: +59 obv (Any): observation +60 result_callback (Callable): callback +61 +62 Returns: +63 IAction: action +64 """ +65 ... +
gets an action from the player
+ +Args: + obv (Any): observation + result_callback (Callable): callback
+ +Returns: + IAction: action
+67 @abc.abstractmethod +68 def notify_end(self, result, stats): +69 """notifies player that the game has ended""" +70 ... +
notifies player that the game has ended
+72 @abc.abstractmethod +73 def disconnect(self, reason: str): +74 """disconnect the player""" +75 ... +
disconnect the player
+88class IGame(abc.ABC): + 89 """ + 90 Interface for a game. + 91 + 92 Attributes: + 93 id (GameID): + 94 The unique identifier of the game. + 95 players (dict[PlayerID, IPlayer]): + 96 A dictionary of players participating in the game. + 97 start_time (datetime): + 98 The start time of the game. + 99 finish_callbacks (list[Callable[["IGame"], None]]): +100 A list of callbacks to be executed when the game ends. +101 """ +102 +103 @abc.abstractmethod +104 def __init__(self, players: list[IPlayer]) -> None: +105 """ +106 Initializes a new instance of the IGame class. +107 +108 Args: +109 players (list[IPlayer]): A list of players participating in the game. +110 """ +111 self.id: GameID = IDGenerator.generate_game_id() +112 self.players = {p.id: p for p in players} +113 self.finish_callbacks: list[Callable[["IGame"], None]] = [] +114 self.scores: dict[PlayerID, float] = {p.id: 0.0 for p in players} +115 self.start_time = datetime.now() +116 self.disconnected_player_id: PlayerID | None = None +117 # dict storing all actions and possible more to be saved later. +118 # "actions" is a list of all actions in the game +119 self.game_info: dict[str, list[np.ndarray]] = {} +120 self.all_actions: list[np.ndarray] = [] +121 # When writing a game class you can fill the dict game_info with more +122 # information +123 +124 def add_finish_callback(self, callback: Callable[["IGame"], None]) -> None: +125 """ +126 Adds a callback function to be executed when the game ends. +127 +128 Args: +129 callback (Callable[["IGame"], None]): The callback function to be added. +130 """ +131 self.finish_callbacks.append(callback) +132 +133 def start(self): +134 """ +135 Notifies all players that the game has started and starts the game cycle. +136 """ +137 self.start_time = datetime.now() +138 +139 for player in self.players.values(): +140 player.notify_start(self.id) +141 +142 self._run() +143 +144 def _end(self, reason="unknown"): +145 """ +146 Notifies all players that the game has ended and writes all actions in a file. +147 +148 Args: +149 reason (str): The reason why the game has ended. Defaults to "unknown". +150 """ +151 +152 # store actions: +153 # TODO: maybe add multithreading here to ease the load on the main server thread +154 # as storing the actions can take a while +155 self.game_info["actions"] = np.array(self.all_actions) +156 +157 with open("comprl/server/game_actions/" + str(self.id) + ".pkl", "wb") as f: +158 pickle.dump(self.game_info, f) +159 +160 # notify end +161 for callback in self.finish_callbacks: +162 callback(self) +163 +164 for player in self.players.values(): +165 if player.id == self.disconnected_player_id: +166 continue +167 player.notify_end( +168 self._player_won(player.id), self._player_stats(player.id) +169 ) +170 +171 def _run(self): +172 """ +173 Collects all actions and puts them in the current_actions list. +174 """ +175 actions = {} +176 for p in self.players.values(): +177 +178 def _res(value, id=p.id): +179 if not self._validate_action(value): +180 self.players[id].disconnect("Invalid action") +181 actions[id] = value +182 if len(actions) == len(self.players): +183 # all players have submitted their actions +184 # update the game, and if the game is over, end it +185 if self.disconnected_player_id is not None: +186 return +187 self.all_actions.append([actions[p] for p in actions]) +188 if not self._update(actions): +189 self._run() +190 else: +191 self._end(reason="Player won") +192 +193 p.get_action(self._get_observation(p.id), _res) +194 +195 def force_end(self, player_id: PlayerID): +196 """forces the end of the game. Should be used when a player disconnects. +197 +198 Args: +199 player_id (PlayerID): the player that caused the forced end (disconnected) +200 """ +201 self.disconnected_player_id = player_id +202 self._end(reason="Player disconnected") +203 +204 def get_result(self) -> GameResult | None: +205 """ +206 Returns the result of the game. +207 +208 Returns: +209 GameResult: The result of the game. +210 """ +211 player_ids = list(self.players.keys()) +212 +213 game_end_state = GameEndState.DRAW +214 if self._player_won(player_ids[0]) or self._player_won(player_ids[1]): +215 game_end_state = GameEndState.WIN +216 if self.disconnected_player_id is not None: +217 game_end_state = GameEndState.DISCONNECTED +218 +219 user1_id = self.players[player_ids[0]].user_id +220 user2_id = self.players[player_ids[1]].user_id +221 +222 if user1_id is None or user2_id is None: +223 return None +224 +225 return GameResult( +226 game_id=self.id, +227 user1_id=user1_id, +228 user2_id=user2_id, +229 score_user_1=self.scores[player_ids[0]], +230 score_user_2=self.scores[player_ids[1]], +231 start_time=self.start_time, +232 end_state=game_end_state, +233 is_user1_winner=self._player_won(player_ids[0]), +234 is_user1_disconnected=(self.disconnected_player_id == player_ids[0]), +235 ) +236 +237 @abc.abstractmethod +238 def _update(self, actions: dict[PlayerID, list[float]]) -> bool: +239 """ +240 Updates the game with the players' actions. +241 +242 Returns: +243 bool: True if the game is over, False otherwise. +244 """ +245 return False +246 +247 @abc.abstractmethod +248 def _validate_action(self, action) -> bool: +249 """ +250 Checks whether an action is valid. +251 +252 Args: +253 action: The action to be validated. +254 +255 Returns: +256 bool: True if the action is valid, False otherwise. +257 """ +258 ... +259 +260 @abc.abstractmethod +261 def _get_observation(self, id: PlayerID) -> list[float]: +262 """ +263 Returns the observation for the player. +264 +265 Args: +266 id (PlayerID): The ID of the player for which the observation is requested. +267 +268 Returns: +269 list[float]: The observation for the player. +270 """ +271 ... +272 +273 @abc.abstractmethod +274 def _player_won(self, id: PlayerID) -> bool: +275 """ +276 Checks whether the player has won. +277 +278 Args: +279 id (PlayerID): The ID of the player to be checked. +280 +281 Returns: +282 bool: True if the player has won, False otherwise. +283 """ +284 ... +285 +286 @abc.abstractmethod +287 def _player_stats(self, id: PlayerID) -> list[float]: +288 """ +289 Returns all stats that should be sent to the player if the game has ended. +290 +291 Args: +292 id (PlayerID): The ID of the player. +293 +294 Returns: +295 int: The result of the player. +296 """ +297 ... +
Interface for a game.
+ +Attributes: + id (GameID): + The unique identifier of the game. + players (dict[PlayerID, IPlayer]): + A dictionary of players participating in the game. + start_time (datetime): + The start time of the game. + finish_callbacks (list[Callable[["IGame"], None]]): + A list of callbacks to be executed when the game ends.
+103 @abc.abstractmethod +104 def __init__(self, players: list[IPlayer]) -> None: +105 """ +106 Initializes a new instance of the IGame class. +107 +108 Args: +109 players (list[IPlayer]): A list of players participating in the game. +110 """ +111 self.id: GameID = IDGenerator.generate_game_id() +112 self.players = {p.id: p for p in players} +113 self.finish_callbacks: list[Callable[["IGame"], None]] = [] +114 self.scores: dict[PlayerID, float] = {p.id: 0.0 for p in players} +115 self.start_time = datetime.now() +116 self.disconnected_player_id: PlayerID | None = None +117 # dict storing all actions and possible more to be saved later. +118 # "actions" is a list of all actions in the game +119 self.game_info: dict[str, list[np.ndarray]] = {} +120 self.all_actions: list[np.ndarray] = [] +121 # When writing a game class you can fill the dict game_info with more +122 # information +
Initializes a new instance of the IGame class.
+ +Args: + players (list[IPlayer]): A list of players participating in the game.
+124 def add_finish_callback(self, callback: Callable[["IGame"], None]) -> None: +125 """ +126 Adds a callback function to be executed when the game ends. +127 +128 Args: +129 callback (Callable[["IGame"], None]): The callback function to be added. +130 """ +131 self.finish_callbacks.append(callback) +
Adds a callback function to be executed when the game ends.
+ +Args: + callback (Callable[["IGame"], None]): The callback function to be added.
+133 def start(self): +134 """ +135 Notifies all players that the game has started and starts the game cycle. +136 """ +137 self.start_time = datetime.now() +138 +139 for player in self.players.values(): +140 player.notify_start(self.id) +141 +142 self._run() +
Notifies all players that the game has started and starts the game cycle.
+195 def force_end(self, player_id: PlayerID): +196 """forces the end of the game. Should be used when a player disconnects. +197 +198 Args: +199 player_id (PlayerID): the player that caused the forced end (disconnected) +200 """ +201 self.disconnected_player_id = player_id +202 self._end(reason="Player disconnected") +
forces the end of the game. Should be used when a player disconnects.
+ +Args: + player_id (PlayerID): the player that caused the forced end (disconnected)
+204 def get_result(self) -> GameResult | None: +205 """ +206 Returns the result of the game. +207 +208 Returns: +209 GameResult: The result of the game. +210 """ +211 player_ids = list(self.players.keys()) +212 +213 game_end_state = GameEndState.DRAW +214 if self._player_won(player_ids[0]) or self._player_won(player_ids[1]): +215 game_end_state = GameEndState.WIN +216 if self.disconnected_player_id is not None: +217 game_end_state = GameEndState.DISCONNECTED +218 +219 user1_id = self.players[player_ids[0]].user_id +220 user2_id = self.players[player_ids[1]].user_id +221 +222 if user1_id is None or user2_id is None: +223 return None +224 +225 return GameResult( +226 game_id=self.id, +227 user1_id=user1_id, +228 user2_id=user2_id, +229 score_user_1=self.scores[player_ids[0]], +230 score_user_2=self.scores[player_ids[1]], +231 start_time=self.start_time, +232 end_state=game_end_state, +233 is_user1_winner=self._player_won(player_ids[0]), +234 is_user1_disconnected=(self.disconnected_player_id == player_ids[0]), +235 ) +
Returns the result of the game.
+ +Returns: + GameResult: The result of the game.
+300class IServer: +301 """ +302 Interface for the server. +303 +304 This interface defines the methods that a server implementation should provide. +305 """ +306 +307 @abc.abstractmethod +308 def on_start(self): +309 """ +310 Gets called when the server starts. +311 """ +312 ... +313 +314 @abc.abstractmethod +315 def on_stop(self): +316 """ +317 Gets called when the server stops. +318 """ +319 ... +320 +321 @abc.abstractmethod +322 def on_connect(self, player: IPlayer): +323 """ +324 Gets called when a player connects. +325 Args: +326 player (IPlayer): The player that has connected. +327 """ +328 ... +329 +330 @abc.abstractmethod +331 def on_disconnect(self, player: IPlayer): +332 """ +333 Gets called when a player disconnects. +334 Args: +335 player (IPlayer): The player that has disconnected. +336 """ +337 ... +338 +339 @abc.abstractmethod +340 def on_timeout(self, player: IPlayer, failure, timeout): +341 """ +342 Gets called when a player has a timeout. +343 Args: +344 player (IPlayer): The player that has a timeout. +345 """ +346 ... +347 +348 @abc.abstractmethod +349 def on_remote_error(self, player: IPlayer, error): +350 """ +351 Gets called when an error in deferred occurs. +352 Args: +353 player (IPlayer): The player that caused the error. +354 error (Exception): Error that occurred +355 """ +356 ... +357 +358 @abc.abstractmethod +359 def on_update(self): +360 """ +361 Gets called when the server updates. +362 Frequency depends on the final implementation. +363 """ +364 ... +
Interface for the server.
+ +This interface defines the methods that a server implementation should provide.
+307 @abc.abstractmethod +308 def on_start(self): +309 """ +310 Gets called when the server starts. +311 """ +312 ... +
Gets called when the server starts.
+314 @abc.abstractmethod +315 def on_stop(self): +316 """ +317 Gets called when the server stops. +318 """ +319 ... +
Gets called when the server stops.
+321 @abc.abstractmethod +322 def on_connect(self, player: IPlayer): +323 """ +324 Gets called when a player connects. +325 Args: +326 player (IPlayer): The player that has connected. +327 """ +328 ... +
Gets called when a player connects. +Args: + player (IPlayer): The player that has connected.
+330 @abc.abstractmethod +331 def on_disconnect(self, player: IPlayer): +332 """ +333 Gets called when a player disconnects. +334 Args: +335 player (IPlayer): The player that has disconnected. +336 """ +337 ... +
Gets called when a player disconnects. +Args: + player (IPlayer): The player that has disconnected.
+339 @abc.abstractmethod +340 def on_timeout(self, player: IPlayer, failure, timeout): +341 """ +342 Gets called when a player has a timeout. +343 Args: +344 player (IPlayer): The player that has a timeout. +345 """ +346 ... +
Gets called when a player has a timeout. +Args: + player (IPlayer): The player that has a timeout.
+348 @abc.abstractmethod +349 def on_remote_error(self, player: IPlayer, error): +350 """ +351 Gets called when an error in deferred occurs. +352 Args: +353 player (IPlayer): The player that caused the error. +354 error (Exception): Error that occurred +355 """ +356 ... +
Gets called when an error in deferred occurs. +Args: + player (IPlayer): The player that caused the error. + error (Exception): Error that occurred
+358 @abc.abstractmethod +359 def on_update(self): +360 """ +361 Gets called when the server updates. +362 Frequency depends on the final implementation. +363 """ +364 ... +
Gets called when the server updates. +Frequency depends on the final implementation.
+This module contains classes that manage game instances and players.
+1""" + 2This module contains classes that manage game instances and players. + 3""" + 4 + 5import logging as log + 6import pickle + 7from typing import Type + 8from datetime import datetime + 9from openskill.models import PlackettLuce + 10from typing import TypeAlias + 11import numpy as np + 12 + 13from comprl.server.interfaces import IGame, IPlayer + 14from comprl.shared.types import GameID, PlayerID + 15from comprl.server.data import GameData, UserData + 16from comprl.server.util import ConfigProvider + 17 + 18 + 19class GameManager: + 20 """ + 21 A class that manages game instances of a specific game type. + 22 + 23 Attributes: + 24 games (dict[GameID, IGame]): A dictionary that stores active game instances. + 25 game_type (Type[IGame]): The type of game to be managed. + 26 """ + 27 + 28 def __init__(self, game_type: Type[IGame]) -> None: + 29 self.games: dict[GameID, IGame] = {} + 30 self.game_type = game_type + 31 + 32 def start_game(self, players: list[IPlayer]) -> IGame: + 33 """ + 34 Starts a new game instance with the given players. + 35 + 36 Args: + 37 players (list[IPlayer]): A list of players participating in the game. + 38 + 39 Returns: + 40 GameID: The ID of the newly started game. + 41 """ + 42 game = self.game_type(players) + 43 self.games[game.id] = game + 44 + 45 log.debug("Game started with players: " + str([p.id for p in players])) + 46 + 47 game.add_finish_callback(self.end_game) + 48 game.start() + 49 + 50 return game + 51 + 52 def end_game(self, game: IGame) -> None: + 53 """ + 54 Ends the game instance with the specified ID. + 55 + 56 Args: + 57 game_id (GameID): The ID of the game to be ended. + 58 """ + 59 + 60 if game.id in self.games: + 61 game_result = game.get_result() + 62 if game_result is not None: + 63 GameData(ConfigProvider.get("game_data")).add(game_result) + 64 else: + 65 log.error(f"Game had no valid result. Game-ID: {game.id}") + 66 del self.games[game.id] + 67 + 68 def force_game_end(self, player_id: PlayerID): + 69 """Forces all games, that a player is currently playing, to end. + 70 + 71 Args: + 72 player_id (PlayerID): id of the player + 73 """ + 74 involved_games: list[IGame] = [] + 75 for _, game in self.games.items(): + 76 for game_player_id in game.players: + 77 if player_id == game_player_id: + 78 involved_games.append(game) + 79 break + 80 for game in involved_games: + 81 log.debug("Game was forced to end because of a disconnected player") + 82 game.force_end(player_id=player_id) + 83 + 84 def get(self, game_id: GameID) -> IGame | None: + 85 """ + 86 Retrieves the game instance with the specified ID. + 87 + 88 Args: + 89 game_id (GameID): The ID of the game to be retrieved. + 90 + 91 Returns: + 92 Optional[IGame]: The game instance if found, None otherwise. + 93 """ + 94 return self.games.get(game_id, None) + 95 + 96 def get_stored_actions(self, game_id: GameID) -> dict[str, list[np.ndarray]]: + 97 """get a game from the log file + 98 + 99 Args: +100 game_id (GameID): id of the game we want to get +101 Returns: +102 dict[str, list[np.ndarray]]: the dict containing the actions and possible +103 more info +104 """ +105 with open("comprl/server/game_actions/" + str(game_id) + ".pkl", "rb") as f: +106 return pickle.load(f) +107 +108 +109class PlayerManager: +110 """ +111 Manages connected players. +112 """ +113 +114 def __init__(self) -> None: +115 self.auth_players: dict[PlayerID, tuple[IPlayer, int]] = {} +116 self.connected_players: dict[PlayerID, IPlayer] = {} +117 +118 def add(self, player: IPlayer) -> None: +119 """ +120 Adds a player to the manager. +121 +122 Args: +123 player (IPlayer): The player object to be added. +124 +125 Returns: +126 None +127 """ +128 self.connected_players[player.id] = player +129 +130 def auth(self, player_id: PlayerID, token: str) -> bool: +131 """ +132 Authenticates a player using their player ID and token. +133 +134 Args: +135 player_id (PlayerID): The ID of the player. +136 token (str): The authentication token. +137 +138 Returns: +139 bool: True if the authentication is successful, False otherwise. +140 """ +141 player = self.connected_players.get(player_id, None) +142 # the player might have disconnected? +143 if player is None: +144 return False +145 +146 id = UserData(ConfigProvider.get("user_data")).get_user_id(token) +147 +148 if id is not None: +149 # add player to authenticated players +150 self.auth_players[player_id] = (self.connected_players[player_id], id) +151 # set user_id of player +152 player.user_id = id +153 log.debug(f"Player {player_id} authenticated") +154 return True +155 +156 return False +157 +158 def remove(self, player: IPlayer) -> None: +159 """ +160 Removes a player from the manager. +161 +162 Args: +163 player (IPlayer): The player object to be removed. +164 +165 Returns: +166 None +167 """ +168 if player.id in self.connected_players: +169 del self.connected_players[player.id] +170 +171 if player.id in self.auth_players: +172 del self.auth_players[player.id] +173 +174 def get_user_id(self, player_id: PlayerID) -> int | None: +175 """ +176 Retrieves the user ID associated with a player. +177 +178 Args: +179 player_id (PlayerID): The ID of the player. +180 +181 Returns: +182 Optional[int]: The user ID if found, None otherwise. +183 """ +184 if player_id in self.auth_players: +185 return self.auth_players[player_id][1] +186 return None +187 +188 def get_player_by_id(self, player_id: PlayerID) -> IPlayer | None: +189 """ +190 Retrieves the player object associated with a player ID. +191 This only works for authenticated players. +192 +193 Args: +194 player_id (PlayerID): The ID of the player. +195 +196 Returns: +197 Optional[IPlayer]: The player object if found, None otherwise. +198 """ +199 if player_id in self.auth_players: +200 return self.auth_players[player_id][0] +201 return None +202 +203 def broadcast_error(self, msg: str) -> None: +204 """ +205 Broadcasts a message to all connected players. +206 +207 Args: +208 msg (str): The message to be broadcasted. +209 +210 Returns: +211 None +212 """ +213 +214 for player in self.connected_players.values(): +215 player.notify_error(msg) +216 +217 def disconnect_all(self, reason: str) -> None: +218 """ +219 Disconnects all connected players. +220 +221 Args: +222 reason (str): The reason for disconnection. +223 +224 Returns: +225 None +226 """ +227 +228 for player in self.connected_players.values(): +229 player.disconnect(reason) +230 +231 def get_matchmaking_parameters(self, user_id: int) -> tuple[float, float]: +232 """ +233 Retrieves the matchmaking parameters of a user based on their ID. +234 +235 Args: +236 user_id (int): The ID of the user. +237 +238 Returns: +239 tuple[float, float]: The mu and sigma values of the user. +240 """ +241 return UserData(ConfigProvider.get("user_data")).get_matchmaking_parameters( +242 user_id +243 ) +244 +245 def update_matchmaking_parameters( +246 self, user_id: int, new_mu: float, new_sigma: float +247 ) -> None: +248 """ +249 Updates the matchmaking parameters of a user based on their ID. +250 +251 Args: +252 user_id (int): The ID of the user. +253 new_mu (float): The new mu value of the user. +254 new_sigma (float): The new sigma value of the user. +255 """ +256 UserData(ConfigProvider.get("user_data")).set_matchmaking_parameters( +257 user_id, new_mu, new_sigma +258 ) +259 +260 +261# Type of a player entry in the queue, containing the player ID, user ID, mu, sigma +262# and time they joined the queue +263QueuePlayer: TypeAlias = tuple[PlayerID, int, float, float, datetime] +264 +265 +266class MatchmakingManager: +267 """handles matchmaking between players and starts the game""" +268 +269 def __init__( +270 self, player_manager: PlayerManager, game_manager: GameManager +271 ) -> None: +272 """ +273 Initializes a MatchmakingManager object. +274 +275 Args: +276 player_manager (PlayerManager): The player manager object. +277 game_manager (GameManager): The game manager object. +278 """ +279 self.player_manager = player_manager +280 self.game_manager = game_manager +281 +282 # queue storing player id, mu, sigma and time they joined the queue +283 self._queue: list[QueuePlayer] = [] +284 # The model used for matchmaking +285 self.model = PlackettLuce() +286 self._MATCH_QUALITY_THRESHOLD = 0.8 +287 self._PERCENTAGE_MIN_PLAYERS_WAITING = 0.1 +288 +289 def try_match(self, player_id: PlayerID) -> None: +290 """ +291 Tries to add a player with the given player ID to the matchmaking queue. +292 +293 Args: +294 player_id (PlayerID): The ID of the player to match. +295 +296 Returns: +297 None +298 """ +299 player = self.player_manager.get_player_by_id(player_id) +300 if player is not None: +301 # FIXME: we might wan't to kick the player +302 +303 def __match(ready: bool): +304 if ready: +305 player.notify_info(msg="Waiting in queue") +306 self.match(player_id) +307 +308 player.is_ready(result_callback=__match) +309 +310 def match(self, player_id: PlayerID) -> None: +311 """ +312 Adds player to the queue. +313 +314 Args: +315 player_id (PlayerID): The ID of the player to be matched. +316 """ +317 user_id = self.player_manager.get_user_id(player_id) +318 if user_id is None: +319 log.error(f"Player {player_id} is not authenticated but tried to queue.") +320 return +321 mu, sigma = self.player_manager.get_matchmaking_parameters(user_id) +322 +323 # check if enough players are waiting +324 self._queue.append((player_id, user_id, mu, sigma, datetime.now())) +325 +326 log.debug(f"Player {player_id} was added to the queue") +327 +328 return +329 +330 def remove(self, player_id: PlayerID) -> None: +331 """ +332 Removes a player from the matchmaking queue. +333 +334 Args: +335 player_id (PlayerID): The ID of the player to be removed. +336 """ +337 self._queue = [ +338 (p_id, u_id, mu, sigma, time) +339 for p_id, u_id, mu, sigma, time in self._queue +340 if (p_id != player_id) +341 ] +342 +343 def _update(self, start_index: int = 0) -> None: +344 """ +345 Updates the matchmaking manager. +346 +347 start_index (int, optional): The position in queue to start matching from. +348 Used for recursion. Defaults to 0. +349 """ +350 +351 if len(self._queue) < self._min_players_waiting(): +352 return +353 +354 for i in range(start_index, len(self._queue)): +355 for j in range(i + 1, len(self._queue)): +356 # try to match all players against each other +357 if self._try_start_game(self._queue[i], self._queue[j]): +358 # players are matched and removed from queue. continue searching +359 self._update(i) +360 return +361 return +362 +363 def _min_players_waiting(self) -> int: +364 """ +365 Returns the minimum number of players that need to be waiting in the queue. +366 +367 Returns: +368 int: The minimum number of players. +369 """ +370 return int( +371 len(self.player_manager.auth_players) * self._PERCENTAGE_MIN_PLAYERS_WAITING +372 ) +373 +374 def _try_start_game(self, player1: QueuePlayer, player2: QueuePlayer) -> bool: +375 """ +376 Tries to start a game with the given players. +377 +378 Args: +379 player1 (QueuePlayer): The first player. +380 player2 (QueuePlayer): The second player. +381 +382 Returns: +383 bool: True if the game was started, False otherwise. +384 """ +385 player1_id, user1_id, _, _, _ = player1 +386 player2_id, user2_id, _, _, _ = player2 +387 match_quality = self._rate_match_quality(player1, player2) +388 # prevent the user from playing against himself +389 if user1_id == user2_id: +390 return False +391 +392 if match_quality > self._MATCH_QUALITY_THRESHOLD: +393 # match the players. We could search for best match but using the first adds +394 # a bit of diversity and the players in front of the queue are waiting +395 # longer, so its fairer for them. +396 +397 players = [ +398 self.player_manager.get_player_by_id(player1_id), +399 self.player_manager.get_player_by_id(player2_id), +400 ] +401 +402 filtered_players = [player for player in players if player is not None] +403 +404 if len(filtered_players) != 2: +405 log.error("Player was in queue but not in player manager") +406 if players[0] is None: +407 self.remove(player1_id) +408 if players[1] is None: +409 self.remove(player2_id) +410 return False +411 +412 self.remove(player1_id) +413 self.remove(player2_id) +414 +415 game = self.game_manager.start_game(filtered_players) +416 game.add_finish_callback(self._end_game) +417 return True +418 return False +419 +420 def _rate_match_quality(self, player1: QueuePlayer, player2: QueuePlayer) -> float: +421 """ +422 Rates the match quality between two players. +423 +424 Args: +425 player1 (QueuePlayer): The first player. +426 player2 (QueuePlayer): The second player. +427 +428 Returns: +429 float: The match quality. +430 """ +431 _, _, mu_p1, sigma_p1, time_stamp_p1 = player1 +432 _, _, mu_p2, sigma_p2, time_stamp_p2 = player2 +433 now = datetime.now() +434 waiting_time_p1 = (now - time_stamp_p1).total_seconds() +435 waiting_time_p2 = (now - time_stamp_p2).total_seconds() +436 combined_waiting_time = waiting_time_p1 + waiting_time_p2 +437 # calculate a bonus if the players waited a long time +438 waiting_bonus = max(0.0, (combined_waiting_time / 60 - 1) * 0.1) +439 # TODO play with this function. Maybe even use polynomial or exponential growth, +440 # depending on waiting time +441 +442 rating_p1 = self.model.create_rating([mu_p1, sigma_p1], "player1") +443 rating_p2 = self.model.create_rating([mu_p2, sigma_p2], "player2") +444 draw_prob = self.model.predict_draw([[rating_p1], [rating_p2]]) +445 return draw_prob + waiting_bonus +446 +447 def _end_game(self, game: IGame) -> None: +448 """ +449 Readds players to queue after game has ended. +450 +451 Args: +452 game (IGame): The game to be ended. +453 """ +454 # update elo values +455 result = game.get_result() +456 if result is not None: +457 mu_p1, sigma_p1 = self.player_manager.get_matchmaking_parameters( +458 result.user1_id +459 ) +460 mu_p2, sigma_p2 = self.player_manager.get_matchmaking_parameters( +461 result.user2_id +462 ) +463 rating_p1 = self.model.create_rating([mu_p1, sigma_p1], "player1") +464 rating_p2 = self.model.create_rating([mu_p2, sigma_p2], "player2") +465 [[p1], [p2]] = self.model.rate( +466 [[rating_p1], [rating_p2]], +467 scores=[result.score_user_1, result.score_user_2], +468 ) +469 self.player_manager.update_matchmaking_parameters( +470 result.user1_id, p1.mu, p1.sigma +471 ) +472 self.player_manager.update_matchmaking_parameters( +473 result.user2_id, p2.mu, p2.sigma +474 ) +475 +476 for _, p in game.players.items(): +477 self.try_match(p.id) +
20class GameManager: + 21 """ + 22 A class that manages game instances of a specific game type. + 23 + 24 Attributes: + 25 games (dict[GameID, IGame]): A dictionary that stores active game instances. + 26 game_type (Type[IGame]): The type of game to be managed. + 27 """ + 28 + 29 def __init__(self, game_type: Type[IGame]) -> None: + 30 self.games: dict[GameID, IGame] = {} + 31 self.game_type = game_type + 32 + 33 def start_game(self, players: list[IPlayer]) -> IGame: + 34 """ + 35 Starts a new game instance with the given players. + 36 + 37 Args: + 38 players (list[IPlayer]): A list of players participating in the game. + 39 + 40 Returns: + 41 GameID: The ID of the newly started game. + 42 """ + 43 game = self.game_type(players) + 44 self.games[game.id] = game + 45 + 46 log.debug("Game started with players: " + str([p.id for p in players])) + 47 + 48 game.add_finish_callback(self.end_game) + 49 game.start() + 50 + 51 return game + 52 + 53 def end_game(self, game: IGame) -> None: + 54 """ + 55 Ends the game instance with the specified ID. + 56 + 57 Args: + 58 game_id (GameID): The ID of the game to be ended. + 59 """ + 60 + 61 if game.id in self.games: + 62 game_result = game.get_result() + 63 if game_result is not None: + 64 GameData(ConfigProvider.get("game_data")).add(game_result) + 65 else: + 66 log.error(f"Game had no valid result. Game-ID: {game.id}") + 67 del self.games[game.id] + 68 + 69 def force_game_end(self, player_id: PlayerID): + 70 """Forces all games, that a player is currently playing, to end. + 71 + 72 Args: + 73 player_id (PlayerID): id of the player + 74 """ + 75 involved_games: list[IGame] = [] + 76 for _, game in self.games.items(): + 77 for game_player_id in game.players: + 78 if player_id == game_player_id: + 79 involved_games.append(game) + 80 break + 81 for game in involved_games: + 82 log.debug("Game was forced to end because of a disconnected player") + 83 game.force_end(player_id=player_id) + 84 + 85 def get(self, game_id: GameID) -> IGame | None: + 86 """ + 87 Retrieves the game instance with the specified ID. + 88 + 89 Args: + 90 game_id (GameID): The ID of the game to be retrieved. + 91 + 92 Returns: + 93 Optional[IGame]: The game instance if found, None otherwise. + 94 """ + 95 return self.games.get(game_id, None) + 96 + 97 def get_stored_actions(self, game_id: GameID) -> dict[str, list[np.ndarray]]: + 98 """get a game from the log file + 99 +100 Args: +101 game_id (GameID): id of the game we want to get +102 Returns: +103 dict[str, list[np.ndarray]]: the dict containing the actions and possible +104 more info +105 """ +106 with open("comprl/server/game_actions/" + str(game_id) + ".pkl", "rb") as f: +107 return pickle.load(f) +
A class that manages game instances of a specific game type.
+ +Attributes: + games (dict[GameID, IGame]): A dictionary that stores active game instances. + game_type (Type[IGame]): The type of game to be managed.
+33 def start_game(self, players: list[IPlayer]) -> IGame: +34 """ +35 Starts a new game instance with the given players. +36 +37 Args: +38 players (list[IPlayer]): A list of players participating in the game. +39 +40 Returns: +41 GameID: The ID of the newly started game. +42 """ +43 game = self.game_type(players) +44 self.games[game.id] = game +45 +46 log.debug("Game started with players: " + str([p.id for p in players])) +47 +48 game.add_finish_callback(self.end_game) +49 game.start() +50 +51 return game +
Starts a new game instance with the given players.
+ +Args: + players (list[IPlayer]): A list of players participating in the game.
+ +Returns: + GameID: The ID of the newly started game.
+53 def end_game(self, game: IGame) -> None: +54 """ +55 Ends the game instance with the specified ID. +56 +57 Args: +58 game_id (GameID): The ID of the game to be ended. +59 """ +60 +61 if game.id in self.games: +62 game_result = game.get_result() +63 if game_result is not None: +64 GameData(ConfigProvider.get("game_data")).add(game_result) +65 else: +66 log.error(f"Game had no valid result. Game-ID: {game.id}") +67 del self.games[game.id] +
Ends the game instance with the specified ID.
+ +Args: + game_id (GameID): The ID of the game to be ended.
+69 def force_game_end(self, player_id: PlayerID): +70 """Forces all games, that a player is currently playing, to end. +71 +72 Args: +73 player_id (PlayerID): id of the player +74 """ +75 involved_games: list[IGame] = [] +76 for _, game in self.games.items(): +77 for game_player_id in game.players: +78 if player_id == game_player_id: +79 involved_games.append(game) +80 break +81 for game in involved_games: +82 log.debug("Game was forced to end because of a disconnected player") +83 game.force_end(player_id=player_id) +
Forces all games, that a player is currently playing, to end.
+ +Args: + player_id (PlayerID): id of the player
+85 def get(self, game_id: GameID) -> IGame | None: +86 """ +87 Retrieves the game instance with the specified ID. +88 +89 Args: +90 game_id (GameID): The ID of the game to be retrieved. +91 +92 Returns: +93 Optional[IGame]: The game instance if found, None otherwise. +94 """ +95 return self.games.get(game_id, None) +
Retrieves the game instance with the specified ID.
+ +Args: + game_id (GameID): The ID of the game to be retrieved.
+ +Returns: + Optional[IGame]: The game instance if found, None otherwise.
+97 def get_stored_actions(self, game_id: GameID) -> dict[str, list[np.ndarray]]: + 98 """get a game from the log file + 99 +100 Args: +101 game_id (GameID): id of the game we want to get +102 Returns: +103 dict[str, list[np.ndarray]]: the dict containing the actions and possible +104 more info +105 """ +106 with open("comprl/server/game_actions/" + str(game_id) + ".pkl", "rb") as f: +107 return pickle.load(f) +
get a game from the log file
+ +Args: + game_id (GameID): id of the game we want to get +Returns: + dict[str, list[np.ndarray]]: the dict containing the actions and possible + more info
+110class PlayerManager: +111 """ +112 Manages connected players. +113 """ +114 +115 def __init__(self) -> None: +116 self.auth_players: dict[PlayerID, tuple[IPlayer, int]] = {} +117 self.connected_players: dict[PlayerID, IPlayer] = {} +118 +119 def add(self, player: IPlayer) -> None: +120 """ +121 Adds a player to the manager. +122 +123 Args: +124 player (IPlayer): The player object to be added. +125 +126 Returns: +127 None +128 """ +129 self.connected_players[player.id] = player +130 +131 def auth(self, player_id: PlayerID, token: str) -> bool: +132 """ +133 Authenticates a player using their player ID and token. +134 +135 Args: +136 player_id (PlayerID): The ID of the player. +137 token (str): The authentication token. +138 +139 Returns: +140 bool: True if the authentication is successful, False otherwise. +141 """ +142 player = self.connected_players.get(player_id, None) +143 # the player might have disconnected? +144 if player is None: +145 return False +146 +147 id = UserData(ConfigProvider.get("user_data")).get_user_id(token) +148 +149 if id is not None: +150 # add player to authenticated players +151 self.auth_players[player_id] = (self.connected_players[player_id], id) +152 # set user_id of player +153 player.user_id = id +154 log.debug(f"Player {player_id} authenticated") +155 return True +156 +157 return False +158 +159 def remove(self, player: IPlayer) -> None: +160 """ +161 Removes a player from the manager. +162 +163 Args: +164 player (IPlayer): The player object to be removed. +165 +166 Returns: +167 None +168 """ +169 if player.id in self.connected_players: +170 del self.connected_players[player.id] +171 +172 if player.id in self.auth_players: +173 del self.auth_players[player.id] +174 +175 def get_user_id(self, player_id: PlayerID) -> int | None: +176 """ +177 Retrieves the user ID associated with a player. +178 +179 Args: +180 player_id (PlayerID): The ID of the player. +181 +182 Returns: +183 Optional[int]: The user ID if found, None otherwise. +184 """ +185 if player_id in self.auth_players: +186 return self.auth_players[player_id][1] +187 return None +188 +189 def get_player_by_id(self, player_id: PlayerID) -> IPlayer | None: +190 """ +191 Retrieves the player object associated with a player ID. +192 This only works for authenticated players. +193 +194 Args: +195 player_id (PlayerID): The ID of the player. +196 +197 Returns: +198 Optional[IPlayer]: The player object if found, None otherwise. +199 """ +200 if player_id in self.auth_players: +201 return self.auth_players[player_id][0] +202 return None +203 +204 def broadcast_error(self, msg: str) -> None: +205 """ +206 Broadcasts a message to all connected players. +207 +208 Args: +209 msg (str): The message to be broadcasted. +210 +211 Returns: +212 None +213 """ +214 +215 for player in self.connected_players.values(): +216 player.notify_error(msg) +217 +218 def disconnect_all(self, reason: str) -> None: +219 """ +220 Disconnects all connected players. +221 +222 Args: +223 reason (str): The reason for disconnection. +224 +225 Returns: +226 None +227 """ +228 +229 for player in self.connected_players.values(): +230 player.disconnect(reason) +231 +232 def get_matchmaking_parameters(self, user_id: int) -> tuple[float, float]: +233 """ +234 Retrieves the matchmaking parameters of a user based on their ID. +235 +236 Args: +237 user_id (int): The ID of the user. +238 +239 Returns: +240 tuple[float, float]: The mu and sigma values of the user. +241 """ +242 return UserData(ConfigProvider.get("user_data")).get_matchmaking_parameters( +243 user_id +244 ) +245 +246 def update_matchmaking_parameters( +247 self, user_id: int, new_mu: float, new_sigma: float +248 ) -> None: +249 """ +250 Updates the matchmaking parameters of a user based on their ID. +251 +252 Args: +253 user_id (int): The ID of the user. +254 new_mu (float): The new mu value of the user. +255 new_sigma (float): The new sigma value of the user. +256 """ +257 UserData(ConfigProvider.get("user_data")).set_matchmaking_parameters( +258 user_id, new_mu, new_sigma +259 ) +
Manages connected players.
+119 def add(self, player: IPlayer) -> None: +120 """ +121 Adds a player to the manager. +122 +123 Args: +124 player (IPlayer): The player object to be added. +125 +126 Returns: +127 None +128 """ +129 self.connected_players[player.id] = player +
Adds a player to the manager.
+ +Args: + player (IPlayer): The player object to be added.
+ +Returns: + None
+131 def auth(self, player_id: PlayerID, token: str) -> bool: +132 """ +133 Authenticates a player using their player ID and token. +134 +135 Args: +136 player_id (PlayerID): The ID of the player. +137 token (str): The authentication token. +138 +139 Returns: +140 bool: True if the authentication is successful, False otherwise. +141 """ +142 player = self.connected_players.get(player_id, None) +143 # the player might have disconnected? +144 if player is None: +145 return False +146 +147 id = UserData(ConfigProvider.get("user_data")).get_user_id(token) +148 +149 if id is not None: +150 # add player to authenticated players +151 self.auth_players[player_id] = (self.connected_players[player_id], id) +152 # set user_id of player +153 player.user_id = id +154 log.debug(f"Player {player_id} authenticated") +155 return True +156 +157 return False +
Authenticates a player using their player ID and token.
+ +Args: + player_id (PlayerID): The ID of the player. + token (str): The authentication token.
+ +Returns: + bool: True if the authentication is successful, False otherwise.
+159 def remove(self, player: IPlayer) -> None: +160 """ +161 Removes a player from the manager. +162 +163 Args: +164 player (IPlayer): The player object to be removed. +165 +166 Returns: +167 None +168 """ +169 if player.id in self.connected_players: +170 del self.connected_players[player.id] +171 +172 if player.id in self.auth_players: +173 del self.auth_players[player.id] +
Removes a player from the manager.
+ +Args: + player (IPlayer): The player object to be removed.
+ +Returns: + None
+175 def get_user_id(self, player_id: PlayerID) -> int | None: +176 """ +177 Retrieves the user ID associated with a player. +178 +179 Args: +180 player_id (PlayerID): The ID of the player. +181 +182 Returns: +183 Optional[int]: The user ID if found, None otherwise. +184 """ +185 if player_id in self.auth_players: +186 return self.auth_players[player_id][1] +187 return None +
Retrieves the user ID associated with a player.
+ +Args: + player_id (PlayerID): The ID of the player.
+ +Returns: + Optional[int]: The user ID if found, None otherwise.
+189 def get_player_by_id(self, player_id: PlayerID) -> IPlayer | None: +190 """ +191 Retrieves the player object associated with a player ID. +192 This only works for authenticated players. +193 +194 Args: +195 player_id (PlayerID): The ID of the player. +196 +197 Returns: +198 Optional[IPlayer]: The player object if found, None otherwise. +199 """ +200 if player_id in self.auth_players: +201 return self.auth_players[player_id][0] +202 return None +
Retrieves the player object associated with a player ID. +This only works for authenticated players.
+ +Args: + player_id (PlayerID): The ID of the player.
+ +Returns: + Optional[IPlayer]: The player object if found, None otherwise.
+204 def broadcast_error(self, msg: str) -> None: +205 """ +206 Broadcasts a message to all connected players. +207 +208 Args: +209 msg (str): The message to be broadcasted. +210 +211 Returns: +212 None +213 """ +214 +215 for player in self.connected_players.values(): +216 player.notify_error(msg) +
Broadcasts a message to all connected players.
+ +Args: + msg (str): The message to be broadcasted.
+ +Returns: + None
+218 def disconnect_all(self, reason: str) -> None: +219 """ +220 Disconnects all connected players. +221 +222 Args: +223 reason (str): The reason for disconnection. +224 +225 Returns: +226 None +227 """ +228 +229 for player in self.connected_players.values(): +230 player.disconnect(reason) +
Disconnects all connected players.
+ +Args: + reason (str): The reason for disconnection.
+ +Returns: + None
+232 def get_matchmaking_parameters(self, user_id: int) -> tuple[float, float]: +233 """ +234 Retrieves the matchmaking parameters of a user based on their ID. +235 +236 Args: +237 user_id (int): The ID of the user. +238 +239 Returns: +240 tuple[float, float]: The mu and sigma values of the user. +241 """ +242 return UserData(ConfigProvider.get("user_data")).get_matchmaking_parameters( +243 user_id +244 ) +
Retrieves the matchmaking parameters of a user based on their ID.
+ +Args: + user_id (int): The ID of the user.
+ +Returns: + tuple[float, float]: The mu and sigma values of the user.
+246 def update_matchmaking_parameters( +247 self, user_id: int, new_mu: float, new_sigma: float +248 ) -> None: +249 """ +250 Updates the matchmaking parameters of a user based on their ID. +251 +252 Args: +253 user_id (int): The ID of the user. +254 new_mu (float): The new mu value of the user. +255 new_sigma (float): The new sigma value of the user. +256 """ +257 UserData(ConfigProvider.get("user_data")).set_matchmaking_parameters( +258 user_id, new_mu, new_sigma +259 ) +
Updates the matchmaking parameters of a user based on their ID.
+ +Args: + user_id (int): The ID of the user. + new_mu (float): The new mu value of the user. + new_sigma (float): The new sigma value of the user.
+267class MatchmakingManager: +268 """handles matchmaking between players and starts the game""" +269 +270 def __init__( +271 self, player_manager: PlayerManager, game_manager: GameManager +272 ) -> None: +273 """ +274 Initializes a MatchmakingManager object. +275 +276 Args: +277 player_manager (PlayerManager): The player manager object. +278 game_manager (GameManager): The game manager object. +279 """ +280 self.player_manager = player_manager +281 self.game_manager = game_manager +282 +283 # queue storing player id, mu, sigma and time they joined the queue +284 self._queue: list[QueuePlayer] = [] +285 # The model used for matchmaking +286 self.model = PlackettLuce() +287 self._MATCH_QUALITY_THRESHOLD = 0.8 +288 self._PERCENTAGE_MIN_PLAYERS_WAITING = 0.1 +289 +290 def try_match(self, player_id: PlayerID) -> None: +291 """ +292 Tries to add a player with the given player ID to the matchmaking queue. +293 +294 Args: +295 player_id (PlayerID): The ID of the player to match. +296 +297 Returns: +298 None +299 """ +300 player = self.player_manager.get_player_by_id(player_id) +301 if player is not None: +302 # FIXME: we might wan't to kick the player +303 +304 def __match(ready: bool): +305 if ready: +306 player.notify_info(msg="Waiting in queue") +307 self.match(player_id) +308 +309 player.is_ready(result_callback=__match) +310 +311 def match(self, player_id: PlayerID) -> None: +312 """ +313 Adds player to the queue. +314 +315 Args: +316 player_id (PlayerID): The ID of the player to be matched. +317 """ +318 user_id = self.player_manager.get_user_id(player_id) +319 if user_id is None: +320 log.error(f"Player {player_id} is not authenticated but tried to queue.") +321 return +322 mu, sigma = self.player_manager.get_matchmaking_parameters(user_id) +323 +324 # check if enough players are waiting +325 self._queue.append((player_id, user_id, mu, sigma, datetime.now())) +326 +327 log.debug(f"Player {player_id} was added to the queue") +328 +329 return +330 +331 def remove(self, player_id: PlayerID) -> None: +332 """ +333 Removes a player from the matchmaking queue. +334 +335 Args: +336 player_id (PlayerID): The ID of the player to be removed. +337 """ +338 self._queue = [ +339 (p_id, u_id, mu, sigma, time) +340 for p_id, u_id, mu, sigma, time in self._queue +341 if (p_id != player_id) +342 ] +343 +344 def _update(self, start_index: int = 0) -> None: +345 """ +346 Updates the matchmaking manager. +347 +348 start_index (int, optional): The position in queue to start matching from. +349 Used for recursion. Defaults to 0. +350 """ +351 +352 if len(self._queue) < self._min_players_waiting(): +353 return +354 +355 for i in range(start_index, len(self._queue)): +356 for j in range(i + 1, len(self._queue)): +357 # try to match all players against each other +358 if self._try_start_game(self._queue[i], self._queue[j]): +359 # players are matched and removed from queue. continue searching +360 self._update(i) +361 return +362 return +363 +364 def _min_players_waiting(self) -> int: +365 """ +366 Returns the minimum number of players that need to be waiting in the queue. +367 +368 Returns: +369 int: The minimum number of players. +370 """ +371 return int( +372 len(self.player_manager.auth_players) * self._PERCENTAGE_MIN_PLAYERS_WAITING +373 ) +374 +375 def _try_start_game(self, player1: QueuePlayer, player2: QueuePlayer) -> bool: +376 """ +377 Tries to start a game with the given players. +378 +379 Args: +380 player1 (QueuePlayer): The first player. +381 player2 (QueuePlayer): The second player. +382 +383 Returns: +384 bool: True if the game was started, False otherwise. +385 """ +386 player1_id, user1_id, _, _, _ = player1 +387 player2_id, user2_id, _, _, _ = player2 +388 match_quality = self._rate_match_quality(player1, player2) +389 # prevent the user from playing against himself +390 if user1_id == user2_id: +391 return False +392 +393 if match_quality > self._MATCH_QUALITY_THRESHOLD: +394 # match the players. We could search for best match but using the first adds +395 # a bit of diversity and the players in front of the queue are waiting +396 # longer, so its fairer for them. +397 +398 players = [ +399 self.player_manager.get_player_by_id(player1_id), +400 self.player_manager.get_player_by_id(player2_id), +401 ] +402 +403 filtered_players = [player for player in players if player is not None] +404 +405 if len(filtered_players) != 2: +406 log.error("Player was in queue but not in player manager") +407 if players[0] is None: +408 self.remove(player1_id) +409 if players[1] is None: +410 self.remove(player2_id) +411 return False +412 +413 self.remove(player1_id) +414 self.remove(player2_id) +415 +416 game = self.game_manager.start_game(filtered_players) +417 game.add_finish_callback(self._end_game) +418 return True +419 return False +420 +421 def _rate_match_quality(self, player1: QueuePlayer, player2: QueuePlayer) -> float: +422 """ +423 Rates the match quality between two players. +424 +425 Args: +426 player1 (QueuePlayer): The first player. +427 player2 (QueuePlayer): The second player. +428 +429 Returns: +430 float: The match quality. +431 """ +432 _, _, mu_p1, sigma_p1, time_stamp_p1 = player1 +433 _, _, mu_p2, sigma_p2, time_stamp_p2 = player2 +434 now = datetime.now() +435 waiting_time_p1 = (now - time_stamp_p1).total_seconds() +436 waiting_time_p2 = (now - time_stamp_p2).total_seconds() +437 combined_waiting_time = waiting_time_p1 + waiting_time_p2 +438 # calculate a bonus if the players waited a long time +439 waiting_bonus = max(0.0, (combined_waiting_time / 60 - 1) * 0.1) +440 # TODO play with this function. Maybe even use polynomial or exponential growth, +441 # depending on waiting time +442 +443 rating_p1 = self.model.create_rating([mu_p1, sigma_p1], "player1") +444 rating_p2 = self.model.create_rating([mu_p2, sigma_p2], "player2") +445 draw_prob = self.model.predict_draw([[rating_p1], [rating_p2]]) +446 return draw_prob + waiting_bonus +447 +448 def _end_game(self, game: IGame) -> None: +449 """ +450 Readds players to queue after game has ended. +451 +452 Args: +453 game (IGame): The game to be ended. +454 """ +455 # update elo values +456 result = game.get_result() +457 if result is not None: +458 mu_p1, sigma_p1 = self.player_manager.get_matchmaking_parameters( +459 result.user1_id +460 ) +461 mu_p2, sigma_p2 = self.player_manager.get_matchmaking_parameters( +462 result.user2_id +463 ) +464 rating_p1 = self.model.create_rating([mu_p1, sigma_p1], "player1") +465 rating_p2 = self.model.create_rating([mu_p2, sigma_p2], "player2") +466 [[p1], [p2]] = self.model.rate( +467 [[rating_p1], [rating_p2]], +468 scores=[result.score_user_1, result.score_user_2], +469 ) +470 self.player_manager.update_matchmaking_parameters( +471 result.user1_id, p1.mu, p1.sigma +472 ) +473 self.player_manager.update_matchmaking_parameters( +474 result.user2_id, p2.mu, p2.sigma +475 ) +476 +477 for _, p in game.players.items(): +478 self.try_match(p.id) +
handles matchmaking between players and starts the game
+270 def __init__( +271 self, player_manager: PlayerManager, game_manager: GameManager +272 ) -> None: +273 """ +274 Initializes a MatchmakingManager object. +275 +276 Args: +277 player_manager (PlayerManager): The player manager object. +278 game_manager (GameManager): The game manager object. +279 """ +280 self.player_manager = player_manager +281 self.game_manager = game_manager +282 +283 # queue storing player id, mu, sigma and time they joined the queue +284 self._queue: list[QueuePlayer] = [] +285 # The model used for matchmaking +286 self.model = PlackettLuce() +287 self._MATCH_QUALITY_THRESHOLD = 0.8 +288 self._PERCENTAGE_MIN_PLAYERS_WAITING = 0.1 +
Initializes a MatchmakingManager object.
+ +Args: + player_manager (PlayerManager): The player manager object. + game_manager (GameManager): The game manager object.
+290 def try_match(self, player_id: PlayerID) -> None: +291 """ +292 Tries to add a player with the given player ID to the matchmaking queue. +293 +294 Args: +295 player_id (PlayerID): The ID of the player to match. +296 +297 Returns: +298 None +299 """ +300 player = self.player_manager.get_player_by_id(player_id) +301 if player is not None: +302 # FIXME: we might wan't to kick the player +303 +304 def __match(ready: bool): +305 if ready: +306 player.notify_info(msg="Waiting in queue") +307 self.match(player_id) +308 +309 player.is_ready(result_callback=__match) +
Tries to add a player with the given player ID to the matchmaking queue.
+ +Args: + player_id (PlayerID): The ID of the player to match.
+ +Returns: + None
+311 def match(self, player_id: PlayerID) -> None: +312 """ +313 Adds player to the queue. +314 +315 Args: +316 player_id (PlayerID): The ID of the player to be matched. +317 """ +318 user_id = self.player_manager.get_user_id(player_id) +319 if user_id is None: +320 log.error(f"Player {player_id} is not authenticated but tried to queue.") +321 return +322 mu, sigma = self.player_manager.get_matchmaking_parameters(user_id) +323 +324 # check if enough players are waiting +325 self._queue.append((player_id, user_id, mu, sigma, datetime.now())) +326 +327 log.debug(f"Player {player_id} was added to the queue") +328 +329 return +
Adds player to the queue.
+ +Args: + player_id (PlayerID): The ID of the player to be matched.
+331 def remove(self, player_id: PlayerID) -> None: +332 """ +333 Removes a player from the matchmaking queue. +334 +335 Args: +336 player_id (PlayerID): The ID of the player to be removed. +337 """ +338 self._queue = [ +339 (p_id, u_id, mu, sigma, time) +340 for p_id, u_id, mu, sigma, time in self._queue +341 if (p_id != player_id) +342 ] +
Removes a player from the matchmaking queue.
+ +Args: + player_id (PlayerID): The ID of the player to be removed.
+contains the networking components of the server
+1"""contains the networking components of the server""" + 2 + 3import logging as log + 4from typing import Callable, Any + 5 + 6from twisted.internet.interfaces import IAddress + 7from twisted.internet.protocol import Protocol, ServerFactory + 8from twisted.protocols import amp + 9from twisted.internet import reactor + 10from twisted.internet.task import LoopingCall + 11 + 12from comprl.server.interfaces import IPlayer, IServer + 13from comprl.server.util import ConfigProvider + 14from comprl.shared.commands import Auth, EndGame, Error, Ready, StartGame, Step, Message + 15from comprl.shared.types import GameID + 16 + 17VERSION: int = 1 + 18 + 19 + 20class COMPServerProtocol(amp.AMP): + 21 """ + 22 Represents the server-side protocol for the COMP server. + 23 + 24 This class extends the `amp.AMP` class and provides methods for handling + 25 various events and interactions with the client. + 26 + 27 Attributes: + 28 connection_made_callbacks (list[Callable[[], None]]): List of callbacks + 29 to be executed when the connection is made. + 30 connection_lost_callbacks (list[Callable[[], None]]): List of callbacks + 31 to be executed when the connection is lost. + 32 """ + 33 + 34 def __init__(self, boxReceiver=None, locator=None): + 35 super().__init__(boxReceiver, locator) + 36 + 37 self.connection_made_callbacks: list[Callable[[], None]] = [] + 38 self.connection_lost_callbacks: list[Callable[[], None]] = [] + 39 self.connection_timeout_callbacks: list[Callable[[Any, Any], None]] = [] + 40 self.connection_error_callbacks: list[Callable[[Any], None]] = [] + 41 + 42 def add_connection_made_callback(self, callback: Callable[[], None]): + 43 """adds callback that is executed, when the connection is made + 44 + 45 Args: + 46 callback (function): callback to execute, when the connection is made + 47 + 48 Returns: + 49 None + 50 """ + 51 self.connection_made_callbacks.append(callback) + 52 + 53 def add_connection_lost_callback(self, callback: Callable[[], None]): + 54 """ + 55 Adds a callback function to be executed when the connection is lost. + 56 + 57 Args: + 58 callback: The callback function to be added. + 59 + 60 Returns: + 61 None + 62 """ + 63 self.connection_lost_callbacks.append(callback) + 64 + 65 def add_connection_timeout_callback(self, callback: Callable[[Any, Any], None]): + 66 """ + 67 Adds a callback function to be executed when there is a timeout. + 68 + 69 Args: + 70 callback: The callback function to be added. + 71 + 72 Returns: + 73 None + 74 """ + 75 self.connection_timeout_callbacks.append(callback) + 76 + 77 def add_connection_error_callback(self, callback: Callable[[Any], None]): + 78 """ + 79 Adds a callback function to be executed when there occurs an error in deferred. + 80 + 81 Args: + 82 callback: The callback function to be added. + 83 + 84 Returns: + 85 None + 86 """ + 87 self.connection_error_callbacks.append(callback) + 88 + 89 def connectionMade(self) -> None: + 90 """ + 91 Called when the connection to the client is established. + 92 + 93 Returns: + 94 None + 95 """ + 96 # broadcast to callbacks + 97 for c in self.connection_made_callbacks: + 98 c() + 99 +100 return super().connectionMade() +101 +102 def connectionLost(self, reason): +103 """ +104 Called when the connection to the client is lost. +105 +106 Args: +107 reason: The reason for the connection loss. +108 +109 Returns: +110 None +111 """ +112 # log.debug("connection to client lost") +113 for c in self.connection_lost_callbacks: +114 c() +115 +116 super().connectionLost(reason) +117 +118 def connectionTimeout(self, failure, timeout) -> None: +119 """ +120 Handles the timeout event for a connection. +121 +122 Args: +123 failure: The failure object representing the timeout. +124 timeout: The timeout value in seconds. +125 Returns: +126 None +127 """ +128 # log.debug("connection timeout") +129 for c in self.connection_timeout_callbacks: +130 c(failure, timeout) +131 +132 def connection_error(self, error) -> None: +133 """Is called when an error in Deferred occurs +134 +135 Args: +136 place : where the error was caused +137 error : description of the error +138 """ +139 for c in self.connection_error_callbacks: +140 c(error) +141 +142 def get_token(self, return_callback: Callable[[str], None]) -> None: +143 """ +144 Retrieves a token from the client and calls the return_callback +145 function with the token. +146 +147 Args: +148 return_callback (Callable[[str], None]): A callback function that takes +149 a string parameter. +150 +151 Returns: +152 None +153 """ +154 +155 def callback(res): +156 if res["version"] == VERSION: +157 return_callback(res["token"].decode()) +158 else: +159 log.error("Client with wrong version tried to authenticate.") +160 self.send_error(msg="Tried to connect with wrong version") +161 self.disconnect() +162 +163 return ( +164 self.callRemote(Auth) +165 .addCallback(callback=callback) +166 .addTimeout(ConfigProvider.get("timeout"), reactor, self.connectionTimeout) +167 .addErrback(self.connection_error) +168 ) +169 +170 def is_ready(self, return_callback: Callable[[bool], None]) -> bool: +171 """ +172 Checks if the client is ready. +173 +174 Args: +175 return_callback (Callable[[bool], None]): A callback function that will +176 be called with the result of the check. +177 +178 Returns: +179 bool: Containing the information if the client is ready. +180 """ +181 return ( +182 self.callRemote(Ready) +183 .addCallback(callback=lambda res: return_callback(res["ready"])) +184 .addTimeout(ConfigProvider.get("timeout"), reactor, self.connectionTimeout) +185 .addErrback(self.connection_error) +186 ) +187 +188 def notify_start(self, game_id: GameID) -> None: +189 """ +190 Notifies the client that a game has started. +191 +192 Args: +193 game_id (GameID): The ID of the game that has started. +194 """ +195 return self.callRemote(StartGame, game_id=game_id.bytes) +196 +197 def get_step( +198 self, obv: list[float], return_callback: Callable[[list], None] +199 ) -> None: +200 """ +201 Sends an observation to the remote client and retrieves the corresponding +202 action. +203 +204 Args: +205 obv (list[float]): The observation to send to the client. +206 return_callback (Callable[[list], None]): The callback function to be +207 called with the retrieved action. +208 +209 Returns: +210 None +211 """ +212 return ( +213 self.callRemote(Step, obv=obv) +214 .addCallback(callback=lambda res: return_callback(res["action"])) +215 .addTimeout(ConfigProvider.get("timeout"), reactor, self.connectionTimeout) +216 .addErrback(self.connection_error) +217 ) +218 +219 def notify_end(self, result, stats) -> None: +220 """ +221 Notifies the remote client about the end of the game. +222 +223 Args: +224 result: The result of the game. +225 stats: The statistics of the game. +226 +227 Returns: +228 None +229 """ +230 return ( +231 self.callRemote(EndGame, result=result, stats=stats) +232 .addTimeout(ConfigProvider.get("timeout"), reactor, self.connectionTimeout) +233 .addErrback(self.connection_error) +234 ) +235 +236 def send_error(self, msg: str): +237 """ +238 Send an error string to the client. +239 +240 Args: +241 msg (str): The error message to send. +242 +243 Returns: +244 None +245 """ +246 return self.callRemote(Error, msg=str.encode(msg)).addErrback( +247 self.connection_error +248 ) +249 +250 def send_message(self, msg: str): +251 """ +252 Send a message string to the client. +253 +254 Args: +255 msg (str): The message to send. +256 +257 Returns: +258 None +259 """ +260 return self.callRemote(Message, msg=str.encode(msg)).addErrback( +261 self.connection_error +262 ) +263 +264 def disconnect(self): +265 """ +266 Disconnects the client from the server. +267 +268 Returns: +269 None +270 """ +271 self.transport.loseConnection() +272 +273 +274class COMPPlayer(IPlayer): +275 """Represents a player in the COMP game. +276 +277 Attributes: +278 connection (COMPServerProtocol): The networking connection for the player. +279 """ +280 +281 def __init__(self, connection: COMPServerProtocol) -> None: +282 """Initialize the COMPPlayer instance. +283 +284 Args: +285 connection (COMPServerProtocol): The networking connection for the player. +286 """ +287 super().__init__() +288 self.connection: COMPServerProtocol = connection +289 self.is_connected: bool = False +290 +291 def set_connection(c: bool): +292 self.is_connected = c +293 +294 self.connection.add_connection_made_callback( +295 callback=lambda: set_connection(True) +296 ) +297 self.connection.add_connection_lost_callback( +298 callback=lambda: set_connection(False) +299 ) +300 +301 def authenticate(self, result_callback): +302 """Authenticates the player. +303 +304 Args: +305 result_callback (callback function): +306 The callback to handle the authentication result. +307 +308 Returns: +309 token (string): The authentication token. +310 """ +311 if self.is_connected: +312 self.connection.get_token(result_callback) +313 +314 def is_ready(self, result_callback) -> bool: +315 """Checks if the player is ready to play. +316 +317 Args: +318 result_callback (callback function): The callback to handle the result. +319 +320 Returns: +321 bool: True if the player is ready to play, False otherwise. +322 """ +323 return self.connection.is_ready(result_callback) +324 +325 def notify_start(self, game_id: GameID): +326 """Notifies the player about the start of the game. +327 +328 Args: +329 game_id (GameID): The ID of the game. +330 """ +331 if self.is_connected: +332 self.connection.notify_start(game_id=game_id) +333 +334 def get_action(self, obv, result_callback): +335 """Receives the action from the server. +336 +337 Args: +338 obv (any): The observation. +339 result_callback (callback function): The callback to handle the result. +340 """ +341 if self.is_connected: +342 self.connection.get_step(obv, result_callback) +343 +344 def notify_end(self, result, stats): +345 """Called when the game ends. +346 +347 Args: +348 result (any): The result of the game. +349 stats (any): The stats of the game. +350 """ +351 if self.is_connected: +352 self.connection.notify_end(result=result, stats=stats) +353 +354 def disconnect(self, reason: str): +355 """Disconnects the player. +356 +357 Args: +358 reason (str): The reason for the disconnection. +359 """ +360 self.connection.send_error(reason) +361 self.connection.disconnect() +362 +363 def notify_error(self, error: str): +364 """Notifies the player of an error. +365 +366 Args: +367 error (str): The error message. +368 """ +369 if self.is_connected: +370 self.connection.send_error(error) +371 +372 def notify_info(self, msg: str): +373 """Notifies the player of an information. +374 +375 Args: +376 msg (str): The information message. +377 """ +378 self.connection.send_message(msg) +379 +380 +381class COMPFactory(ServerFactory): +382 """Factory for COMP servers. +383 +384 This class represents a factory for creating COMP servers. +385 It is responsible for starting and stopping the server, as well as building +386 the protocol for incoming connections. +387 +388 Attributes: +389 server (IServer): The server instance associated with this factory. +390 """ +391 +392 def __init__(self, server: IServer) -> None: +393 self.server: IServer = server +394 +395 def startFactory(self) -> None: +396 """Start the server factory.""" +397 self.server.on_start() +398 super().startFactory() +399 +400 def stopFactory(self) -> None: +401 """Stop the server factory.""" +402 self.server.on_stop() +403 super().stopFactory() +404 +405 def buildProtocol(self, addr: IAddress) -> Protocol | None: +406 """Build the protocol for incoming connections. +407 +408 Args: +409 addr (IAddress): The address of the incoming connection. +410 +411 Returns: +412 Protocol | None: The protocol for the incoming connection. +413 +414 """ +415 protocol: COMPServerProtocol = COMPServerProtocol() +416 comp_player: COMPPlayer = COMPPlayer(protocol) +417 +418 # set up the callbacks needed for the server +419 protocol.add_connection_made_callback( +420 lambda: self.server.on_connect(comp_player) +421 ) +422 protocol.add_connection_lost_callback( +423 lambda: self.server.on_disconnect(comp_player) +424 ) +425 protocol.add_connection_timeout_callback( +426 lambda failure, timeout: self.server.on_timeout( +427 comp_player, failure, timeout +428 ) +429 ) +430 protocol.add_connection_error_callback( +431 lambda error: self.server.on_remote_error(comp_player, error) +432 ) +433 +434 return protocol +435 +436 +437def launch_server(server: IServer, port: int = 65335) -> None: +438 """Create a COMP server. +439 +440 Args: +441 server (IServer): The server instance to be used. +442 port (int): The port number of the server. Defaults to 65335. +443 +444 """ +445 log.info(f"Launching server on port {port}") +446 +447 reactor.listenTCP(port, COMPFactory(server)) # type: ignore[attr-defined] +448 +449 # setup and link the on_update event +450 LoopingCall(server.on_update).start(1.0) +451 reactor.run() # type: ignore[attr-defined] +
21class COMPServerProtocol(amp.AMP): + 22 """ + 23 Represents the server-side protocol for the COMP server. + 24 + 25 This class extends the `amp.AMP` class and provides methods for handling + 26 various events and interactions with the client. + 27 + 28 Attributes: + 29 connection_made_callbacks (list[Callable[[], None]]): List of callbacks + 30 to be executed when the connection is made. + 31 connection_lost_callbacks (list[Callable[[], None]]): List of callbacks + 32 to be executed when the connection is lost. + 33 """ + 34 + 35 def __init__(self, boxReceiver=None, locator=None): + 36 super().__init__(boxReceiver, locator) + 37 + 38 self.connection_made_callbacks: list[Callable[[], None]] = [] + 39 self.connection_lost_callbacks: list[Callable[[], None]] = [] + 40 self.connection_timeout_callbacks: list[Callable[[Any, Any], None]] = [] + 41 self.connection_error_callbacks: list[Callable[[Any], None]] = [] + 42 + 43 def add_connection_made_callback(self, callback: Callable[[], None]): + 44 """adds callback that is executed, when the connection is made + 45 + 46 Args: + 47 callback (function): callback to execute, when the connection is made + 48 + 49 Returns: + 50 None + 51 """ + 52 self.connection_made_callbacks.append(callback) + 53 + 54 def add_connection_lost_callback(self, callback: Callable[[], None]): + 55 """ + 56 Adds a callback function to be executed when the connection is lost. + 57 + 58 Args: + 59 callback: The callback function to be added. + 60 + 61 Returns: + 62 None + 63 """ + 64 self.connection_lost_callbacks.append(callback) + 65 + 66 def add_connection_timeout_callback(self, callback: Callable[[Any, Any], None]): + 67 """ + 68 Adds a callback function to be executed when there is a timeout. + 69 + 70 Args: + 71 callback: The callback function to be added. + 72 + 73 Returns: + 74 None + 75 """ + 76 self.connection_timeout_callbacks.append(callback) + 77 + 78 def add_connection_error_callback(self, callback: Callable[[Any], None]): + 79 """ + 80 Adds a callback function to be executed when there occurs an error in deferred. + 81 + 82 Args: + 83 callback: The callback function to be added. + 84 + 85 Returns: + 86 None + 87 """ + 88 self.connection_error_callbacks.append(callback) + 89 + 90 def connectionMade(self) -> None: + 91 """ + 92 Called when the connection to the client is established. + 93 + 94 Returns: + 95 None + 96 """ + 97 # broadcast to callbacks + 98 for c in self.connection_made_callbacks: + 99 c() +100 +101 return super().connectionMade() +102 +103 def connectionLost(self, reason): +104 """ +105 Called when the connection to the client is lost. +106 +107 Args: +108 reason: The reason for the connection loss. +109 +110 Returns: +111 None +112 """ +113 # log.debug("connection to client lost") +114 for c in self.connection_lost_callbacks: +115 c() +116 +117 super().connectionLost(reason) +118 +119 def connectionTimeout(self, failure, timeout) -> None: +120 """ +121 Handles the timeout event for a connection. +122 +123 Args: +124 failure: The failure object representing the timeout. +125 timeout: The timeout value in seconds. +126 Returns: +127 None +128 """ +129 # log.debug("connection timeout") +130 for c in self.connection_timeout_callbacks: +131 c(failure, timeout) +132 +133 def connection_error(self, error) -> None: +134 """Is called when an error in Deferred occurs +135 +136 Args: +137 place : where the error was caused +138 error : description of the error +139 """ +140 for c in self.connection_error_callbacks: +141 c(error) +142 +143 def get_token(self, return_callback: Callable[[str], None]) -> None: +144 """ +145 Retrieves a token from the client and calls the return_callback +146 function with the token. +147 +148 Args: +149 return_callback (Callable[[str], None]): A callback function that takes +150 a string parameter. +151 +152 Returns: +153 None +154 """ +155 +156 def callback(res): +157 if res["version"] == VERSION: +158 return_callback(res["token"].decode()) +159 else: +160 log.error("Client with wrong version tried to authenticate.") +161 self.send_error(msg="Tried to connect with wrong version") +162 self.disconnect() +163 +164 return ( +165 self.callRemote(Auth) +166 .addCallback(callback=callback) +167 .addTimeout(ConfigProvider.get("timeout"), reactor, self.connectionTimeout) +168 .addErrback(self.connection_error) +169 ) +170 +171 def is_ready(self, return_callback: Callable[[bool], None]) -> bool: +172 """ +173 Checks if the client is ready. +174 +175 Args: +176 return_callback (Callable[[bool], None]): A callback function that will +177 be called with the result of the check. +178 +179 Returns: +180 bool: Containing the information if the client is ready. +181 """ +182 return ( +183 self.callRemote(Ready) +184 .addCallback(callback=lambda res: return_callback(res["ready"])) +185 .addTimeout(ConfigProvider.get("timeout"), reactor, self.connectionTimeout) +186 .addErrback(self.connection_error) +187 ) +188 +189 def notify_start(self, game_id: GameID) -> None: +190 """ +191 Notifies the client that a game has started. +192 +193 Args: +194 game_id (GameID): The ID of the game that has started. +195 """ +196 return self.callRemote(StartGame, game_id=game_id.bytes) +197 +198 def get_step( +199 self, obv: list[float], return_callback: Callable[[list], None] +200 ) -> None: +201 """ +202 Sends an observation to the remote client and retrieves the corresponding +203 action. +204 +205 Args: +206 obv (list[float]): The observation to send to the client. +207 return_callback (Callable[[list], None]): The callback function to be +208 called with the retrieved action. +209 +210 Returns: +211 None +212 """ +213 return ( +214 self.callRemote(Step, obv=obv) +215 .addCallback(callback=lambda res: return_callback(res["action"])) +216 .addTimeout(ConfigProvider.get("timeout"), reactor, self.connectionTimeout) +217 .addErrback(self.connection_error) +218 ) +219 +220 def notify_end(self, result, stats) -> None: +221 """ +222 Notifies the remote client about the end of the game. +223 +224 Args: +225 result: The result of the game. +226 stats: The statistics of the game. +227 +228 Returns: +229 None +230 """ +231 return ( +232 self.callRemote(EndGame, result=result, stats=stats) +233 .addTimeout(ConfigProvider.get("timeout"), reactor, self.connectionTimeout) +234 .addErrback(self.connection_error) +235 ) +236 +237 def send_error(self, msg: str): +238 """ +239 Send an error string to the client. +240 +241 Args: +242 msg (str): The error message to send. +243 +244 Returns: +245 None +246 """ +247 return self.callRemote(Error, msg=str.encode(msg)).addErrback( +248 self.connection_error +249 ) +250 +251 def send_message(self, msg: str): +252 """ +253 Send a message string to the client. +254 +255 Args: +256 msg (str): The message to send. +257 +258 Returns: +259 None +260 """ +261 return self.callRemote(Message, msg=str.encode(msg)).addErrback( +262 self.connection_error +263 ) +264 +265 def disconnect(self): +266 """ +267 Disconnects the client from the server. +268 +269 Returns: +270 None +271 """ +272 self.transport.loseConnection() +
Represents the server-side protocol for the COMP server.
+ +This class extends the amp.AMP
class and provides methods for handling
+various events and interactions with the client.
Attributes: + connection_made_callbacks (list[Callable[[], None]]): List of callbacks + to be executed when the connection is made. + connection_lost_callbacks (list[Callable[[], None]]): List of callbacks + to be executed when the connection is lost.
+35 def __init__(self, boxReceiver=None, locator=None): +36 super().__init__(boxReceiver, locator) +37 +38 self.connection_made_callbacks: list[Callable[[], None]] = [] +39 self.connection_lost_callbacks: list[Callable[[], None]] = [] +40 self.connection_timeout_callbacks: list[Callable[[Any, Any], None]] = [] +41 self.connection_error_callbacks: list[Callable[[Any], None]] = [] +
43 def add_connection_made_callback(self, callback: Callable[[], None]): +44 """adds callback that is executed, when the connection is made +45 +46 Args: +47 callback (function): callback to execute, when the connection is made +48 +49 Returns: +50 None +51 """ +52 self.connection_made_callbacks.append(callback) +
adds callback that is executed, when the connection is made
+ +Args: + callback (function): callback to execute, when the connection is made
+ +Returns: + None
+54 def add_connection_lost_callback(self, callback: Callable[[], None]): +55 """ +56 Adds a callback function to be executed when the connection is lost. +57 +58 Args: +59 callback: The callback function to be added. +60 +61 Returns: +62 None +63 """ +64 self.connection_lost_callbacks.append(callback) +
Adds a callback function to be executed when the connection is lost.
+ +Args: + callback: The callback function to be added.
+ +Returns: + None
+66 def add_connection_timeout_callback(self, callback: Callable[[Any, Any], None]): +67 """ +68 Adds a callback function to be executed when there is a timeout. +69 +70 Args: +71 callback: The callback function to be added. +72 +73 Returns: +74 None +75 """ +76 self.connection_timeout_callbacks.append(callback) +
Adds a callback function to be executed when there is a timeout.
+ +Args: + callback: The callback function to be added.
+ +Returns: + None
+78 def add_connection_error_callback(self, callback: Callable[[Any], None]): +79 """ +80 Adds a callback function to be executed when there occurs an error in deferred. +81 +82 Args: +83 callback: The callback function to be added. +84 +85 Returns: +86 None +87 """ +88 self.connection_error_callbacks.append(callback) +
Adds a callback function to be executed when there occurs an error in deferred.
+ +Args: + callback: The callback function to be added.
+ +Returns: + None
+90 def connectionMade(self) -> None: + 91 """ + 92 Called when the connection to the client is established. + 93 + 94 Returns: + 95 None + 96 """ + 97 # broadcast to callbacks + 98 for c in self.connection_made_callbacks: + 99 c() +100 +101 return super().connectionMade() +
Called when the connection to the client is established.
+ +Returns: + None
+103 def connectionLost(self, reason): +104 """ +105 Called when the connection to the client is lost. +106 +107 Args: +108 reason: The reason for the connection loss. +109 +110 Returns: +111 None +112 """ +113 # log.debug("connection to client lost") +114 for c in self.connection_lost_callbacks: +115 c() +116 +117 super().connectionLost(reason) +
Called when the connection to the client is lost.
+ +Args: + reason: The reason for the connection loss.
+ +Returns: + None
+119 def connectionTimeout(self, failure, timeout) -> None: +120 """ +121 Handles the timeout event for a connection. +122 +123 Args: +124 failure: The failure object representing the timeout. +125 timeout: The timeout value in seconds. +126 Returns: +127 None +128 """ +129 # log.debug("connection timeout") +130 for c in self.connection_timeout_callbacks: +131 c(failure, timeout) +
Handles the timeout event for a connection.
+ +Args: + failure: The failure object representing the timeout. + timeout: The timeout value in seconds. +Returns: + None
+133 def connection_error(self, error) -> None: +134 """Is called when an error in Deferred occurs +135 +136 Args: +137 place : where the error was caused +138 error : description of the error +139 """ +140 for c in self.connection_error_callbacks: +141 c(error) +
Is called when an error in Deferred occurs
+ +Args: + place : where the error was caused + error : description of the error
+143 def get_token(self, return_callback: Callable[[str], None]) -> None: +144 """ +145 Retrieves a token from the client and calls the return_callback +146 function with the token. +147 +148 Args: +149 return_callback (Callable[[str], None]): A callback function that takes +150 a string parameter. +151 +152 Returns: +153 None +154 """ +155 +156 def callback(res): +157 if res["version"] == VERSION: +158 return_callback(res["token"].decode()) +159 else: +160 log.error("Client with wrong version tried to authenticate.") +161 self.send_error(msg="Tried to connect with wrong version") +162 self.disconnect() +163 +164 return ( +165 self.callRemote(Auth) +166 .addCallback(callback=callback) +167 .addTimeout(ConfigProvider.get("timeout"), reactor, self.connectionTimeout) +168 .addErrback(self.connection_error) +169 ) +
Retrieves a token from the client and calls the return_callback +function with the token.
+ +Args: + return_callback (Callable[[str], None]): A callback function that takes + a string parameter.
+ +Returns: + None
+171 def is_ready(self, return_callback: Callable[[bool], None]) -> bool: +172 """ +173 Checks if the client is ready. +174 +175 Args: +176 return_callback (Callable[[bool], None]): A callback function that will +177 be called with the result of the check. +178 +179 Returns: +180 bool: Containing the information if the client is ready. +181 """ +182 return ( +183 self.callRemote(Ready) +184 .addCallback(callback=lambda res: return_callback(res["ready"])) +185 .addTimeout(ConfigProvider.get("timeout"), reactor, self.connectionTimeout) +186 .addErrback(self.connection_error) +187 ) +
Checks if the client is ready.
+ +Args: + return_callback (Callable[[bool], None]): A callback function that will + be called with the result of the check.
+ +Returns: + bool: Containing the information if the client is ready.
+189 def notify_start(self, game_id: GameID) -> None: +190 """ +191 Notifies the client that a game has started. +192 +193 Args: +194 game_id (GameID): The ID of the game that has started. +195 """ +196 return self.callRemote(StartGame, game_id=game_id.bytes) +
Notifies the client that a game has started.
+ +Args: + game_id (GameID): The ID of the game that has started.
+198 def get_step( +199 self, obv: list[float], return_callback: Callable[[list], None] +200 ) -> None: +201 """ +202 Sends an observation to the remote client and retrieves the corresponding +203 action. +204 +205 Args: +206 obv (list[float]): The observation to send to the client. +207 return_callback (Callable[[list], None]): The callback function to be +208 called with the retrieved action. +209 +210 Returns: +211 None +212 """ +213 return ( +214 self.callRemote(Step, obv=obv) +215 .addCallback(callback=lambda res: return_callback(res["action"])) +216 .addTimeout(ConfigProvider.get("timeout"), reactor, self.connectionTimeout) +217 .addErrback(self.connection_error) +218 ) +
Sends an observation to the remote client and retrieves the corresponding +action.
+ +Args: + obv (list[float]): The observation to send to the client. + return_callback (Callable[[list], None]): The callback function to be + called with the retrieved action.
+ +Returns: + None
+220 def notify_end(self, result, stats) -> None: +221 """ +222 Notifies the remote client about the end of the game. +223 +224 Args: +225 result: The result of the game. +226 stats: The statistics of the game. +227 +228 Returns: +229 None +230 """ +231 return ( +232 self.callRemote(EndGame, result=result, stats=stats) +233 .addTimeout(ConfigProvider.get("timeout"), reactor, self.connectionTimeout) +234 .addErrback(self.connection_error) +235 ) +
Notifies the remote client about the end of the game.
+ +Args: + result: The result of the game. + stats: The statistics of the game.
+ +Returns: + None
+237 def send_error(self, msg: str): +238 """ +239 Send an error string to the client. +240 +241 Args: +242 msg (str): The error message to send. +243 +244 Returns: +245 None +246 """ +247 return self.callRemote(Error, msg=str.encode(msg)).addErrback( +248 self.connection_error +249 ) +
Send an error string to the client.
+ +Args: + msg (str): The error message to send.
+ +Returns: + None
+251 def send_message(self, msg: str): +252 """ +253 Send a message string to the client. +254 +255 Args: +256 msg (str): The message to send. +257 +258 Returns: +259 None +260 """ +261 return self.callRemote(Message, msg=str.encode(msg)).addErrback( +262 self.connection_error +263 ) +
Send a message string to the client.
+ +Args: + msg (str): The message to send.
+ +Returns: + None
+265 def disconnect(self): +266 """ +267 Disconnects the client from the server. +268 +269 Returns: +270 None +271 """ +272 self.transport.loseConnection() +
Disconnects the client from the server.
+ +Returns: + None
+275class COMPPlayer(IPlayer): +276 """Represents a player in the COMP game. +277 +278 Attributes: +279 connection (COMPServerProtocol): The networking connection for the player. +280 """ +281 +282 def __init__(self, connection: COMPServerProtocol) -> None: +283 """Initialize the COMPPlayer instance. +284 +285 Args: +286 connection (COMPServerProtocol): The networking connection for the player. +287 """ +288 super().__init__() +289 self.connection: COMPServerProtocol = connection +290 self.is_connected: bool = False +291 +292 def set_connection(c: bool): +293 self.is_connected = c +294 +295 self.connection.add_connection_made_callback( +296 callback=lambda: set_connection(True) +297 ) +298 self.connection.add_connection_lost_callback( +299 callback=lambda: set_connection(False) +300 ) +301 +302 def authenticate(self, result_callback): +303 """Authenticates the player. +304 +305 Args: +306 result_callback (callback function): +307 The callback to handle the authentication result. +308 +309 Returns: +310 token (string): The authentication token. +311 """ +312 if self.is_connected: +313 self.connection.get_token(result_callback) +314 +315 def is_ready(self, result_callback) -> bool: +316 """Checks if the player is ready to play. +317 +318 Args: +319 result_callback (callback function): The callback to handle the result. +320 +321 Returns: +322 bool: True if the player is ready to play, False otherwise. +323 """ +324 return self.connection.is_ready(result_callback) +325 +326 def notify_start(self, game_id: GameID): +327 """Notifies the player about the start of the game. +328 +329 Args: +330 game_id (GameID): The ID of the game. +331 """ +332 if self.is_connected: +333 self.connection.notify_start(game_id=game_id) +334 +335 def get_action(self, obv, result_callback): +336 """Receives the action from the server. +337 +338 Args: +339 obv (any): The observation. +340 result_callback (callback function): The callback to handle the result. +341 """ +342 if self.is_connected: +343 self.connection.get_step(obv, result_callback) +344 +345 def notify_end(self, result, stats): +346 """Called when the game ends. +347 +348 Args: +349 result (any): The result of the game. +350 stats (any): The stats of the game. +351 """ +352 if self.is_connected: +353 self.connection.notify_end(result=result, stats=stats) +354 +355 def disconnect(self, reason: str): +356 """Disconnects the player. +357 +358 Args: +359 reason (str): The reason for the disconnection. +360 """ +361 self.connection.send_error(reason) +362 self.connection.disconnect() +363 +364 def notify_error(self, error: str): +365 """Notifies the player of an error. +366 +367 Args: +368 error (str): The error message. +369 """ +370 if self.is_connected: +371 self.connection.send_error(error) +372 +373 def notify_info(self, msg: str): +374 """Notifies the player of an information. +375 +376 Args: +377 msg (str): The information message. +378 """ +379 self.connection.send_message(msg) +
Represents a player in the COMP game.
+ +Attributes: + connection (COMPServerProtocol): The networking connection for the player.
+282 def __init__(self, connection: COMPServerProtocol) -> None: +283 """Initialize the COMPPlayer instance. +284 +285 Args: +286 connection (COMPServerProtocol): The networking connection for the player. +287 """ +288 super().__init__() +289 self.connection: COMPServerProtocol = connection +290 self.is_connected: bool = False +291 +292 def set_connection(c: bool): +293 self.is_connected = c +294 +295 self.connection.add_connection_made_callback( +296 callback=lambda: set_connection(True) +297 ) +298 self.connection.add_connection_lost_callback( +299 callback=lambda: set_connection(False) +300 ) +
Initialize the COMPPlayer instance.
+ +Args: + connection (COMPServerProtocol): The networking connection for the player.
+302 def authenticate(self, result_callback): +303 """Authenticates the player. +304 +305 Args: +306 result_callback (callback function): +307 The callback to handle the authentication result. +308 +309 Returns: +310 token (string): The authentication token. +311 """ +312 if self.is_connected: +313 self.connection.get_token(result_callback) +
Authenticates the player.
+ +Args: + result_callback (callback function): + The callback to handle the authentication result.
+ +Returns: + token (string): The authentication token.
+315 def is_ready(self, result_callback) -> bool: +316 """Checks if the player is ready to play. +317 +318 Args: +319 result_callback (callback function): The callback to handle the result. +320 +321 Returns: +322 bool: True if the player is ready to play, False otherwise. +323 """ +324 return self.connection.is_ready(result_callback) +
Checks if the player is ready to play.
+ +Args: + result_callback (callback function): The callback to handle the result.
+ +Returns: + bool: True if the player is ready to play, False otherwise.
+326 def notify_start(self, game_id: GameID): +327 """Notifies the player about the start of the game. +328 +329 Args: +330 game_id (GameID): The ID of the game. +331 """ +332 if self.is_connected: +333 self.connection.notify_start(game_id=game_id) +
Notifies the player about the start of the game.
+ +Args: + game_id (GameID): The ID of the game.
+335 def get_action(self, obv, result_callback): +336 """Receives the action from the server. +337 +338 Args: +339 obv (any): The observation. +340 result_callback (callback function): The callback to handle the result. +341 """ +342 if self.is_connected: +343 self.connection.get_step(obv, result_callback) +
Receives the action from the server.
+ +Args: + obv (any): The observation. + result_callback (callback function): The callback to handle the result.
+345 def notify_end(self, result, stats): +346 """Called when the game ends. +347 +348 Args: +349 result (any): The result of the game. +350 stats (any): The stats of the game. +351 """ +352 if self.is_connected: +353 self.connection.notify_end(result=result, stats=stats) +
Called when the game ends.
+ +Args: + result (any): The result of the game. + stats (any): The stats of the game.
+355 def disconnect(self, reason: str): +356 """Disconnects the player. +357 +358 Args: +359 reason (str): The reason for the disconnection. +360 """ +361 self.connection.send_error(reason) +362 self.connection.disconnect() +
Disconnects the player.
+ +Args: + reason (str): The reason for the disconnection.
+364 def notify_error(self, error: str): +365 """Notifies the player of an error. +366 +367 Args: +368 error (str): The error message. +369 """ +370 if self.is_connected: +371 self.connection.send_error(error) +
Notifies the player of an error.
+ +Args: + error (str): The error message.
+373 def notify_info(self, msg: str): +374 """Notifies the player of an information. +375 +376 Args: +377 msg (str): The information message. +378 """ +379 self.connection.send_message(msg) +
Notifies the player of an information.
+ +Args: + msg (str): The information message.
+382class COMPFactory(ServerFactory): +383 """Factory for COMP servers. +384 +385 This class represents a factory for creating COMP servers. +386 It is responsible for starting and stopping the server, as well as building +387 the protocol for incoming connections. +388 +389 Attributes: +390 server (IServer): The server instance associated with this factory. +391 """ +392 +393 def __init__(self, server: IServer) -> None: +394 self.server: IServer = server +395 +396 def startFactory(self) -> None: +397 """Start the server factory.""" +398 self.server.on_start() +399 super().startFactory() +400 +401 def stopFactory(self) -> None: +402 """Stop the server factory.""" +403 self.server.on_stop() +404 super().stopFactory() +405 +406 def buildProtocol(self, addr: IAddress) -> Protocol | None: +407 """Build the protocol for incoming connections. +408 +409 Args: +410 addr (IAddress): The address of the incoming connection. +411 +412 Returns: +413 Protocol | None: The protocol for the incoming connection. +414 +415 """ +416 protocol: COMPServerProtocol = COMPServerProtocol() +417 comp_player: COMPPlayer = COMPPlayer(protocol) +418 +419 # set up the callbacks needed for the server +420 protocol.add_connection_made_callback( +421 lambda: self.server.on_connect(comp_player) +422 ) +423 protocol.add_connection_lost_callback( +424 lambda: self.server.on_disconnect(comp_player) +425 ) +426 protocol.add_connection_timeout_callback( +427 lambda failure, timeout: self.server.on_timeout( +428 comp_player, failure, timeout +429 ) +430 ) +431 protocol.add_connection_error_callback( +432 lambda error: self.server.on_remote_error(comp_player, error) +433 ) +434 +435 return protocol +
Factory for COMP servers.
+ +This class represents a factory for creating COMP servers. +It is responsible for starting and stopping the server, as well as building +the protocol for incoming connections.
+ +Attributes: + server (IServer): The server instance associated with this factory.
+396 def startFactory(self) -> None: +397 """Start the server factory.""" +398 self.server.on_start() +399 super().startFactory() +
Start the server factory.
+401 def stopFactory(self) -> None: +402 """Stop the server factory.""" +403 self.server.on_stop() +404 super().stopFactory() +
Stop the server factory.
+406 def buildProtocol(self, addr: IAddress) -> Protocol | None: +407 """Build the protocol for incoming connections. +408 +409 Args: +410 addr (IAddress): The address of the incoming connection. +411 +412 Returns: +413 Protocol | None: The protocol for the incoming connection. +414 +415 """ +416 protocol: COMPServerProtocol = COMPServerProtocol() +417 comp_player: COMPPlayer = COMPPlayer(protocol) +418 +419 # set up the callbacks needed for the server +420 protocol.add_connection_made_callback( +421 lambda: self.server.on_connect(comp_player) +422 ) +423 protocol.add_connection_lost_callback( +424 lambda: self.server.on_disconnect(comp_player) +425 ) +426 protocol.add_connection_timeout_callback( +427 lambda failure, timeout: self.server.on_timeout( +428 comp_player, failure, timeout +429 ) +430 ) +431 protocol.add_connection_error_callback( +432 lambda error: self.server.on_remote_error(comp_player, error) +433 ) +434 +435 return protocol +
Build the protocol for incoming connections.
+ +Args: + addr (IAddress): The address of the incoming connection.
+ +Returns: + Protocol | None: The protocol for the incoming connection.
+438def launch_server(server: IServer, port: int = 65335) -> None: +439 """Create a COMP server. +440 +441 Args: +442 server (IServer): The server instance to be used. +443 port (int): The port number of the server. Defaults to 65335. +444 +445 """ +446 log.info(f"Launching server on port {port}") +447 +448 reactor.listenTCP(port, COMPFactory(server)) # type: ignore[attr-defined] +449 +450 # setup and link the on_update event +451 LoopingCall(server.on_update).start(1.0) +452 reactor.run() # type: ignore[attr-defined] +
Create a COMP server.
+ +Args: + server (IServer): The server instance to be used. + port (int): The port number of the server. Defaults to 65335.
+This module contains utility functions for the server.
+1""" + 2This module contains utility functions for the server. + 3""" + 4 + 5import uuid + 6 + 7from comprl.shared.types import GameID, PlayerID + 8from comprl.server.data import ConnectionInfo + 9 +10 +11class IDGenerator: +12 """handles the creation of id's""" +13 +14 @staticmethod +15 def generate_player_id() -> PlayerID: +16 """generates a unique id for players +17 +18 Returns: +19 PlayerID: obtained id +20 """ +21 return uuid.uuid4() +22 +23 @staticmethod +24 def generate_game_id() -> GameID: +25 """generates a unique id for games +26 +27 Returns: +28 GameID: obtained id +29 """ +30 return uuid.uuid4() +31 +32 +33class ConfigProvider: +34 """provides configuration settings""" +35 +36 __config = { +37 "port": 8080, +38 "timeout": 10, +39 "log_level": "INFO", +40 "game_type": None, +41 "game_data": ConnectionInfo("data.db", "games"), +42 "user_data": ConnectionInfo("data.db", "users"), +43 } +44 +45 @staticmethod +46 def get(key): +47 """gets a configuration setting +48 +49 Args: +50 key (str): key of the setting +51 +52 Returns: +53 Any: value of the setting +54 """ +55 return ConfigProvider.__config[key] +56 +57 @staticmethod +58 def set(key, value): +59 """sets a configuration setting +60 +61 Args: +62 key (str): key of the setting +63 value (Any): value of the setting +64 """ +65 ConfigProvider.__config[key] = value +
12class IDGenerator: +13 """handles the creation of id's""" +14 +15 @staticmethod +16 def generate_player_id() -> PlayerID: +17 """generates a unique id for players +18 +19 Returns: +20 PlayerID: obtained id +21 """ +22 return uuid.uuid4() +23 +24 @staticmethod +25 def generate_game_id() -> GameID: +26 """generates a unique id for games +27 +28 Returns: +29 GameID: obtained id +30 """ +31 return uuid.uuid4() +
handles the creation of id's
+15 @staticmethod +16 def generate_player_id() -> PlayerID: +17 """generates a unique id for players +18 +19 Returns: +20 PlayerID: obtained id +21 """ +22 return uuid.uuid4() +
generates a unique id for players
+ +Returns: + PlayerID: obtained id
+24 @staticmethod +25 def generate_game_id() -> GameID: +26 """generates a unique id for games +27 +28 Returns: +29 GameID: obtained id +30 """ +31 return uuid.uuid4() +
generates a unique id for games
+ +Returns: + GameID: obtained id
+34class ConfigProvider: +35 """provides configuration settings""" +36 +37 __config = { +38 "port": 8080, +39 "timeout": 10, +40 "log_level": "INFO", +41 "game_type": None, +42 "game_data": ConnectionInfo("data.db", "games"), +43 "user_data": ConnectionInfo("data.db", "users"), +44 } +45 +46 @staticmethod +47 def get(key): +48 """gets a configuration setting +49 +50 Args: +51 key (str): key of the setting +52 +53 Returns: +54 Any: value of the setting +55 """ +56 return ConfigProvider.__config[key] +57 +58 @staticmethod +59 def set(key, value): +60 """sets a configuration setting +61 +62 Args: +63 key (str): key of the setting +64 value (Any): value of the setting +65 """ +66 ConfigProvider.__config[key] = value +
provides configuration settings
+46 @staticmethod +47 def get(key): +48 """gets a configuration setting +49 +50 Args: +51 key (str): key of the setting +52 +53 Returns: +54 Any: value of the setting +55 """ +56 return ConfigProvider.__config[key] +
gets a configuration setting
+ +Args: + key (str): key of the setting
+ +Returns: + Any: value of the setting
+58 @staticmethod +59 def set(key, value): +60 """sets a configuration setting +61 +62 Args: +63 key (str): key of the setting +64 value (Any): value of the setting +65 """ +66 ConfigProvider.__config[key] = value +
sets a configuration setting
+ +Args: + key (str): key of the setting + value (Any): value of the setting
+Defines the commands used for the server client communication.
+1""" + 2Defines the commands used for the server client communication. + 3""" + 4 + 5from twisted.protocols.amp import Integer, String, Boolean, Command, Float, ListOf + 6 + 7 + 8class Auth(Command): + 9 """Command for authenticating the client with the server. +10 +11 Arguments: +12 token (String): Token of the client +13 version (Integer): Version number of the running client framework +14 +15 Response: +16 uuid (Integer): UUID assigned by the server to the client +17 """ +18 +19 arguments = [] +20 response = [(b"token", String()), (b"version", Integer())] +21 +22 +23class Ready(Command): +24 """Command to check if the client is ready to start the game""" +25 +26 arguments = [] +27 response = [(b"ready", Boolean())] +28 +29 +30class StartGame(Command): +31 """Command to notify the client that the game starts""" +32 +33 arguments = [(b"game_id", String())] +34 response = [] +35 +36 +37class EndGame(Command): +38 """Command to notify the client that the game has ended""" +39 +40 arguments = [ +41 (b"result", Boolean()), +42 (b"stats", ListOf(Float())), +43 ] +44 response = [] +45 +46 +47class Step(Command): +48 """Command for requesting the next step from the agent""" +49 +50 arguments = [(b"obv", ListOf(Float()))] +51 response = [(b"action", ListOf(Float()))] +52 +53 +54class Error(Command): +55 """Command interface for a generic error message""" +56 +57 arguments = [(b"msg", String())] +58 response = [] +59 +60 +61class Message(Command): +62 """Command interface for a generic message""" +63 +64 arguments = [(b"msg", String())] +65 response = [] +
9class Auth(Command): +10 """Command for authenticating the client with the server. +11 +12 Arguments: +13 token (String): Token of the client +14 version (Integer): Version number of the running client framework +15 +16 Response: +17 uuid (Integer): UUID assigned by the server to the client +18 """ +19 +20 arguments = [] +21 response = [(b"token", String()), (b"version", Integer())] +
Command for authenticating the client with the server.
+ +Arguments: + token (String): Token of the client + version (Integer): Version number of the running client framework
+ +Response: + uuid (Integer): UUID assigned by the server to the client
+24class Ready(Command): +25 """Command to check if the client is ready to start the game""" +26 +27 arguments = [] +28 response = [(b"ready", Boolean())] +
Command to check if the client is ready to start the game
+31class StartGame(Command): +32 """Command to notify the client that the game starts""" +33 +34 arguments = [(b"game_id", String())] +35 response = [] +
Command to notify the client that the game starts
+38class EndGame(Command): +39 """Command to notify the client that the game has ended""" +40 +41 arguments = [ +42 (b"result", Boolean()), +43 (b"stats", ListOf(Float())), +44 ] +45 response = [] +
Command to notify the client that the game has ended
+48class Step(Command): +49 """Command for requesting the next step from the agent""" +50 +51 arguments = [(b"obv", ListOf(Float()))] +52 response = [(b"action", ListOf(Float()))] +
Command for requesting the next step from the agent
+55class Error(Command): +56 """Command interface for a generic error message""" +57 +58 arguments = [(b"msg", String())] +59 response = [] +
Command interface for a generic error message
+62class Message(Command): +63 """Command interface for a generic message""" +64 +65 arguments = [(b"msg", String())] +66 response = [] +
Command interface for a generic message
+contains types used by the server and the client
+This module initializes the client package for the competition server.
\n"}, "comprl.client.agent": {"fullname": "comprl.client.agent", "modulename": "comprl.client.agent", "kind": "module", "doc": "This module contains the Agent class, used by the end-user connecting to the server.
\n"}, "comprl.client.agent.Agent": {"fullname": "comprl.client.agent.Agent", "modulename": "comprl.client.agent", "qualname": "Agent", "kind": "class", "doc": "Agent used by the end-user connecting to the server.
\n\nThis class represents an agent that interacts with the server. It provides methods\nfor registering event handlers and connecting to the server.
\n", "bases": "comprl.client.interfaces.IAgent"}, "comprl.client.agent.Agent.event": {"fullname": "comprl.client.agent.Agent.event", "modulename": "comprl.client.agent", "qualname": "Agent.event", "kind": "function", "doc": "Decorator to register a function as an event handler.
\n\nArgs:\n func (function): The function to be registered as an event handler.
\n\nReturns:\n function: The registered event handler function.
\n", "signature": "(self, func):", "funcdef": "def"}, "comprl.client.agent.Agent.run": {"fullname": "comprl.client.agent.Agent.run", "modulename": "comprl.client.agent", "qualname": "Agent.run", "kind": "function", "doc": "Connects the client to the server.
\n\nThis method connects the client to the server using the specified token, host,\nand port. It internally calls the run
method of the base class to establish\nthe connection.
Args:\n token (str): The token used for authentication.\n host (str): The host address of the server. Defaults to \"localhost\".\n port (int): The port number of the server. Defaults to 65335.
\n\nReturns:\n None
\n", "signature": "(self, token: str, host: str = 'localhost', port: int = 65335) -> None:", "funcdef": "def"}, "comprl.client.agent.Agent.on_error": {"fullname": "comprl.client.agent.Agent.on_error", "modulename": "comprl.client.agent", "qualname": "Agent.on_error", "kind": "function", "doc": "Called if an error occurred on the server side.
\n", "signature": "(self, msg: str):", "funcdef": "def"}, "comprl.client.agent.Agent.on_message": {"fullname": "comprl.client.agent.Agent.on_message", "modulename": "comprl.client.agent", "qualname": "Agent.on_message", "kind": "function", "doc": "Called if a message is sent from the server.
\n", "signature": "(self, msg: str):", "funcdef": "def"}, "comprl.client.agent.Agent.on_disconnect": {"fullname": "comprl.client.agent.Agent.on_disconnect", "modulename": "comprl.client.agent", "qualname": "Agent.on_disconnect", "kind": "function", "doc": "Called when the agent disconnects from the server.
\n", "signature": "(self):", "funcdef": "def"}, "comprl.client.interfaces": {"fullname": "comprl.client.interfaces", "modulename": "comprl.client.interfaces", "kind": "module", "doc": "This module contains the interface for the agent.
\n"}, "comprl.client.interfaces.IAgent": {"fullname": "comprl.client.interfaces.IAgent", "modulename": "comprl.client.interfaces", "qualname": "IAgent", "kind": "class", "doc": "agent interface which could be used by the end-user
\n"}, "comprl.client.interfaces.IAgent.run": {"fullname": "comprl.client.interfaces.IAgent.run", "modulename": "comprl.client.interfaces", "qualname": "IAgent.run", "kind": "function", "doc": "Runs the agent with the specified token.
\n\nArgs:\n token (str): The token used for authentication.
\n", "signature": "(self, token: str):", "funcdef": "def"}, "comprl.client.interfaces.IAgent.auth": {"fullname": "comprl.client.interfaces.IAgent.auth", "modulename": "comprl.client.interfaces", "qualname": "IAgent.auth", "kind": "function", "doc": "Returns the authentication token.
\n\nReturns:\n str: The authentication token.
\n", "signature": "(self) -> str:", "funcdef": "def"}, "comprl.client.interfaces.IAgent.is_ready": {"fullname": "comprl.client.interfaces.IAgent.is_ready", "modulename": "comprl.client.interfaces", "qualname": "IAgent.is_ready", "kind": "function", "doc": "Returns if the agent is ready to play.
\n\nReturns:\n bool: True if the agent is ready to play, False otherwise.
\n", "signature": "(self) -> bool:", "funcdef": "def"}, "comprl.client.interfaces.IAgent.on_start_game": {"fullname": "comprl.client.interfaces.IAgent.on_start_game", "modulename": "comprl.client.interfaces", "qualname": "IAgent.on_start_game", "kind": "function", "doc": "Called when a new game starts.
\n\nArgs:\n game_id (int): The ID of the new game.
\n\nReturns:\n bool: True if the agent is ready to play, False otherwise.
\n", "signature": "(self, game_id: int) -> None:", "funcdef": "def"}, "comprl.client.interfaces.IAgent.get_step": {"fullname": "comprl.client.interfaces.IAgent.get_step", "modulename": "comprl.client.interfaces", "qualname": "IAgent.get_step", "kind": "function", "doc": "Requests the agent's action based on the current observation.
\n\nArgs:\n obv (list[float]): The current observation.
\n\nReturns:\n list[float]: The agent's action.
\n", "signature": "(self, obv: list[float]) -> list[float]:", "funcdef": "def"}, "comprl.client.interfaces.IAgent.on_end_game": {"fullname": "comprl.client.interfaces.IAgent.on_end_game", "modulename": "comprl.client.interfaces", "qualname": "IAgent.on_end_game", "kind": "function", "doc": "Called when a game ends.
\n\nArgs:\n result: The result of the game.\n stats: The statistics of the game.
\n\nReturns:\n bool: True if the agent handled the end of the game, False otherwise.
\n", "signature": "(self, result: bool, stats: list[float]) -> None:", "funcdef": "def"}, "comprl.client.interfaces.IAgent.on_error": {"fullname": "comprl.client.interfaces.IAgent.on_error", "modulename": "comprl.client.interfaces", "qualname": "IAgent.on_error", "kind": "function", "doc": "Called when an error occurs.
\n\nArgs:\n msg (str): The error message.
\n", "signature": "(self, msg: str):", "funcdef": "def"}, "comprl.client.interfaces.IAgent.on_message": {"fullname": "comprl.client.interfaces.IAgent.on_message", "modulename": "comprl.client.interfaces", "qualname": "IAgent.on_message", "kind": "function", "doc": "Called when a message is sent from the server.
\n\nArgs:\n msg (str): The message
\n", "signature": "(self, msg: str):", "funcdef": "def"}, "comprl.client.interfaces.IAgent.on_disconnect": {"fullname": "comprl.client.interfaces.IAgent.on_disconnect", "modulename": "comprl.client.interfaces", "qualname": "IAgent.on_disconnect", "kind": "function", "doc": "Called when the agent disconnects from the server.
\n", "signature": "(self):", "funcdef": "def"}, "comprl.client.networking": {"fullname": "comprl.client.networking", "modulename": "comprl.client.networking", "kind": "module", "doc": "Contains all networking related classes and functions for the client.
\n"}, "comprl.client.networking.VERSION": {"fullname": "comprl.client.networking.VERSION", "modulename": "comprl.client.networking", "qualname": "VERSION", "kind": "variable", "doc": "\n", "default_value": "1"}, "comprl.client.networking.ClientProtocol": {"fullname": "comprl.client.networking.ClientProtocol", "modulename": "comprl.client.networking", "qualname": "ClientProtocol", "kind": "class", "doc": "Protocol for the client.
\n\nRepresents the protocol used by the client to communicate with the server.
\n", "bases": "twisted.protocols.amp.AMP"}, "comprl.client.networking.ClientProtocol.__init__": {"fullname": "comprl.client.networking.ClientProtocol.__init__", "modulename": "comprl.client.networking", "qualname": "ClientProtocol.__init__", "kind": "function", "doc": "Initialize the COMPClientProtocol.
\n\nArgs:\n agent (COMPAgent): The agent associated with the protocol.\n boxReceiver (object, optional): The box receiver object. Defaults to None.\n locator (object, optional): The locator object. Defaults to None.
\n", "signature": "(\tagent: comprl.client.interfaces.IAgent,\tboxReceiver=None,\tlocator=None)"}, "comprl.client.networking.ClientProtocol.agent": {"fullname": "comprl.client.networking.ClientProtocol.agent", "modulename": "comprl.client.networking", "qualname": "ClientProtocol.agent", "kind": "variable", "doc": "\n", "annotation": ": comprl.client.interfaces.IAgent"}, "comprl.client.networking.ClientProtocol.connectionMade": {"fullname": "comprl.client.networking.ClientProtocol.connectionMade", "modulename": "comprl.client.networking", "qualname": "ClientProtocol.connectionMade", "kind": "function", "doc": "Called when the connection to the server is made.
\n", "signature": "(self):", "funcdef": "def"}, "comprl.client.networking.ClientProtocol.connectionLost": {"fullname": "comprl.client.networking.ClientProtocol.connectionLost", "modulename": "comprl.client.networking", "qualname": "ClientProtocol.connectionLost", "kind": "function", "doc": "Called when the connection to the server is lost.
\n\nArgs:\n reason (object): The reason for the lost connection.
\n", "signature": "(self, reason):", "funcdef": "def"}, "comprl.client.networking.ClientProtocol.auth": {"fullname": "comprl.client.networking.ClientProtocol.auth", "modulename": "comprl.client.networking", "qualname": "ClientProtocol.auth", "kind": "function", "doc": "Called for authenticating the client.
\n\nReturns:\n dict: The client's authentication token and version.\n Example: {\"token\": b'...', \"version\": 1}
\n", "signature": "(self):", "funcdef": "def"}, "comprl.client.networking.ClientProtocol.ready": {"fullname": "comprl.client.networking.ClientProtocol.ready", "modulename": "comprl.client.networking", "qualname": "ClientProtocol.ready", "kind": "function", "doc": "Called when the server wants to know if the client is ready.
\n\nReturns:\n dict: A dictionary indicating if the client is ready.\n Example: {\"ready\": True}
\n", "signature": "(self):", "funcdef": "def"}, "comprl.client.networking.ClientProtocol.start_game": {"fullname": "comprl.client.networking.ClientProtocol.start_game", "modulename": "comprl.client.networking", "qualname": "ClientProtocol.start_game", "kind": "function", "doc": "Called when the server starts the game.
\n\nArgs:\n game_id (str): The ID of the game.
\n\nReturns:\n dict: A dictionary indicating if the client is ready to start the game.\n Example: {\"ready\": True}
\n", "signature": "(self, game_id: int):", "funcdef": "def"}, "comprl.client.networking.ClientProtocol.end_game": {"fullname": "comprl.client.networking.ClientProtocol.end_game", "modulename": "comprl.client.networking", "qualname": "ClientProtocol.end_game", "kind": "function", "doc": "Called when the server ends the game.
\n\nArgs:\n result (bool): A boolean indicating if the game was won.\n stats (object): Other statistics.
\n\nReturns:\n dict: A dictionary indicating if the client is ready to start a new game.\n Example: {\"ready\": True}
\n", "signature": "(self, result, stats):", "funcdef": "def"}, "comprl.client.networking.ClientProtocol.step": {"fullname": "comprl.client.networking.ClientProtocol.step", "modulename": "comprl.client.networking", "qualname": "ClientProtocol.step", "kind": "function", "doc": "Called when the server wants the client to make a step.
\n\nArgs:\n obv (list[float])): The environment given by the server.
\n\nReturns:\n dict: A dictionary containing the action that should be executed.\n Example: {\"action\": 1}
\n", "signature": "(self, obv: list[float]):", "funcdef": "def"}, "comprl.client.networking.ClientProtocol.on_error": {"fullname": "comprl.client.networking.ClientProtocol.on_error", "modulename": "comprl.client.networking", "qualname": "ClientProtocol.on_error", "kind": "function", "doc": "Called if an error occurred on the server side.
\n\nArgs:\n msg (object): The error description.
\n", "signature": "(self, msg):", "funcdef": "def"}, "comprl.client.networking.ClientProtocol.on_message": {"fullname": "comprl.client.networking.ClientProtocol.on_message", "modulename": "comprl.client.networking", "qualname": "ClientProtocol.on_message", "kind": "function", "doc": "Called if a message from the server is sent.
\n\nArgs:\n msg (object): The message.
\n", "signature": "(self, msg):", "funcdef": "def"}, "comprl.client.networking.connect_agent": {"fullname": "comprl.client.networking.connect_agent", "modulename": "comprl.client.networking", "qualname": "connect_agent", "kind": "function", "doc": "Connects the client to the server.
\n\nThis method connects the client to the server using the specified token, host,\nand port. It internally calls the run
method of the base class to establish\nthe connection.
Args:\n token (str): The token used for authentication.\n host (str): The host address of the server. Defaults to \"localhost\".\n port (int): The port number of the server. Defaults to 65335.
\n\nReturns:\n None
\n", "signature": "(\tagent: comprl.client.interfaces.IAgent,\thost: str = 'localhost',\tport: int = 65335):", "funcdef": "def"}, "comprl.server": {"fullname": "comprl.server", "modulename": "comprl.server", "kind": "module", "doc": "\n"}, "comprl.server.data": {"fullname": "comprl.server.data", "modulename": "comprl.server.data", "kind": "module", "doc": "\n"}, "comprl.server.data.interfaces": {"fullname": "comprl.server.data.interfaces", "modulename": "comprl.server.data.interfaces", "kind": "module", "doc": "This module contains the interfaces for the game data.
\n"}, "comprl.server.data.interfaces.GameEndState": {"fullname": "comprl.server.data.interfaces.GameEndState", "modulename": "comprl.server.data.interfaces", "qualname": "GameEndState", "kind": "class", "doc": "Represents the possible end states of a game.
\n\nAttributes:\n WIN: The game ended with a win.\n DRAW: The game ended in a draw.\n DISCONNECTED: The game ended due to a disconnection.
\n", "bases": "enum.IntEnum"}, "comprl.server.data.interfaces.GameEndState.WIN": {"fullname": "comprl.server.data.interfaces.GameEndState.WIN", "modulename": "comprl.server.data.interfaces", "qualname": "GameEndState.WIN", "kind": "variable", "doc": "\n", "default_value": "<GameEndState.WIN: 0>"}, "comprl.server.data.interfaces.GameEndState.DRAW": {"fullname": "comprl.server.data.interfaces.GameEndState.DRAW", "modulename": "comprl.server.data.interfaces", "qualname": "GameEndState.DRAW", "kind": "variable", "doc": "\n", "default_value": "<GameEndState.DRAW: 1>"}, "comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"fullname": "comprl.server.data.interfaces.GameEndState.DISCONNECTED", "modulename": "comprl.server.data.interfaces", "qualname": "GameEndState.DISCONNECTED", "kind": "variable", "doc": "\n", "default_value": "<GameEndState.DISCONNECTED: 2>"}, "comprl.server.data.interfaces.GameResult": {"fullname": "comprl.server.data.interfaces.GameResult", "modulename": "comprl.server.data.interfaces", "qualname": "GameResult", "kind": "class", "doc": "Result and statistics of a game
\n"}, "comprl.server.data.interfaces.GameResult.__init__": {"fullname": "comprl.server.data.interfaces.GameResult.__init__", "modulename": "comprl.server.data.interfaces", "qualname": "GameResult.__init__", "kind": "function", "doc": "initialize a game result
\n\nArgs:\n game_id (UUID): id of the game\n user1_id (int): id of the first user\n user2_id (int): id of the second user\n score_user_1 (float): score of the first user\n score_user_2 (float): score of the second user\n start_time (str, optional): time, when the game started.\n Defaults to None (current time).\n end_state (int, optional): end-state of the game.\n Defaults to GameEndState.WIN.\n is_user1_winner (bool, optional): is user 1 the winner?\n Defaults to True.\n is_user1_disconnected (bool, optional): is user 1 disconnected?\n Defaults to True.
\n", "signature": "(\tgame_id: uuid.UUID,\tuser1_id: int,\tuser2_id: int,\tscore_user_1: float,\tscore_user_2: float,\tstart_time=None,\tend_state: comprl.server.data.interfaces.GameEndState = <GameEndState.WIN: 0>,\tis_user1_winner: bool = True,\tis_user1_disconnected: bool = True)"}, "comprl.server.data.interfaces.GameResult.game_id": {"fullname": "comprl.server.data.interfaces.GameResult.game_id", "modulename": "comprl.server.data.interfaces", "qualname": "GameResult.game_id", "kind": "variable", "doc": "\n"}, "comprl.server.data.interfaces.GameResult.user1_id": {"fullname": "comprl.server.data.interfaces.GameResult.user1_id", "modulename": "comprl.server.data.interfaces", "qualname": "GameResult.user1_id", "kind": "variable", "doc": "\n"}, "comprl.server.data.interfaces.GameResult.user2_id": {"fullname": "comprl.server.data.interfaces.GameResult.user2_id", "modulename": "comprl.server.data.interfaces", "qualname": "GameResult.user2_id", "kind": "variable", "doc": "\n"}, "comprl.server.data.interfaces.GameResult.score_user_1": {"fullname": "comprl.server.data.interfaces.GameResult.score_user_1", "modulename": "comprl.server.data.interfaces", "qualname": "GameResult.score_user_1", "kind": "variable", "doc": "\n"}, "comprl.server.data.interfaces.GameResult.score_user_2": {"fullname": "comprl.server.data.interfaces.GameResult.score_user_2", "modulename": "comprl.server.data.interfaces", "qualname": "GameResult.score_user_2", "kind": "variable", "doc": "\n"}, "comprl.server.data.interfaces.GameResult.start_time": {"fullname": "comprl.server.data.interfaces.GameResult.start_time", "modulename": "comprl.server.data.interfaces", "qualname": "GameResult.start_time", "kind": "variable", "doc": "\n"}, "comprl.server.data.interfaces.GameResult.end_state": {"fullname": "comprl.server.data.interfaces.GameResult.end_state", "modulename": "comprl.server.data.interfaces", "qualname": "GameResult.end_state", "kind": "variable", "doc": "\n"}, "comprl.server.data.interfaces.GameResult.winner_id": {"fullname": "comprl.server.data.interfaces.GameResult.winner_id", "modulename": "comprl.server.data.interfaces", "qualname": "GameResult.winner_id", "kind": "variable", "doc": "\n"}, "comprl.server.data.interfaces.GameResult.disconnected_id": {"fullname": "comprl.server.data.interfaces.GameResult.disconnected_id", "modulename": "comprl.server.data.interfaces", "qualname": "GameResult.disconnected_id", "kind": "variable", "doc": "\n"}, "comprl.server.data.interfaces.UserRole": {"fullname": "comprl.server.data.interfaces.UserRole", "modulename": "comprl.server.data.interfaces", "qualname": "UserRole", "kind": "class", "doc": "Represents the possible user roles.
\n\nAttributes:\n USER: Normal user without administrative rights.\n ADMIN = User with administrative rights.
\n", "bases": "enum.Enum"}, "comprl.server.data.interfaces.UserRole.USER": {"fullname": "comprl.server.data.interfaces.UserRole.USER", "modulename": "comprl.server.data.interfaces", "qualname": "UserRole.USER", "kind": "variable", "doc": "\n", "default_value": "<UserRole.USER: 'user'>"}, "comprl.server.data.interfaces.UserRole.ADMIN": {"fullname": "comprl.server.data.interfaces.UserRole.ADMIN", "modulename": "comprl.server.data.interfaces", "qualname": "UserRole.ADMIN", "kind": "variable", "doc": "\n", "default_value": "<UserRole.ADMIN: 'admin'>"}, "comprl.server.data.sql_backend": {"fullname": "comprl.server.data.sql_backend", "modulename": "comprl.server.data.sql_backend", "kind": "module", "doc": "Implementation of the data access objects for managing game and user data in SQLite.
\n"}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"fullname": "comprl.server.data.sql_backend.SQLiteConnectionInfo", "modulename": "comprl.server.data.sql_backend", "qualname": "SQLiteConnectionInfo", "kind": "class", "doc": "Represents the connection information for SQLite database.
\n\nAttributes:\n host (str): The host of the SQLite database.\n table (int): The table number in the database.
\n"}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"fullname": "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__", "modulename": "comprl.server.data.sql_backend", "qualname": "SQLiteConnectionInfo.__init__", "kind": "function", "doc": "\n", "signature": "(host: str, table: str)"}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.host": {"fullname": "comprl.server.data.sql_backend.SQLiteConnectionInfo.host", "modulename": "comprl.server.data.sql_backend", "qualname": "SQLiteConnectionInfo.host", "kind": "variable", "doc": "\n", "annotation": ": str"}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.table": {"fullname": "comprl.server.data.sql_backend.SQLiteConnectionInfo.table", "modulename": "comprl.server.data.sql_backend", "qualname": "SQLiteConnectionInfo.table", "kind": "variable", "doc": "\n", "annotation": ": str"}, "comprl.server.data.sql_backend.GameData": {"fullname": "comprl.server.data.sql_backend.GameData", "modulename": "comprl.server.data.sql_backend", "qualname": "GameData", "kind": "class", "doc": "Represents a data access object for managing game data in a SQLite database.
\n\nAttributes:\n connection (sqlite3.Connection): The connection to the SQLite database.\n cursor (sqlite3.Cursor): The cursor for executing SQL queries.
\n"}, "comprl.server.data.sql_backend.GameData.__init__": {"fullname": "comprl.server.data.sql_backend.GameData.__init__", "modulename": "comprl.server.data.sql_backend", "qualname": "GameData.__init__", "kind": "function", "doc": "\n", "signature": "(connection: comprl.server.data.sql_backend.SQLiteConnectionInfo)"}, "comprl.server.data.sql_backend.GameData.connection": {"fullname": "comprl.server.data.sql_backend.GameData.connection", "modulename": "comprl.server.data.sql_backend", "qualname": "GameData.connection", "kind": "variable", "doc": "\n"}, "comprl.server.data.sql_backend.GameData.cursor": {"fullname": "comprl.server.data.sql_backend.GameData.cursor", "modulename": "comprl.server.data.sql_backend", "qualname": "GameData.cursor", "kind": "variable", "doc": "\n"}, "comprl.server.data.sql_backend.GameData.table": {"fullname": "comprl.server.data.sql_backend.GameData.table", "modulename": "comprl.server.data.sql_backend", "qualname": "GameData.table", "kind": "variable", "doc": "\n"}, "comprl.server.data.sql_backend.GameData.add": {"fullname": "comprl.server.data.sql_backend.GameData.add", "modulename": "comprl.server.data.sql_backend", "qualname": "GameData.add", "kind": "function", "doc": "Adds a game result to the database.
\n\nArgs:\n game_result (GameResult): The game result to be added.
\n", "signature": "(self, game_result: comprl.server.data.interfaces.GameResult) -> None:", "funcdef": "def"}, "comprl.server.data.sql_backend.GameData.remove": {"fullname": "comprl.server.data.sql_backend.GameData.remove", "modulename": "comprl.server.data.sql_backend", "qualname": "GameData.remove", "kind": "function", "doc": "Removes a game from the database based on its ID.
\n\nArgs:\n game_id (str): The ID of the game to be removed.
\n", "signature": "(self, game_id: uuid.UUID) -> None:", "funcdef": "def"}, "comprl.server.data.sql_backend.UserData": {"fullname": "comprl.server.data.sql_backend.UserData", "modulename": "comprl.server.data.sql_backend", "qualname": "UserData", "kind": "class", "doc": "Represents a data access object for managing game data in a SQLite database.
\n\nAttributes:\n connection (sqlite3.Connection): The connection to the SQLite database.\n cursor (sqlite3.Cursor): The cursor for executing SQL queries.
\n"}, "comprl.server.data.sql_backend.UserData.__init__": {"fullname": "comprl.server.data.sql_backend.UserData.__init__", "modulename": "comprl.server.data.sql_backend", "qualname": "UserData.__init__", "kind": "function", "doc": "Initializes a new instance of the UserData class.
\n\nArgs:\n connection (SQLiteConnectionInfo): The connection information for SQLite.
\n", "signature": "(connection: comprl.server.data.sql_backend.SQLiteConnectionInfo)"}, "comprl.server.data.sql_backend.UserData.connection": {"fullname": "comprl.server.data.sql_backend.UserData.connection", "modulename": "comprl.server.data.sql_backend", "qualname": "UserData.connection", "kind": "variable", "doc": "\n"}, "comprl.server.data.sql_backend.UserData.cursor": {"fullname": "comprl.server.data.sql_backend.UserData.cursor", "modulename": "comprl.server.data.sql_backend", "qualname": "UserData.cursor", "kind": "variable", "doc": "\n"}, "comprl.server.data.sql_backend.UserData.table": {"fullname": "comprl.server.data.sql_backend.UserData.table", "modulename": "comprl.server.data.sql_backend", "qualname": "UserData.table", "kind": "variable", "doc": "\n"}, "comprl.server.data.sql_backend.UserData.add": {"fullname": "comprl.server.data.sql_backend.UserData.add", "modulename": "comprl.server.data.sql_backend", "qualname": "UserData.add", "kind": "function", "doc": "Adds a new user to the database.
\n\nArgs:\n user_name (str): The name of the user.\n user_password (str): The password of the user.\n user_token (str): The token of the user.\n user_role (UserRole, optional): The role of the user.\n Defaults to UserRole.USER.\n user_mu (float, optional): The mu value of the user. Defaults to 25.\n user_sigma (float, optional): The sigma value of the user. Defaults to 8.33.
\n\nReturns:\n int: The ID of the newly added user.
\n", "signature": "(\tself,\tuser_name: str,\tuser_password: str,\tuser_token: str,\tuser_role=<UserRole.USER: 'user'>,\tuser_mu=25.0,\tuser_sigma=8.333) -> int:", "funcdef": "def"}, "comprl.server.data.sql_backend.UserData.remove": {"fullname": "comprl.server.data.sql_backend.UserData.remove", "modulename": "comprl.server.data.sql_backend", "qualname": "UserData.remove", "kind": "function", "doc": "Removes a user from the database based on their ID.
\n\nArgs:\n user_id (int): The ID of the user to be removed.
\n", "signature": "(self, user_id: int) -> None:", "funcdef": "def"}, "comprl.server.data.sql_backend.UserData.is_verified": {"fullname": "comprl.server.data.sql_backend.UserData.is_verified", "modulename": "comprl.server.data.sql_backend", "qualname": "UserData.is_verified", "kind": "function", "doc": "Checks if a user is verified based on their token.
\n\nArgs:\n user_token (str): The token of the user.
\n\nReturns:\n bool: True if the user is verified, False otherwise.
\n", "signature": "(self, user_token: str) -> bool:", "funcdef": "def"}, "comprl.server.data.sql_backend.UserData.get_user_id": {"fullname": "comprl.server.data.sql_backend.UserData.get_user_id", "modulename": "comprl.server.data.sql_backend", "qualname": "UserData.get_user_id", "kind": "function", "doc": "Retrieves the ID of a user based on their token.
\n\nArgs:\n user_token (str): The token of the user.
\n\nReturns:\n int: The ID of the user, or -1 if the user is not found.
\n", "signature": "(self, user_token: str) -> int | None:", "funcdef": "def"}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"fullname": "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters", "modulename": "comprl.server.data.sql_backend", "qualname": "UserData.get_matchmaking_parameters", "kind": "function", "doc": "Retrieves the matchmaking parameters of a user based on their ID.
\n\nArgs:\n user_id (int): The ID of the user.
\n\nReturns:\n tuple[float, float]: The mu and sigma values of the user.
\n", "signature": "(self, user_id: int) -> tuple[float, float]:", "funcdef": "def"}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"fullname": "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters", "modulename": "comprl.server.data.sql_backend", "qualname": "UserData.set_matchmaking_parameters", "kind": "function", "doc": "Sets the matchmaking parameters of a user based on their ID.
\n\nArgs:\n user_id (int): The ID of the user.\n mu (float): The new mu value of the user.\n sigma (float): The new sigma value of the user.
\n", "signature": "(self, user_id: int, mu: float, sigma: float) -> None:", "funcdef": "def"}, "comprl.server.interfaces": {"fullname": "comprl.server.interfaces", "modulename": "comprl.server.interfaces", "kind": "module", "doc": "This module contains the interfaces for the non-networking logic.
\n"}, "comprl.server.interfaces.IAction": {"fullname": "comprl.server.interfaces.IAction", "modulename": "comprl.server.interfaces", "qualname": "IAction", "kind": "class", "doc": "Interface for an action
\n"}, "comprl.server.interfaces.IPlayer": {"fullname": "comprl.server.interfaces.IPlayer", "modulename": "comprl.server.interfaces", "qualname": "IPlayer", "kind": "class", "doc": "Interface for a player
\n", "bases": "abc.ABC"}, "comprl.server.interfaces.IPlayer.id": {"fullname": "comprl.server.interfaces.IPlayer.id", "modulename": "comprl.server.interfaces", "qualname": "IPlayer.id", "kind": "variable", "doc": "\n", "annotation": ": uuid.UUID"}, "comprl.server.interfaces.IPlayer.user_id": {"fullname": "comprl.server.interfaces.IPlayer.user_id", "modulename": "comprl.server.interfaces", "qualname": "IPlayer.user_id", "kind": "variable", "doc": "\n", "annotation": ": Optional[int]"}, "comprl.server.interfaces.IPlayer.is_connected": {"fullname": "comprl.server.interfaces.IPlayer.is_connected", "modulename": "comprl.server.interfaces", "qualname": "IPlayer.is_connected", "kind": "variable", "doc": "\n"}, "comprl.server.interfaces.IPlayer.authenticate": {"fullname": "comprl.server.interfaces.IPlayer.authenticate", "modulename": "comprl.server.interfaces", "qualname": "IPlayer.authenticate", "kind": "function", "doc": "authenticates player
\n\nArgs:\n result_callback (Callable): callback
\n", "signature": "(self, result_callback):", "funcdef": "def"}, "comprl.server.interfaces.IPlayer.is_ready": {"fullname": "comprl.server.interfaces.IPlayer.is_ready", "modulename": "comprl.server.interfaces", "qualname": "IPlayer.is_ready", "kind": "function", "doc": "checks if the player is ready to play
\n\nReturns:\n bool: returns true if the player is ready to play
\n", "signature": "(self, result_callback) -> bool:", "funcdef": "def"}, "comprl.server.interfaces.IPlayer.notify_start": {"fullname": "comprl.server.interfaces.IPlayer.notify_start", "modulename": "comprl.server.interfaces", "qualname": "IPlayer.notify_start", "kind": "function", "doc": "notifies player that the game has started
\n", "signature": "(self, game_id):", "funcdef": "def"}, "comprl.server.interfaces.IPlayer.get_action": {"fullname": "comprl.server.interfaces.IPlayer.get_action", "modulename": "comprl.server.interfaces", "qualname": "IPlayer.get_action", "kind": "function", "doc": "gets an action from the player
\n\nArgs:\n obv (Any): observation\n result_callback (Callable): callback
\n\nReturns:\n IAction: action
\n", "signature": "(self, obv, result_callback) -> comprl.server.interfaces.IAction:", "funcdef": "def"}, "comprl.server.interfaces.IPlayer.notify_end": {"fullname": "comprl.server.interfaces.IPlayer.notify_end", "modulename": "comprl.server.interfaces", "qualname": "IPlayer.notify_end", "kind": "function", "doc": "notifies player that the game has ended
\n", "signature": "(self, result, stats):", "funcdef": "def"}, "comprl.server.interfaces.IPlayer.disconnect": {"fullname": "comprl.server.interfaces.IPlayer.disconnect", "modulename": "comprl.server.interfaces", "qualname": "IPlayer.disconnect", "kind": "function", "doc": "disconnect the player
\n", "signature": "(self, reason: str):", "funcdef": "def"}, "comprl.server.interfaces.IPlayer.notify_error": {"fullname": "comprl.server.interfaces.IPlayer.notify_error", "modulename": "comprl.server.interfaces", "qualname": "IPlayer.notify_error", "kind": "function", "doc": "notifies the player of an error
\n", "signature": "(self, error: str):", "funcdef": "def"}, "comprl.server.interfaces.IPlayer.notify_info": {"fullname": "comprl.server.interfaces.IPlayer.notify_info", "modulename": "comprl.server.interfaces", "qualname": "IPlayer.notify_info", "kind": "function", "doc": "notifies the player of an information
\n", "signature": "(self, msg: str):", "funcdef": "def"}, "comprl.server.interfaces.IGame": {"fullname": "comprl.server.interfaces.IGame", "modulename": "comprl.server.interfaces", "qualname": "IGame", "kind": "class", "doc": "Interface for a game.
\n\nAttributes:\n id (GameID):\n The unique identifier of the game.\n players (dict[PlayerID, IPlayer]):\n A dictionary of players participating in the game.\n start_time (datetime):\n The start time of the game.\n finish_callbacks (list[Callable[[\"IGame\"], None]]):\n A list of callbacks to be executed when the game ends.
\n", "bases": "abc.ABC"}, "comprl.server.interfaces.IGame.__init__": {"fullname": "comprl.server.interfaces.IGame.__init__", "modulename": "comprl.server.interfaces", "qualname": "IGame.__init__", "kind": "function", "doc": "Initializes a new instance of the IGame class.
\n\nArgs:\n players (list[IPlayer]): A list of players participating in the game.
\n", "signature": "(players: list[comprl.server.interfaces.IPlayer])"}, "comprl.server.interfaces.IGame.id": {"fullname": "comprl.server.interfaces.IGame.id", "modulename": "comprl.server.interfaces", "qualname": "IGame.id", "kind": "variable", "doc": "\n", "annotation": ": uuid.UUID"}, "comprl.server.interfaces.IGame.players": {"fullname": "comprl.server.interfaces.IGame.players", "modulename": "comprl.server.interfaces", "qualname": "IGame.players", "kind": "variable", "doc": "\n"}, "comprl.server.interfaces.IGame.finish_callbacks": {"fullname": "comprl.server.interfaces.IGame.finish_callbacks", "modulename": "comprl.server.interfaces", "qualname": "IGame.finish_callbacks", "kind": "variable", "doc": "\n", "annotation": ": list[typing.Callable[[comprl.server.interfaces.IGame], NoneType]]"}, "comprl.server.interfaces.IGame.scores": {"fullname": "comprl.server.interfaces.IGame.scores", "modulename": "comprl.server.interfaces", "qualname": "IGame.scores", "kind": "variable", "doc": "\n", "annotation": ": dict[uuid.UUID, float]"}, "comprl.server.interfaces.IGame.start_time": {"fullname": "comprl.server.interfaces.IGame.start_time", "modulename": "comprl.server.interfaces", "qualname": "IGame.start_time", "kind": "variable", "doc": "\n"}, "comprl.server.interfaces.IGame.disconnected_player_id": {"fullname": "comprl.server.interfaces.IGame.disconnected_player_id", "modulename": "comprl.server.interfaces", "qualname": "IGame.disconnected_player_id", "kind": "variable", "doc": "\n", "annotation": ": uuid.UUID | None"}, "comprl.server.interfaces.IGame.game_info": {"fullname": "comprl.server.interfaces.IGame.game_info", "modulename": "comprl.server.interfaces", "qualname": "IGame.game_info", "kind": "variable", "doc": "\n", "annotation": ": dict[str, list[numpy.ndarray]]"}, "comprl.server.interfaces.IGame.all_actions": {"fullname": "comprl.server.interfaces.IGame.all_actions", "modulename": "comprl.server.interfaces", "qualname": "IGame.all_actions", "kind": "variable", "doc": "\n", "annotation": ": list[numpy.ndarray]"}, "comprl.server.interfaces.IGame.add_finish_callback": {"fullname": "comprl.server.interfaces.IGame.add_finish_callback", "modulename": "comprl.server.interfaces", "qualname": "IGame.add_finish_callback", "kind": "function", "doc": "Adds a callback function to be executed when the game ends.
\n\nArgs:\n callback (Callable[[\"IGame\"], None]): The callback function to be added.
\n", "signature": "(\tself,\tcallback: Callable[[comprl.server.interfaces.IGame], NoneType]) -> None:", "funcdef": "def"}, "comprl.server.interfaces.IGame.start": {"fullname": "comprl.server.interfaces.IGame.start", "modulename": "comprl.server.interfaces", "qualname": "IGame.start", "kind": "function", "doc": "Notifies all players that the game has started and starts the game cycle.
\n", "signature": "(self):", "funcdef": "def"}, "comprl.server.interfaces.IGame.force_end": {"fullname": "comprl.server.interfaces.IGame.force_end", "modulename": "comprl.server.interfaces", "qualname": "IGame.force_end", "kind": "function", "doc": "forces the end of the game. Should be used when a player disconnects.
\n\nArgs:\n player_id (PlayerID): the player that caused the forced end (disconnected)
\n", "signature": "(self, player_id: uuid.UUID):", "funcdef": "def"}, "comprl.server.interfaces.IGame.get_result": {"fullname": "comprl.server.interfaces.IGame.get_result", "modulename": "comprl.server.interfaces", "qualname": "IGame.get_result", "kind": "function", "doc": "Returns the result of the game.
\n\nReturns:\n GameResult: The result of the game.
\n", "signature": "(self) -> comprl.server.data.interfaces.GameResult | None:", "funcdef": "def"}, "comprl.server.interfaces.IServer": {"fullname": "comprl.server.interfaces.IServer", "modulename": "comprl.server.interfaces", "qualname": "IServer", "kind": "class", "doc": "Interface for the server.
\n\nThis interface defines the methods that a server implementation should provide.
\n"}, "comprl.server.interfaces.IServer.on_start": {"fullname": "comprl.server.interfaces.IServer.on_start", "modulename": "comprl.server.interfaces", "qualname": "IServer.on_start", "kind": "function", "doc": "Gets called when the server starts.
\n", "signature": "(self):", "funcdef": "def"}, "comprl.server.interfaces.IServer.on_stop": {"fullname": "comprl.server.interfaces.IServer.on_stop", "modulename": "comprl.server.interfaces", "qualname": "IServer.on_stop", "kind": "function", "doc": "Gets called when the server stops.
\n", "signature": "(self):", "funcdef": "def"}, "comprl.server.interfaces.IServer.on_connect": {"fullname": "comprl.server.interfaces.IServer.on_connect", "modulename": "comprl.server.interfaces", "qualname": "IServer.on_connect", "kind": "function", "doc": "Gets called when a player connects.\nArgs:\n player (IPlayer): The player that has connected.
\n", "signature": "(self, player: comprl.server.interfaces.IPlayer):", "funcdef": "def"}, "comprl.server.interfaces.IServer.on_disconnect": {"fullname": "comprl.server.interfaces.IServer.on_disconnect", "modulename": "comprl.server.interfaces", "qualname": "IServer.on_disconnect", "kind": "function", "doc": "Gets called when a player disconnects.\nArgs:\n player (IPlayer): The player that has disconnected.
\n", "signature": "(self, player: comprl.server.interfaces.IPlayer):", "funcdef": "def"}, "comprl.server.interfaces.IServer.on_timeout": {"fullname": "comprl.server.interfaces.IServer.on_timeout", "modulename": "comprl.server.interfaces", "qualname": "IServer.on_timeout", "kind": "function", "doc": "Gets called when a player has a timeout.\nArgs:\n player (IPlayer): The player that has a timeout.
\n", "signature": "(self, player: comprl.server.interfaces.IPlayer, failure, timeout):", "funcdef": "def"}, "comprl.server.interfaces.IServer.on_remote_error": {"fullname": "comprl.server.interfaces.IServer.on_remote_error", "modulename": "comprl.server.interfaces", "qualname": "IServer.on_remote_error", "kind": "function", "doc": "Gets called when an error in deferred occurs.\nArgs:\n player (IPlayer): The player that caused the error.\n error (Exception): Error that occurred
\n", "signature": "(self, player: comprl.server.interfaces.IPlayer, error):", "funcdef": "def"}, "comprl.server.interfaces.IServer.on_update": {"fullname": "comprl.server.interfaces.IServer.on_update", "modulename": "comprl.server.interfaces", "qualname": "IServer.on_update", "kind": "function", "doc": "Gets called when the server updates.\nFrequency depends on the final implementation.
\n", "signature": "(self):", "funcdef": "def"}, "comprl.server.managers": {"fullname": "comprl.server.managers", "modulename": "comprl.server.managers", "kind": "module", "doc": "This module contains classes that manage game instances and players.
\n"}, "comprl.server.managers.GameManager": {"fullname": "comprl.server.managers.GameManager", "modulename": "comprl.server.managers", "qualname": "GameManager", "kind": "class", "doc": "A class that manages game instances of a specific game type.
\n\nAttributes:\n games (dict[GameID, IGame]): A dictionary that stores active game instances.\n game_type (Type[IGame]): The type of game to be managed.
\n"}, "comprl.server.managers.GameManager.__init__": {"fullname": "comprl.server.managers.GameManager.__init__", "modulename": "comprl.server.managers", "qualname": "GameManager.__init__", "kind": "function", "doc": "\n", "signature": "(game_type: Type[comprl.server.interfaces.IGame])"}, "comprl.server.managers.GameManager.games": {"fullname": "comprl.server.managers.GameManager.games", "modulename": "comprl.server.managers", "qualname": "GameManager.games", "kind": "variable", "doc": "\n", "annotation": ": dict[uuid.UUID, comprl.server.interfaces.IGame]"}, "comprl.server.managers.GameManager.game_type": {"fullname": "comprl.server.managers.GameManager.game_type", "modulename": "comprl.server.managers", "qualname": "GameManager.game_type", "kind": "variable", "doc": "\n"}, "comprl.server.managers.GameManager.start_game": {"fullname": "comprl.server.managers.GameManager.start_game", "modulename": "comprl.server.managers", "qualname": "GameManager.start_game", "kind": "function", "doc": "Starts a new game instance with the given players.
\n\nArgs:\n players (list[IPlayer]): A list of players participating in the game.
\n\nReturns:\n GameID: The ID of the newly started game.
\n", "signature": "(\tself,\tplayers: list[comprl.server.interfaces.IPlayer]) -> comprl.server.interfaces.IGame:", "funcdef": "def"}, "comprl.server.managers.GameManager.end_game": {"fullname": "comprl.server.managers.GameManager.end_game", "modulename": "comprl.server.managers", "qualname": "GameManager.end_game", "kind": "function", "doc": "Ends the game instance with the specified ID.
\n\nArgs:\n game_id (GameID): The ID of the game to be ended.
\n", "signature": "(self, game: comprl.server.interfaces.IGame) -> None:", "funcdef": "def"}, "comprl.server.managers.GameManager.force_game_end": {"fullname": "comprl.server.managers.GameManager.force_game_end", "modulename": "comprl.server.managers", "qualname": "GameManager.force_game_end", "kind": "function", "doc": "Forces all games, that a player is currently playing, to end.
\n\nArgs:\n player_id (PlayerID): id of the player
\n", "signature": "(self, player_id: uuid.UUID):", "funcdef": "def"}, "comprl.server.managers.GameManager.get": {"fullname": "comprl.server.managers.GameManager.get", "modulename": "comprl.server.managers", "qualname": "GameManager.get", "kind": "function", "doc": "Retrieves the game instance with the specified ID.
\n\nArgs:\n game_id (GameID): The ID of the game to be retrieved.
\n\nReturns:\n Optional[IGame]: The game instance if found, None otherwise.
\n", "signature": "(self, game_id: uuid.UUID) -> comprl.server.interfaces.IGame | None:", "funcdef": "def"}, "comprl.server.managers.GameManager.get_stored_actions": {"fullname": "comprl.server.managers.GameManager.get_stored_actions", "modulename": "comprl.server.managers", "qualname": "GameManager.get_stored_actions", "kind": "function", "doc": "get a game from the log file
\n\nArgs:\n game_id (GameID): id of the game we want to get\nReturns:\n dict[str, list[np.ndarray]]: the dict containing the actions and possible\n more info
\n", "signature": "(self, game_id: uuid.UUID) -> dict[str, list[numpy.ndarray]]:", "funcdef": "def"}, "comprl.server.managers.PlayerManager": {"fullname": "comprl.server.managers.PlayerManager", "modulename": "comprl.server.managers", "qualname": "PlayerManager", "kind": "class", "doc": "Manages connected players.
\n"}, "comprl.server.managers.PlayerManager.auth_players": {"fullname": "comprl.server.managers.PlayerManager.auth_players", "modulename": "comprl.server.managers", "qualname": "PlayerManager.auth_players", "kind": "variable", "doc": "\n", "annotation": ": dict[uuid.UUID, tuple[comprl.server.interfaces.IPlayer, int]]"}, "comprl.server.managers.PlayerManager.connected_players": {"fullname": "comprl.server.managers.PlayerManager.connected_players", "modulename": "comprl.server.managers", "qualname": "PlayerManager.connected_players", "kind": "variable", "doc": "\n", "annotation": ": dict[uuid.UUID, comprl.server.interfaces.IPlayer]"}, "comprl.server.managers.PlayerManager.add": {"fullname": "comprl.server.managers.PlayerManager.add", "modulename": "comprl.server.managers", "qualname": "PlayerManager.add", "kind": "function", "doc": "Adds a player to the manager.
\n\nArgs:\n player (IPlayer): The player object to be added.
\n\nReturns:\n None
\n", "signature": "(self, player: comprl.server.interfaces.IPlayer) -> None:", "funcdef": "def"}, "comprl.server.managers.PlayerManager.auth": {"fullname": "comprl.server.managers.PlayerManager.auth", "modulename": "comprl.server.managers", "qualname": "PlayerManager.auth", "kind": "function", "doc": "Authenticates a player using their player ID and token.
\n\nArgs:\n player_id (PlayerID): The ID of the player.\n token (str): The authentication token.
\n\nReturns:\n bool: True if the authentication is successful, False otherwise.
\n", "signature": "(self, player_id: uuid.UUID, token: str) -> bool:", "funcdef": "def"}, "comprl.server.managers.PlayerManager.remove": {"fullname": "comprl.server.managers.PlayerManager.remove", "modulename": "comprl.server.managers", "qualname": "PlayerManager.remove", "kind": "function", "doc": "Removes a player from the manager.
\n\nArgs:\n player (IPlayer): The player object to be removed.
\n\nReturns:\n None
\n", "signature": "(self, player: comprl.server.interfaces.IPlayer) -> None:", "funcdef": "def"}, "comprl.server.managers.PlayerManager.get_user_id": {"fullname": "comprl.server.managers.PlayerManager.get_user_id", "modulename": "comprl.server.managers", "qualname": "PlayerManager.get_user_id", "kind": "function", "doc": "Retrieves the user ID associated with a player.
\n\nArgs:\n player_id (PlayerID): The ID of the player.
\n\nReturns:\n Optional[int]: The user ID if found, None otherwise.
\n", "signature": "(self, player_id: uuid.UUID) -> int | None:", "funcdef": "def"}, "comprl.server.managers.PlayerManager.get_player_by_id": {"fullname": "comprl.server.managers.PlayerManager.get_player_by_id", "modulename": "comprl.server.managers", "qualname": "PlayerManager.get_player_by_id", "kind": "function", "doc": "Retrieves the player object associated with a player ID.\nThis only works for authenticated players.
\n\nArgs:\n player_id (PlayerID): The ID of the player.
\n\nReturns:\n Optional[IPlayer]: The player object if found, None otherwise.
\n", "signature": "(self, player_id: uuid.UUID) -> comprl.server.interfaces.IPlayer | None:", "funcdef": "def"}, "comprl.server.managers.PlayerManager.broadcast_error": {"fullname": "comprl.server.managers.PlayerManager.broadcast_error", "modulename": "comprl.server.managers", "qualname": "PlayerManager.broadcast_error", "kind": "function", "doc": "Broadcasts a message to all connected players.
\n\nArgs:\n msg (str): The message to be broadcasted.
\n\nReturns:\n None
\n", "signature": "(self, msg: str) -> None:", "funcdef": "def"}, "comprl.server.managers.PlayerManager.disconnect_all": {"fullname": "comprl.server.managers.PlayerManager.disconnect_all", "modulename": "comprl.server.managers", "qualname": "PlayerManager.disconnect_all", "kind": "function", "doc": "Disconnects all connected players.
\n\nArgs:\n reason (str): The reason for disconnection.
\n\nReturns:\n None
\n", "signature": "(self, reason: str) -> None:", "funcdef": "def"}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"fullname": "comprl.server.managers.PlayerManager.get_matchmaking_parameters", "modulename": "comprl.server.managers", "qualname": "PlayerManager.get_matchmaking_parameters", "kind": "function", "doc": "Retrieves the matchmaking parameters of a user based on their ID.
\n\nArgs:\n user_id (int): The ID of the user.
\n\nReturns:\n tuple[float, float]: The mu and sigma values of the user.
\n", "signature": "(self, user_id: int) -> tuple[float, float]:", "funcdef": "def"}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"fullname": "comprl.server.managers.PlayerManager.update_matchmaking_parameters", "modulename": "comprl.server.managers", "qualname": "PlayerManager.update_matchmaking_parameters", "kind": "function", "doc": "Updates the matchmaking parameters of a user based on their ID.
\n\nArgs:\n user_id (int): The ID of the user.\n new_mu (float): The new mu value of the user.\n new_sigma (float): The new sigma value of the user.
\n", "signature": "(self, user_id: int, new_mu: float, new_sigma: float) -> None:", "funcdef": "def"}, "comprl.server.managers.QueuePlayer": {"fullname": "comprl.server.managers.QueuePlayer", "modulename": "comprl.server.managers", "qualname": "QueuePlayer", "kind": "variable", "doc": "\n", "annotation": ": TypeAlias", "default_value": "tuple[uuid.UUID, int, float, float, datetime.datetime]"}, "comprl.server.managers.MatchmakingManager": {"fullname": "comprl.server.managers.MatchmakingManager", "modulename": "comprl.server.managers", "qualname": "MatchmakingManager", "kind": "class", "doc": "handles matchmaking between players and starts the game
\n"}, "comprl.server.managers.MatchmakingManager.__init__": {"fullname": "comprl.server.managers.MatchmakingManager.__init__", "modulename": "comprl.server.managers", "qualname": "MatchmakingManager.__init__", "kind": "function", "doc": "Initializes a MatchmakingManager object.
\n\nArgs:\n player_manager (PlayerManager): The player manager object.\n game_manager (GameManager): The game manager object.
\n", "signature": "(\tplayer_manager: comprl.server.managers.PlayerManager,\tgame_manager: comprl.server.managers.GameManager)"}, "comprl.server.managers.MatchmakingManager.player_manager": {"fullname": "comprl.server.managers.MatchmakingManager.player_manager", "modulename": "comprl.server.managers", "qualname": "MatchmakingManager.player_manager", "kind": "variable", "doc": "\n"}, "comprl.server.managers.MatchmakingManager.game_manager": {"fullname": "comprl.server.managers.MatchmakingManager.game_manager", "modulename": "comprl.server.managers", "qualname": "MatchmakingManager.game_manager", "kind": "variable", "doc": "\n"}, "comprl.server.managers.MatchmakingManager.model": {"fullname": "comprl.server.managers.MatchmakingManager.model", "modulename": "comprl.server.managers", "qualname": "MatchmakingManager.model", "kind": "variable", "doc": "\n"}, "comprl.server.managers.MatchmakingManager.try_match": {"fullname": "comprl.server.managers.MatchmakingManager.try_match", "modulename": "comprl.server.managers", "qualname": "MatchmakingManager.try_match", "kind": "function", "doc": "Tries to add a player with the given player ID to the matchmaking queue.
\n\nArgs:\n player_id (PlayerID): The ID of the player to match.
\n\nReturns:\n None
\n", "signature": "(self, player_id: uuid.UUID) -> None:", "funcdef": "def"}, "comprl.server.managers.MatchmakingManager.match": {"fullname": "comprl.server.managers.MatchmakingManager.match", "modulename": "comprl.server.managers", "qualname": "MatchmakingManager.match", "kind": "function", "doc": "Adds player to the queue.
\n\nArgs:\n player_id (PlayerID): The ID of the player to be matched.
\n", "signature": "(self, player_id: uuid.UUID) -> None:", "funcdef": "def"}, "comprl.server.managers.MatchmakingManager.remove": {"fullname": "comprl.server.managers.MatchmakingManager.remove", "modulename": "comprl.server.managers", "qualname": "MatchmakingManager.remove", "kind": "function", "doc": "Removes a player from the matchmaking queue.
\n\nArgs:\n player_id (PlayerID): The ID of the player to be removed.
\n", "signature": "(self, player_id: uuid.UUID) -> None:", "funcdef": "def"}, "comprl.server.networking": {"fullname": "comprl.server.networking", "modulename": "comprl.server.networking", "kind": "module", "doc": "contains the networking components of the server
\n"}, "comprl.server.networking.VERSION": {"fullname": "comprl.server.networking.VERSION", "modulename": "comprl.server.networking", "qualname": "VERSION", "kind": "variable", "doc": "\n", "annotation": ": int", "default_value": "1"}, "comprl.server.networking.COMPServerProtocol": {"fullname": "comprl.server.networking.COMPServerProtocol", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol", "kind": "class", "doc": "Represents the server-side protocol for the COMP server.
\n\nThis class extends the amp.AMP
class and provides methods for handling\nvarious events and interactions with the client.
Attributes:\n connection_made_callbacks (list[Callable[[], None]]): List of callbacks\n to be executed when the connection is made.\n connection_lost_callbacks (list[Callable[[], None]]): List of callbacks\n to be executed when the connection is lost.
\n", "bases": "twisted.protocols.amp.AMP"}, "comprl.server.networking.COMPServerProtocol.__init__": {"fullname": "comprl.server.networking.COMPServerProtocol.__init__", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.__init__", "kind": "function", "doc": "\n", "signature": "(boxReceiver=None, locator=None)"}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"fullname": "comprl.server.networking.COMPServerProtocol.connection_made_callbacks", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.connection_made_callbacks", "kind": "variable", "doc": "\n", "annotation": ": list[typing.Callable[[], NoneType]]"}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"fullname": "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.connection_lost_callbacks", "kind": "variable", "doc": "\n", "annotation": ": list[typing.Callable[[], NoneType]]"}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"fullname": "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.connection_timeout_callbacks", "kind": "variable", "doc": "\n", "annotation": ": list[typing.Callable[[typing.Any, typing.Any], NoneType]]"}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"fullname": "comprl.server.networking.COMPServerProtocol.connection_error_callbacks", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.connection_error_callbacks", "kind": "variable", "doc": "\n", "annotation": ": list[typing.Callable[[typing.Any], NoneType]]"}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"fullname": "comprl.server.networking.COMPServerProtocol.add_connection_made_callback", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.add_connection_made_callback", "kind": "function", "doc": "adds callback that is executed, when the connection is made
\n\nArgs:\n callback (function): callback to execute, when the connection is made
\n\nReturns:\n None
\n", "signature": "(self, callback: Callable[[], NoneType]):", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"fullname": "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.add_connection_lost_callback", "kind": "function", "doc": "Adds a callback function to be executed when the connection is lost.
\n\nArgs:\n callback: The callback function to be added.
\n\nReturns:\n None
\n", "signature": "(self, callback: Callable[[], NoneType]):", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"fullname": "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.add_connection_timeout_callback", "kind": "function", "doc": "Adds a callback function to be executed when there is a timeout.
\n\nArgs:\n callback: The callback function to be added.
\n\nReturns:\n None
\n", "signature": "(self, callback: Callable[[Any, Any], NoneType]):", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"fullname": "comprl.server.networking.COMPServerProtocol.add_connection_error_callback", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.add_connection_error_callback", "kind": "function", "doc": "Adds a callback function to be executed when there occurs an error in deferred.
\n\nArgs:\n callback: The callback function to be added.
\n\nReturns:\n None
\n", "signature": "(self, callback: Callable[[Any], NoneType]):", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"fullname": "comprl.server.networking.COMPServerProtocol.connectionMade", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.connectionMade", "kind": "function", "doc": "Called when the connection to the client is established.
\n\nReturns:\n None
\n", "signature": "(self) -> None:", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"fullname": "comprl.server.networking.COMPServerProtocol.connectionLost", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.connectionLost", "kind": "function", "doc": "Called when the connection to the client is lost.
\n\nArgs:\n reason: The reason for the connection loss.
\n\nReturns:\n None
\n", "signature": "(self, reason):", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"fullname": "comprl.server.networking.COMPServerProtocol.connectionTimeout", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.connectionTimeout", "kind": "function", "doc": "Handles the timeout event for a connection.
\n\nArgs:\n failure: The failure object representing the timeout.\n timeout: The timeout value in seconds.\nReturns:\n None
\n", "signature": "(self, failure, timeout) -> None:", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.connection_error": {"fullname": "comprl.server.networking.COMPServerProtocol.connection_error", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.connection_error", "kind": "function", "doc": "Is called when an error in Deferred occurs
\n\nArgs:\n place : where the error was caused\n error : description of the error
\n", "signature": "(self, error) -> None:", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.get_token": {"fullname": "comprl.server.networking.COMPServerProtocol.get_token", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.get_token", "kind": "function", "doc": "Retrieves a token from the client and calls the return_callback\nfunction with the token.
\n\nArgs:\n return_callback (Callable[[str], None]): A callback function that takes\n a string parameter.
\n\nReturns:\n None
\n", "signature": "(self, return_callback: Callable[[str], NoneType]) -> None:", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.is_ready": {"fullname": "comprl.server.networking.COMPServerProtocol.is_ready", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.is_ready", "kind": "function", "doc": "Checks if the client is ready.
\n\nArgs:\n return_callback (Callable[[bool], None]): A callback function that will\n be called with the result of the check.
\n\nReturns:\n bool: Containing the information if the client is ready.
\n", "signature": "(self, return_callback: Callable[[bool], NoneType]) -> bool:", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.notify_start": {"fullname": "comprl.server.networking.COMPServerProtocol.notify_start", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.notify_start", "kind": "function", "doc": "Notifies the client that a game has started.
\n\nArgs:\n game_id (GameID): The ID of the game that has started.
\n", "signature": "(self, game_id: uuid.UUID) -> None:", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.get_step": {"fullname": "comprl.server.networking.COMPServerProtocol.get_step", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.get_step", "kind": "function", "doc": "Sends an observation to the remote client and retrieves the corresponding\naction.
\n\nArgs:\n obv (list[float]): The observation to send to the client.\n return_callback (Callable[[list], None]): The callback function to be\n called with the retrieved action.
\n\nReturns:\n None
\n", "signature": "(\tself,\tobv: list[float],\treturn_callback: Callable[[list], NoneType]) -> None:", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.notify_end": {"fullname": "comprl.server.networking.COMPServerProtocol.notify_end", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.notify_end", "kind": "function", "doc": "Notifies the remote client about the end of the game.
\n\nArgs:\n result: The result of the game.\n stats: The statistics of the game.
\n\nReturns:\n None
\n", "signature": "(self, result, stats) -> None:", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.send_error": {"fullname": "comprl.server.networking.COMPServerProtocol.send_error", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.send_error", "kind": "function", "doc": "Send an error string to the client.
\n\nArgs:\n msg (str): The error message to send.
\n\nReturns:\n None
\n", "signature": "(self, msg: str):", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.send_message": {"fullname": "comprl.server.networking.COMPServerProtocol.send_message", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.send_message", "kind": "function", "doc": "Send a message string to the client.
\n\nArgs:\n msg (str): The message to send.
\n\nReturns:\n None
\n", "signature": "(self, msg: str):", "funcdef": "def"}, "comprl.server.networking.COMPServerProtocol.disconnect": {"fullname": "comprl.server.networking.COMPServerProtocol.disconnect", "modulename": "comprl.server.networking", "qualname": "COMPServerProtocol.disconnect", "kind": "function", "doc": "Disconnects the client from the server.
\n\nReturns:\n None
\n", "signature": "(self):", "funcdef": "def"}, "comprl.server.networking.COMPPlayer": {"fullname": "comprl.server.networking.COMPPlayer", "modulename": "comprl.server.networking", "qualname": "COMPPlayer", "kind": "class", "doc": "Represents a player in the COMP game.
\n\nAttributes:\n connection (COMPServerProtocol): The networking connection for the player.
\n", "bases": "comprl.server.interfaces.IPlayer"}, "comprl.server.networking.COMPPlayer.__init__": {"fullname": "comprl.server.networking.COMPPlayer.__init__", "modulename": "comprl.server.networking", "qualname": "COMPPlayer.__init__", "kind": "function", "doc": "Initialize the COMPPlayer instance.
\n\nArgs:\n connection (COMPServerProtocol): The networking connection for the player.
\n", "signature": "(connection: comprl.server.networking.COMPServerProtocol)"}, "comprl.server.networking.COMPPlayer.connection": {"fullname": "comprl.server.networking.COMPPlayer.connection", "modulename": "comprl.server.networking", "qualname": "COMPPlayer.connection", "kind": "variable", "doc": "\n", "annotation": ": comprl.server.networking.COMPServerProtocol"}, "comprl.server.networking.COMPPlayer.is_connected": {"fullname": "comprl.server.networking.COMPPlayer.is_connected", "modulename": "comprl.server.networking", "qualname": "COMPPlayer.is_connected", "kind": "variable", "doc": "\n", "annotation": ": bool"}, "comprl.server.networking.COMPPlayer.authenticate": {"fullname": "comprl.server.networking.COMPPlayer.authenticate", "modulename": "comprl.server.networking", "qualname": "COMPPlayer.authenticate", "kind": "function", "doc": "Authenticates the player.
\n\nArgs:\n result_callback (callback function):\n The callback to handle the authentication result.
\n\nReturns:\n token (string): The authentication token.
\n", "signature": "(self, result_callback):", "funcdef": "def"}, "comprl.server.networking.COMPPlayer.is_ready": {"fullname": "comprl.server.networking.COMPPlayer.is_ready", "modulename": "comprl.server.networking", "qualname": "COMPPlayer.is_ready", "kind": "function", "doc": "Checks if the player is ready to play.
\n\nArgs:\n result_callback (callback function): The callback to handle the result.
\n\nReturns:\n bool: True if the player is ready to play, False otherwise.
\n", "signature": "(self, result_callback) -> bool:", "funcdef": "def"}, "comprl.server.networking.COMPPlayer.notify_start": {"fullname": "comprl.server.networking.COMPPlayer.notify_start", "modulename": "comprl.server.networking", "qualname": "COMPPlayer.notify_start", "kind": "function", "doc": "Notifies the player about the start of the game.
\n\nArgs:\n game_id (GameID): The ID of the game.
\n", "signature": "(self, game_id: uuid.UUID):", "funcdef": "def"}, "comprl.server.networking.COMPPlayer.get_action": {"fullname": "comprl.server.networking.COMPPlayer.get_action", "modulename": "comprl.server.networking", "qualname": "COMPPlayer.get_action", "kind": "function", "doc": "Receives the action from the server.
\n\nArgs:\n obv (any): The observation.\n result_callback (callback function): The callback to handle the result.
\n", "signature": "(self, obv, result_callback):", "funcdef": "def"}, "comprl.server.networking.COMPPlayer.notify_end": {"fullname": "comprl.server.networking.COMPPlayer.notify_end", "modulename": "comprl.server.networking", "qualname": "COMPPlayer.notify_end", "kind": "function", "doc": "Called when the game ends.
\n\nArgs:\n result (any): The result of the game.\n stats (any): The stats of the game.
\n", "signature": "(self, result, stats):", "funcdef": "def"}, "comprl.server.networking.COMPPlayer.disconnect": {"fullname": "comprl.server.networking.COMPPlayer.disconnect", "modulename": "comprl.server.networking", "qualname": "COMPPlayer.disconnect", "kind": "function", "doc": "Disconnects the player.
\n\nArgs:\n reason (str): The reason for the disconnection.
\n", "signature": "(self, reason: str):", "funcdef": "def"}, "comprl.server.networking.COMPPlayer.notify_error": {"fullname": "comprl.server.networking.COMPPlayer.notify_error", "modulename": "comprl.server.networking", "qualname": "COMPPlayer.notify_error", "kind": "function", "doc": "Notifies the player of an error.
\n\nArgs:\n error (str): The error message.
\n", "signature": "(self, error: str):", "funcdef": "def"}, "comprl.server.networking.COMPPlayer.notify_info": {"fullname": "comprl.server.networking.COMPPlayer.notify_info", "modulename": "comprl.server.networking", "qualname": "COMPPlayer.notify_info", "kind": "function", "doc": "Notifies the player of an information.
\n\nArgs:\n msg (str): The information message.
\n", "signature": "(self, msg: str):", "funcdef": "def"}, "comprl.server.networking.COMPFactory": {"fullname": "comprl.server.networking.COMPFactory", "modulename": "comprl.server.networking", "qualname": "COMPFactory", "kind": "class", "doc": "Factory for COMP servers.
\n\nThis class represents a factory for creating COMP servers.\nIt is responsible for starting and stopping the server, as well as building\nthe protocol for incoming connections.
\n\nAttributes:\n server (IServer): The server instance associated with this factory.
\n", "bases": "twisted.internet.protocol.ServerFactory"}, "comprl.server.networking.COMPFactory.__init__": {"fullname": "comprl.server.networking.COMPFactory.__init__", "modulename": "comprl.server.networking", "qualname": "COMPFactory.__init__", "kind": "function", "doc": "\n", "signature": "(server: comprl.server.interfaces.IServer)"}, "comprl.server.networking.COMPFactory.server": {"fullname": "comprl.server.networking.COMPFactory.server", "modulename": "comprl.server.networking", "qualname": "COMPFactory.server", "kind": "variable", "doc": "\n", "annotation": ": comprl.server.interfaces.IServer"}, "comprl.server.networking.COMPFactory.startFactory": {"fullname": "comprl.server.networking.COMPFactory.startFactory", "modulename": "comprl.server.networking", "qualname": "COMPFactory.startFactory", "kind": "function", "doc": "Start the server factory.
\n", "signature": "(self) -> None:", "funcdef": "def"}, "comprl.server.networking.COMPFactory.stopFactory": {"fullname": "comprl.server.networking.COMPFactory.stopFactory", "modulename": "comprl.server.networking", "qualname": "COMPFactory.stopFactory", "kind": "function", "doc": "Stop the server factory.
\n", "signature": "(self) -> None:", "funcdef": "def"}, "comprl.server.networking.COMPFactory.buildProtocol": {"fullname": "comprl.server.networking.COMPFactory.buildProtocol", "modulename": "comprl.server.networking", "qualname": "COMPFactory.buildProtocol", "kind": "function", "doc": "Build the protocol for incoming connections.
\n\nArgs:\n addr (IAddress): The address of the incoming connection.
\n\nReturns:\n Protocol | None: The protocol for the incoming connection.
\n", "signature": "(\tself,\taddr: <InterfaceClass twisted.internet.interfaces.IAddress>) -> twisted.internet.protocol.Protocol | None:", "funcdef": "def"}, "comprl.server.networking.launch_server": {"fullname": "comprl.server.networking.launch_server", "modulename": "comprl.server.networking", "qualname": "launch_server", "kind": "function", "doc": "Create a COMP server.
\n\nArgs:\n server (IServer): The server instance to be used.\n port (int): The port number of the server. Defaults to 65335.
\n", "signature": "(server: comprl.server.interfaces.IServer, port: int = 65335) -> None:", "funcdef": "def"}, "comprl.server.util": {"fullname": "comprl.server.util", "modulename": "comprl.server.util", "kind": "module", "doc": "This module contains utility functions for the server.
\n"}, "comprl.server.util.IDGenerator": {"fullname": "comprl.server.util.IDGenerator", "modulename": "comprl.server.util", "qualname": "IDGenerator", "kind": "class", "doc": "handles the creation of id's
\n"}, "comprl.server.util.IDGenerator.generate_player_id": {"fullname": "comprl.server.util.IDGenerator.generate_player_id", "modulename": "comprl.server.util", "qualname": "IDGenerator.generate_player_id", "kind": "function", "doc": "generates a unique id for players
\n\nReturns:\n PlayerID: obtained id
\n", "signature": "() -> uuid.UUID:", "funcdef": "def"}, "comprl.server.util.IDGenerator.generate_game_id": {"fullname": "comprl.server.util.IDGenerator.generate_game_id", "modulename": "comprl.server.util", "qualname": "IDGenerator.generate_game_id", "kind": "function", "doc": "generates a unique id for games
\n\nReturns:\n GameID: obtained id
\n", "signature": "() -> uuid.UUID:", "funcdef": "def"}, "comprl.server.util.ConfigProvider": {"fullname": "comprl.server.util.ConfigProvider", "modulename": "comprl.server.util", "qualname": "ConfigProvider", "kind": "class", "doc": "provides configuration settings
\n"}, "comprl.server.util.ConfigProvider.get": {"fullname": "comprl.server.util.ConfigProvider.get", "modulename": "comprl.server.util", "qualname": "ConfigProvider.get", "kind": "function", "doc": "gets a configuration setting
\n\nArgs:\n key (str): key of the setting
\n\nReturns:\n Any: value of the setting
\n", "signature": "(key):", "funcdef": "def"}, "comprl.server.util.ConfigProvider.set": {"fullname": "comprl.server.util.ConfigProvider.set", "modulename": "comprl.server.util", "qualname": "ConfigProvider.set", "kind": "function", "doc": "sets a configuration setting
\n\nArgs:\n key (str): key of the setting\n value (Any): value of the setting
\n", "signature": "(key, value):", "funcdef": "def"}, "comprl.shared": {"fullname": "comprl.shared", "modulename": "comprl.shared", "kind": "module", "doc": "\n"}, "comprl.shared.commands": {"fullname": "comprl.shared.commands", "modulename": "comprl.shared.commands", "kind": "module", "doc": "Defines the commands used for the server client communication.
\n"}, "comprl.shared.commands.Auth": {"fullname": "comprl.shared.commands.Auth", "modulename": "comprl.shared.commands", "qualname": "Auth", "kind": "class", "doc": "Command for authenticating the client with the server.
\n\nArguments:\n token (String): Token of the client\n version (Integer): Version number of the running client framework
\n\nResponse:\n uuid (Integer): UUID assigned by the server to the client
\n", "bases": "twisted.protocols.amp.Command"}, "comprl.shared.commands.Auth.arguments": {"fullname": "comprl.shared.commands.Auth.arguments", "modulename": "comprl.shared.commands", "qualname": "Auth.arguments", "kind": "variable", "doc": "\n", "default_value": "[]"}, "comprl.shared.commands.Auth.response": {"fullname": "comprl.shared.commands.Auth.response", "modulename": "comprl.shared.commands", "qualname": "Auth.response", "kind": "variable", "doc": "\n", "default_value": "[(b'token', <twisted.protocols.amp.String object>), (b'version', <twisted.protocols.amp.Integer object>)]"}, "comprl.shared.commands.Auth.reverseErrors": {"fullname": "comprl.shared.commands.Auth.reverseErrors", "modulename": "comprl.shared.commands", "qualname": "Auth.reverseErrors", "kind": "variable", "doc": "\n", "default_value": "{}"}, "comprl.shared.commands.Auth.allErrors": {"fullname": "comprl.shared.commands.Auth.allErrors", "modulename": "comprl.shared.commands", "qualname": "Auth.allErrors", "kind": "variable", "doc": "\n", "default_value": "{}"}, "comprl.shared.commands.Auth.commandName": {"fullname": "comprl.shared.commands.Auth.commandName", "modulename": "comprl.shared.commands", "qualname": "Auth.commandName", "kind": "variable", "doc": "\n", "default_value": "b'Auth'"}, "comprl.shared.commands.Ready": {"fullname": "comprl.shared.commands.Ready", "modulename": "comprl.shared.commands", "qualname": "Ready", "kind": "class", "doc": "Command to check if the client is ready to start the game
\n", "bases": "twisted.protocols.amp.Command"}, "comprl.shared.commands.Ready.arguments": {"fullname": "comprl.shared.commands.Ready.arguments", "modulename": "comprl.shared.commands", "qualname": "Ready.arguments", "kind": "variable", "doc": "\n", "default_value": "[]"}, "comprl.shared.commands.Ready.response": {"fullname": "comprl.shared.commands.Ready.response", "modulename": "comprl.shared.commands", "qualname": "Ready.response", "kind": "variable", "doc": "\n", "default_value": "[(b'ready', <twisted.protocols.amp.Boolean object>)]"}, "comprl.shared.commands.Ready.reverseErrors": {"fullname": "comprl.shared.commands.Ready.reverseErrors", "modulename": "comprl.shared.commands", "qualname": "Ready.reverseErrors", "kind": "variable", "doc": "\n", "default_value": "{}"}, "comprl.shared.commands.Ready.allErrors": {"fullname": "comprl.shared.commands.Ready.allErrors", "modulename": "comprl.shared.commands", "qualname": "Ready.allErrors", "kind": "variable", "doc": "\n", "default_value": "{}"}, "comprl.shared.commands.Ready.commandName": {"fullname": "comprl.shared.commands.Ready.commandName", "modulename": "comprl.shared.commands", "qualname": "Ready.commandName", "kind": "variable", "doc": "\n", "default_value": "b'Ready'"}, "comprl.shared.commands.StartGame": {"fullname": "comprl.shared.commands.StartGame", "modulename": "comprl.shared.commands", "qualname": "StartGame", "kind": "class", "doc": "Command to notify the client that the game starts
\n", "bases": "twisted.protocols.amp.Command"}, "comprl.shared.commands.StartGame.arguments": {"fullname": "comprl.shared.commands.StartGame.arguments", "modulename": "comprl.shared.commands", "qualname": "StartGame.arguments", "kind": "variable", "doc": "\n", "default_value": "[(b'game_id', <twisted.protocols.amp.String object>)]"}, "comprl.shared.commands.StartGame.response": {"fullname": "comprl.shared.commands.StartGame.response", "modulename": "comprl.shared.commands", "qualname": "StartGame.response", "kind": "variable", "doc": "\n", "default_value": "[]"}, "comprl.shared.commands.StartGame.reverseErrors": {"fullname": "comprl.shared.commands.StartGame.reverseErrors", "modulename": "comprl.shared.commands", "qualname": "StartGame.reverseErrors", "kind": "variable", "doc": "\n", "default_value": "{}"}, "comprl.shared.commands.StartGame.allErrors": {"fullname": "comprl.shared.commands.StartGame.allErrors", "modulename": "comprl.shared.commands", "qualname": "StartGame.allErrors", "kind": "variable", "doc": "\n", "default_value": "{}"}, "comprl.shared.commands.StartGame.commandName": {"fullname": "comprl.shared.commands.StartGame.commandName", "modulename": "comprl.shared.commands", "qualname": "StartGame.commandName", "kind": "variable", "doc": "\n", "default_value": "b'StartGame'"}, "comprl.shared.commands.EndGame": {"fullname": "comprl.shared.commands.EndGame", "modulename": "comprl.shared.commands", "qualname": "EndGame", "kind": "class", "doc": "Command to notify the client that the game has ended
\n", "bases": "twisted.protocols.amp.Command"}, "comprl.shared.commands.EndGame.arguments": {"fullname": "comprl.shared.commands.EndGame.arguments", "modulename": "comprl.shared.commands", "qualname": "EndGame.arguments", "kind": "variable", "doc": "\n", "default_value": "[(b'result', <twisted.protocols.amp.Boolean object>), (b'stats', <twisted.protocols.amp.ListOf object>)]"}, "comprl.shared.commands.EndGame.response": {"fullname": "comprl.shared.commands.EndGame.response", "modulename": "comprl.shared.commands", "qualname": "EndGame.response", "kind": "variable", "doc": "\n", "default_value": "[]"}, "comprl.shared.commands.EndGame.reverseErrors": {"fullname": "comprl.shared.commands.EndGame.reverseErrors", "modulename": "comprl.shared.commands", "qualname": "EndGame.reverseErrors", "kind": "variable", "doc": "\n", "default_value": "{}"}, "comprl.shared.commands.EndGame.allErrors": {"fullname": "comprl.shared.commands.EndGame.allErrors", "modulename": "comprl.shared.commands", "qualname": "EndGame.allErrors", "kind": "variable", "doc": "\n", "default_value": "{}"}, "comprl.shared.commands.EndGame.commandName": {"fullname": "comprl.shared.commands.EndGame.commandName", "modulename": "comprl.shared.commands", "qualname": "EndGame.commandName", "kind": "variable", "doc": "\n", "default_value": "b'EndGame'"}, "comprl.shared.commands.Step": {"fullname": "comprl.shared.commands.Step", "modulename": "comprl.shared.commands", "qualname": "Step", "kind": "class", "doc": "Command for requesting the next step from the agent
\n", "bases": "twisted.protocols.amp.Command"}, "comprl.shared.commands.Step.arguments": {"fullname": "comprl.shared.commands.Step.arguments", "modulename": "comprl.shared.commands", "qualname": "Step.arguments", "kind": "variable", "doc": "\n", "default_value": "[(b'obv', <twisted.protocols.amp.ListOf object>)]"}, "comprl.shared.commands.Step.response": {"fullname": "comprl.shared.commands.Step.response", "modulename": "comprl.shared.commands", "qualname": "Step.response", "kind": "variable", "doc": "\n", "default_value": "[(b'action', <twisted.protocols.amp.ListOf object>)]"}, "comprl.shared.commands.Step.reverseErrors": {"fullname": "comprl.shared.commands.Step.reverseErrors", "modulename": "comprl.shared.commands", "qualname": "Step.reverseErrors", "kind": "variable", "doc": "\n", "default_value": "{}"}, "comprl.shared.commands.Step.allErrors": {"fullname": "comprl.shared.commands.Step.allErrors", "modulename": "comprl.shared.commands", "qualname": "Step.allErrors", "kind": "variable", "doc": "\n", "default_value": "{}"}, "comprl.shared.commands.Step.commandName": {"fullname": "comprl.shared.commands.Step.commandName", "modulename": "comprl.shared.commands", "qualname": "Step.commandName", "kind": "variable", "doc": "\n", "default_value": "b'Step'"}, "comprl.shared.commands.Error": {"fullname": "comprl.shared.commands.Error", "modulename": "comprl.shared.commands", "qualname": "Error", "kind": "class", "doc": "Command interface for a generic error message
\n", "bases": "twisted.protocols.amp.Command"}, "comprl.shared.commands.Error.arguments": {"fullname": "comprl.shared.commands.Error.arguments", "modulename": "comprl.shared.commands", "qualname": "Error.arguments", "kind": "variable", "doc": "\n", "default_value": "[(b'msg', <twisted.protocols.amp.String object>)]"}, "comprl.shared.commands.Error.response": {"fullname": "comprl.shared.commands.Error.response", "modulename": "comprl.shared.commands", "qualname": "Error.response", "kind": "variable", "doc": "\n", "default_value": "[]"}, "comprl.shared.commands.Error.reverseErrors": {"fullname": "comprl.shared.commands.Error.reverseErrors", "modulename": "comprl.shared.commands", "qualname": "Error.reverseErrors", "kind": "variable", "doc": "\n", "default_value": "{}"}, "comprl.shared.commands.Error.allErrors": {"fullname": "comprl.shared.commands.Error.allErrors", "modulename": "comprl.shared.commands", "qualname": "Error.allErrors", "kind": "variable", "doc": "\n", "default_value": "{}"}, "comprl.shared.commands.Error.commandName": {"fullname": "comprl.shared.commands.Error.commandName", "modulename": "comprl.shared.commands", "qualname": "Error.commandName", "kind": "variable", "doc": "\n", "default_value": "b'Error'"}, "comprl.shared.commands.Message": {"fullname": "comprl.shared.commands.Message", "modulename": "comprl.shared.commands", "qualname": "Message", "kind": "class", "doc": "Command interface for a generic message
\n", "bases": "twisted.protocols.amp.Command"}, "comprl.shared.commands.Message.arguments": {"fullname": "comprl.shared.commands.Message.arguments", "modulename": "comprl.shared.commands", "qualname": "Message.arguments", "kind": "variable", "doc": "\n", "default_value": "[(b'msg', <twisted.protocols.amp.String object>)]"}, "comprl.shared.commands.Message.response": {"fullname": "comprl.shared.commands.Message.response", "modulename": "comprl.shared.commands", "qualname": "Message.response", "kind": "variable", "doc": "\n", "default_value": "[]"}, "comprl.shared.commands.Message.reverseErrors": {"fullname": "comprl.shared.commands.Message.reverseErrors", "modulename": "comprl.shared.commands", "qualname": "Message.reverseErrors", "kind": "variable", "doc": "\n", "default_value": "{}"}, "comprl.shared.commands.Message.allErrors": {"fullname": "comprl.shared.commands.Message.allErrors", "modulename": "comprl.shared.commands", "qualname": "Message.allErrors", "kind": "variable", "doc": "\n", "default_value": "{}"}, "comprl.shared.commands.Message.commandName": {"fullname": "comprl.shared.commands.Message.commandName", "modulename": "comprl.shared.commands", "qualname": "Message.commandName", "kind": "variable", "doc": "\n", "default_value": "b'Message'"}, "comprl.shared.types": {"fullname": "comprl.shared.types", "modulename": "comprl.shared.types", "kind": "module", "doc": "contains types used by the server and the client
\n"}, "comprl.shared.types.PlayerID": {"fullname": "comprl.shared.types.PlayerID", "modulename": "comprl.shared.types", "qualname": "PlayerID", "kind": "variable", "doc": "\n", "annotation": ": TypeAlias", "default_value": "uuid.UUID"}, "comprl.shared.types.GameID": {"fullname": "comprl.shared.types.GameID", "modulename": "comprl.shared.types", "qualname": "GameID", "kind": "variable", "doc": "\n", "annotation": ": TypeAlias", "default_value": "uuid.UUID"}}, "docInfo": {"comprl": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.client": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 13}, "comprl.client.agent": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 18}, "comprl.client.agent.Agent": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 38}, "comprl.client.agent.Agent.event": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 38}, "comprl.client.agent.Agent.run": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 62, "bases": 0, "doc": 83}, "comprl.client.agent.Agent.on_error": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 12}, "comprl.client.agent.Agent.on_message": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 12}, "comprl.client.agent.Agent.on_disconnect": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 11}, "comprl.client.interfaces": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "comprl.client.interfaces.IAgent": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 12}, "comprl.client.interfaces.IAgent.run": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 22}, "comprl.client.interfaces.IAgent.auth": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 15}, "comprl.client.interfaces.IAgent.is_ready": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 26}, "comprl.client.interfaces.IAgent.on_start_game": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 25, "bases": 0, "doc": 38}, "comprl.client.interfaces.IAgent.get_step": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 32}, "comprl.client.interfaces.IAgent.on_end_game": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 41}, "comprl.client.interfaces.IAgent.on_error": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 18}, "comprl.client.interfaces.IAgent.on_message": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 20}, "comprl.client.interfaces.IAgent.on_disconnect": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 11}, "comprl.client.networking": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 13}, "comprl.client.networking.VERSION": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.client.networking.ClientProtocol": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 22}, "comprl.client.networking.ClientProtocol.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 52, "bases": 0, "doc": 40}, "comprl.client.networking.ClientProtocol.agent": {"qualname": 2, "fullname": 5, "annotation": 5, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.client.networking.ClientProtocol.connectionMade": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 12}, "comprl.client.networking.ClientProtocol.connectionLost": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 25}, "comprl.client.networking.ClientProtocol.auth": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 27}, "comprl.client.networking.ClientProtocol.ready": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 32}, "comprl.client.networking.ClientProtocol.start_game": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 44}, "comprl.client.networking.ClientProtocol.end_game": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 52}, "comprl.client.networking.ClientProtocol.step": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 27, "bases": 0, "doc": 45}, "comprl.client.networking.ClientProtocol.on_error": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 22}, "comprl.client.networking.ClientProtocol.on_message": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 21}, "comprl.client.networking.connect_agent": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 72, "bases": 0, "doc": 83}, "comprl.server": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.interfaces": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 12}, "comprl.server.data.interfaces.GameEndState": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 37}, "comprl.server.data.interfaces.GameEndState.WIN": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.interfaces.GameEndState.DRAW": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.interfaces.GameResult": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 8}, "comprl.server.data.interfaces.GameResult.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 180, "bases": 0, "doc": 112}, "comprl.server.data.interfaces.GameResult.game_id": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.interfaces.GameResult.user1_id": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.interfaces.GameResult.user2_id": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.interfaces.GameResult.score_user_1": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.interfaces.GameResult.score_user_2": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.interfaces.GameResult.start_time": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.interfaces.GameResult.end_state": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.interfaces.GameResult.winner_id": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.interfaces.GameResult.disconnected_id": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.interfaces.UserRole": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 23}, "comprl.server.data.interfaces.UserRole.USER": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.interfaces.UserRole.ADMIN": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.sql_backend": {"qualname": 0, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 17}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"qualname": 1, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 32}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.host": {"qualname": 2, "fullname": 7, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.table": {"qualname": 2, "fullname": 7, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.sql_backend.GameData": {"qualname": 1, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 40}, "comprl.server.data.sql_backend.GameData.__init__": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 3}, "comprl.server.data.sql_backend.GameData.connection": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.sql_backend.GameData.cursor": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.sql_backend.GameData.table": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.sql_backend.GameData.add": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 45, "bases": 0, "doc": 24}, "comprl.server.data.sql_backend.GameData.remove": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 29}, "comprl.server.data.sql_backend.UserData": {"qualname": 1, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 40}, "comprl.server.data.sql_backend.UserData.__init__": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 23}, "comprl.server.data.sql_backend.UserData.connection": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.sql_backend.UserData.cursor": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.sql_backend.UserData.table": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.data.sql_backend.UserData.add": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 108, "bases": 0, "doc": 96}, "comprl.server.data.sql_backend.UserData.remove": {"qualname": 2, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 25, "bases": 0, "doc": 29}, "comprl.server.data.sql_backend.UserData.is_verified": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 25, "bases": 0, "doc": 39}, "comprl.server.data.sql_backend.UserData.get_user_id": {"qualname": 4, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 44}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"qualname": 4, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 37, "bases": 0, "doc": 41}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"qualname": 4, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 45, "bases": 0, "doc": 47}, "comprl.server.interfaces": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 13}, "comprl.server.interfaces.IAction": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 6}, "comprl.server.interfaces.IPlayer": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 6}, "comprl.server.interfaces.IPlayer.id": {"qualname": 2, "fullname": 5, "annotation": 3, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.interfaces.IPlayer.user_id": {"qualname": 3, "fullname": 6, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.interfaces.IPlayer.is_connected": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.interfaces.IPlayer.authenticate": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 12}, "comprl.server.interfaces.IPlayer.is_ready": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 23}, "comprl.server.interfaces.IPlayer.notify_start": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 9}, "comprl.server.interfaces.IPlayer.get_action": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 25}, "comprl.server.interfaces.IPlayer.notify_end": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 9}, "comprl.server.interfaces.IPlayer.disconnect": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 5}, "comprl.server.interfaces.IPlayer.notify_error": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 8}, "comprl.server.interfaces.IPlayer.notify_info": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 8}, "comprl.server.interfaces.IGame": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 60}, "comprl.server.interfaces.IGame.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 26}, "comprl.server.interfaces.IGame.id": {"qualname": 2, "fullname": 5, "annotation": 3, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.interfaces.IGame.players": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.interfaces.IGame.finish_callbacks": {"qualname": 3, "fullname": 6, "annotation": 7, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.interfaces.IGame.scores": {"qualname": 2, "fullname": 5, "annotation": 4, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.interfaces.IGame.start_time": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.interfaces.IGame.disconnected_player_id": {"qualname": 4, "fullname": 7, "annotation": 5, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.interfaces.IGame.game_info": {"qualname": 3, "fullname": 6, "annotation": 4, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.interfaces.IGame.all_actions": {"qualname": 3, "fullname": 6, "annotation": 3, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.interfaces.IGame.add_finish_callback": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 53, "bases": 0, "doc": 30}, "comprl.server.interfaces.IGame.start": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 16}, "comprl.server.interfaces.IGame.force_end": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 27, "bases": 0, "doc": 32}, "comprl.server.interfaces.IGame.get_result": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 19}, "comprl.server.interfaces.IServer": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 21}, "comprl.server.interfaces.IServer.on_start": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 9}, "comprl.server.interfaces.IServer.on_stop": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 9}, "comprl.server.interfaces.IServer.on_connect": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 18}, "comprl.server.interfaces.IServer.on_disconnect": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 18}, "comprl.server.interfaces.IServer.on_timeout": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 21}, "comprl.server.interfaces.IServer.on_remote_error": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 26}, "comprl.server.interfaces.IServer.on_update": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 15}, "comprl.server.managers": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 13}, "comprl.server.managers.GameManager": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 40}, "comprl.server.managers.GameManager.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "comprl.server.managers.GameManager.games": {"qualname": 2, "fullname": 5, "annotation": 7, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.managers.GameManager.game_type": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.managers.GameManager.start_game": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 62, "bases": 0, "doc": 39}, "comprl.server.managers.GameManager.end_game": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 39, "bases": 0, "doc": 27}, "comprl.server.managers.GameManager.force_game_end": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 27, "bases": 0, "doc": 25}, "comprl.server.managers.GameManager.get": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 39}, "comprl.server.managers.GameManager.get_stored_actions": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 37}, "comprl.server.managers.PlayerManager": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 6}, "comprl.server.managers.PlayerManager.auth_players": {"qualname": 3, "fullname": 6, "annotation": 8, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.managers.PlayerManager.connected_players": {"qualname": 3, "fullname": 6, "annotation": 7, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.managers.PlayerManager.add": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 39, "bases": 0, "doc": 26}, "comprl.server.managers.PlayerManager.auth": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 44}, "comprl.server.managers.PlayerManager.remove": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 39, "bases": 0, "doc": 26}, "comprl.server.managers.PlayerManager.get_user_id": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 36}, "comprl.server.managers.PlayerManager.get_player_by_id": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 43}, "comprl.server.managers.PlayerManager.broadcast_error": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 26}, "comprl.server.managers.PlayerManager.disconnect_all": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 22}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 37, "bases": 0, "doc": 41}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 47, "bases": 0, "doc": 49}, "comprl.server.managers.QueuePlayer": {"qualname": 1, "fullname": 4, "annotation": 2, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.managers.MatchmakingManager": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "comprl.server.managers.MatchmakingManager.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 58, "bases": 0, "doc": 27}, "comprl.server.managers.MatchmakingManager.player_manager": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.managers.MatchmakingManager.game_manager": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.managers.MatchmakingManager.model": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.managers.MatchmakingManager.try_match": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 36}, "comprl.server.managers.MatchmakingManager.match": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 24}, "comprl.server.managers.MatchmakingManager.remove": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 26}, "comprl.server.networking": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "comprl.server.networking.VERSION": {"qualname": 1, "fullname": 4, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.networking.COMPServerProtocol": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 74}, "comprl.server.networking.COMPServerProtocol.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"qualname": 4, "fullname": 7, "annotation": 4, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"qualname": 4, "fullname": 7, "annotation": 4, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"qualname": 4, "fullname": 7, "annotation": 7, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"qualname": 4, "fullname": 7, "annotation": 5, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 30}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 30}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 39, "bases": 0, "doc": 30}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 33, "bases": 0, "doc": 32}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 16}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 27}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 28}, "comprl.server.networking.COMPServerProtocol.connection_error": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 26}, "comprl.server.networking.COMPServerProtocol.get_token": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 37, "bases": 0, "doc": 39}, "comprl.server.networking.COMPServerProtocol.is_ready": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 37, "bases": 0, "doc": 44}, "comprl.server.networking.COMPServerProtocol.notify_start": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 27}, "comprl.server.networking.COMPServerProtocol.get_step": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 56, "bases": 0, "doc": 48}, "comprl.server.networking.COMPServerProtocol.notify_end": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 33}, "comprl.server.networking.COMPServerProtocol.send_error": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 26}, "comprl.server.networking.COMPServerProtocol.send_message": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 25}, "comprl.server.networking.COMPServerProtocol.disconnect": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 13}, "comprl.server.networking.COMPPlayer": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 23}, "comprl.server.networking.COMPPlayer.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 20}, "comprl.server.networking.COMPPlayer.connection": {"qualname": 2, "fullname": 5, "annotation": 5, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.networking.COMPPlayer.is_connected": {"qualname": 3, "fullname": 6, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.networking.COMPPlayer.authenticate": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 32}, "comprl.server.networking.COMPPlayer.is_ready": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 41}, "comprl.server.networking.COMPPlayer.notify_start": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 27, "bases": 0, "doc": 25}, "comprl.server.networking.COMPPlayer.get_action": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 29}, "comprl.server.networking.COMPPlayer.notify_end": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 28}, "comprl.server.networking.COMPPlayer.disconnect": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 18}, "comprl.server.networking.COMPPlayer.notify_error": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 19}, "comprl.server.networking.COMPPlayer.notify_info": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 19}, "comprl.server.networking.COMPFactory": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 51}, "comprl.server.networking.COMPFactory.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "comprl.server.networking.COMPFactory.server": {"qualname": 2, "fullname": 5, "annotation": 5, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.server.networking.COMPFactory.startFactory": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 7}, "comprl.server.networking.COMPFactory.stopFactory": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 7}, "comprl.server.networking.COMPFactory.buildProtocol": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 73, "bases": 0, "doc": 35}, "comprl.server.networking.launch_server": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 32}, "comprl.server.util": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "comprl.server.util.IDGenerator": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 8}, "comprl.server.util.IDGenerator.generate_player_id": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 15, "bases": 0, "doc": 14}, "comprl.server.util.IDGenerator.generate_game_id": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 15, "bases": 0, "doc": 14}, "comprl.server.util.ConfigProvider": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 5}, "comprl.server.util.ConfigProvider.get": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 24}, "comprl.server.util.ConfigProvider.set": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 23}, "comprl.shared": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 12}, "comprl.shared.commands.Auth": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 45}, "comprl.shared.commands.Auth.arguments": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Auth.response": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 24, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Auth.reverseErrors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Auth.allErrors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Auth.commandName": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Ready": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 14}, "comprl.shared.commands.Ready.arguments": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Ready.response": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 13, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Ready.reverseErrors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Ready.allErrors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Ready.commandName": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.StartGame": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 11}, "comprl.shared.commands.StartGame.arguments": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 14, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.StartGame.response": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.StartGame.reverseErrors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.StartGame.allErrors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.StartGame.commandName": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.EndGame": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 12}, "comprl.shared.commands.EndGame.arguments": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 24, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.EndGame.response": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.EndGame.reverseErrors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.EndGame.allErrors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.EndGame.commandName": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Step": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 11}, "comprl.shared.commands.Step.arguments": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 13, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Step.response": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 13, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Step.reverseErrors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Step.allErrors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Step.commandName": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Error": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 9}, "comprl.shared.commands.Error.arguments": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 13, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Error.response": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Error.reverseErrors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Error.allErrors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Error.commandName": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Message": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 8}, "comprl.shared.commands.Message.arguments": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 13, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Message.response": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Message.reverseErrors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Message.allErrors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.commands.Message.commandName": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.types": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "comprl.shared.types.PlayerID": {"qualname": 1, "fullname": 4, "annotation": 2, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "comprl.shared.types.GameID": {"qualname": 1, "fullname": 4, "annotation": 2, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}}, "length": 243, "save": true}, "index": {"qualname": {"root": {"1": {"docs": {"comprl.server.data.interfaces.GameResult.score_user_1": {"tf": 1}}, "df": 1}, "2": {"docs": {"comprl.server.data.interfaces.GameResult.score_user_2": {"tf": 1}}, "df": 1}, "docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.managers.GameManager.__init__": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.__init__": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPFactory.__init__": {"tf": 1}}, "df": 11, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent": {"tf": 1}, "comprl.client.agent.Agent.event": {"tf": 1}, "comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.agent.Agent.on_disconnect": {"tf": 1}, "comprl.client.networking.ClientProtocol.agent": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}}, "df": 8}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"comprl.client.interfaces.IAgent.auth": {"tf": 1}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1}, "comprl.shared.commands.Auth.arguments": {"tf": 1}, "comprl.shared.commands.Auth.response": {"tf": 1}, "comprl.shared.commands.Auth.reverseErrors": {"tf": 1}, "comprl.shared.commands.Auth.allErrors": {"tf": 1}, "comprl.shared.commands.Auth.commandName": {"tf": 1}}, "df": 10, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}}, "df": 2}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1}}, "df": 1}}}, "d": {"docs": {"comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}}, "df": 8}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}}, "df": 2, "s": {"docs": {"comprl.server.interfaces.IGame.all_actions": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 2}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.interfaces.IGame.all_actions": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"comprl.shared.commands.Auth.allErrors": {"tf": 1}, "comprl.shared.commands.Ready.allErrors": {"tf": 1}, "comprl.shared.commands.StartGame.allErrors": {"tf": 1}, "comprl.shared.commands.EndGame.allErrors": {"tf": 1}, "comprl.shared.commands.Step.allErrors": {"tf": 1}, "comprl.shared.commands.Error.allErrors": {"tf": 1}, "comprl.shared.commands.Message.allErrors": {"tf": 1}}, "df": 7}}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"comprl.shared.commands.Auth.arguments": {"tf": 1}, "comprl.shared.commands.Ready.arguments": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}}, "df": 7}}}}}}}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent.event": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Error.response": {"tf": 1}, "comprl.shared.commands.Error.reverseErrors": {"tf": 1}, "comprl.shared.commands.Error.allErrors": {"tf": 1}, "comprl.shared.commands.Error.commandName": {"tf": 1}}, "df": 17}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.data.interfaces.GameResult.end_state": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}}, "df": 9, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.shared.commands.EndGame": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1}, "comprl.shared.commands.EndGame.response": {"tf": 1}, "comprl.shared.commands.EndGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.EndGame.allErrors": {"tf": 1}, "comprl.shared.commands.EndGame.commandName": {"tf": 1}}, "df": 6}}}}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}, "comprl.shared.commands.Ready": {"tf": 1}, "comprl.shared.commands.Ready.arguments": {"tf": 1}, "comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.Ready.reverseErrors": {"tf": 1}, "comprl.shared.commands.Ready.allErrors": {"tf": 1}, "comprl.shared.commands.Ready.commandName": {"tf": 1}}, "df": 11}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}}, "df": 4}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.interfaces.IGame.get_result": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"comprl.shared.commands.Auth.response": {"tf": 1}, "comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.StartGame.response": {"tf": 1}, "comprl.shared.commands.EndGame.response": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}, "comprl.shared.commands.Error.response": {"tf": 1}, "comprl.shared.commands.Message.response": {"tf": 1}}, "df": 7}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"comprl.shared.commands.Auth.reverseErrors": {"tf": 1}, "comprl.shared.commands.Ready.reverseErrors": {"tf": 1}, "comprl.shared.commands.StartGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.EndGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.Step.reverseErrors": {"tf": 1}, "comprl.shared.commands.Error.reverseErrors": {"tf": 1}, "comprl.shared.commands.Message.reverseErrors": {"tf": 1}}, "df": 7}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.agent.Agent.on_disconnect": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.interfaces.IServer.on_stop": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_update": {"tf": 1}}, "df": 17}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}, "comprl.shared.commands.Message.response": {"tf": 1}, "comprl.shared.commands.Message.reverseErrors": {"tf": 1}, "comprl.shared.commands.Message.allErrors": {"tf": 1}, "comprl.shared.commands.Message.commandName": {"tf": 1}}, "df": 10}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}}, "df": 2, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 4, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.MatchmakingManager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}, "comprl.server.managers.MatchmakingManager.player_manager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.game_manager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.model": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}}, "df": 8}}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.MatchmakingManager.player_manager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.game_manager": {"tf": 1}}, "df": 2}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.managers.MatchmakingManager.model": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent.on_disconnect": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IPlayer.disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}}, "df": 7, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1}, "comprl.server.data.interfaces.GameResult.disconnected_id": {"tf": 1}, "comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1}}, "df": 3}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "w": {"docs": {"comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.interfaces.IAgent": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.auth": {"tf": 1}, "comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}}, "df": 10}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.interfaces.IAction": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_connected": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_connected": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}}, "df": 7, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IServer": {"tf": 1}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.interfaces.IServer.on_stop": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_update": {"tf": 1}}, "df": 8}}}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.managers.GameManager.__init__": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.__init__": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPFactory.__init__": {"tf": 1}}, "df": 11}}, "f": {"docs": {}, "df": 0, "o": {"docs": {"comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.interfaces.IGame.game_info": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}}, "df": 3}}}, "d": {"docs": {"comprl.server.data.interfaces.GameResult.game_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user1_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user2_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.winner_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.disconnected_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.interfaces.IPlayer.id": {"tf": 1}, "comprl.server.interfaces.IPlayer.user_id": {"tf": 1}, "comprl.server.interfaces.IGame.id": {"tf": 1}, "comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}}, "df": 14, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.util.IDGenerator": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}}, "df": 3}}}}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IPlayer": {"tf": 1}, "comprl.server.interfaces.IPlayer.id": {"tf": 1}, "comprl.server.interfaces.IPlayer.user_id": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_connected": {"tf": 1}, "comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IPlayer.disconnect": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}}, "df": 12}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.id": {"tf": 1}, "comprl.server.interfaces.IGame.players": {"tf": 1}, "comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.interfaces.IGame.scores": {"tf": 1}, "comprl.server.interfaces.IGame.start_time": {"tf": 1}, "comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1}, "comprl.server.interfaces.IGame.game_info": {"tf": 1}, "comprl.server.interfaces.IGame.all_actions": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}}, "df": 14}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.server.data.interfaces.GameResult.start_time": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IGame.start_time": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}}, "df": 10, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.networking.COMPFactory.startFactory": {"tf": 1}}, "df": 1}}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.StartGame.response": {"tf": 1}, "comprl.shared.commands.StartGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.StartGame.allErrors": {"tf": 1}, "comprl.shared.commands.StartGame.commandName": {"tf": 1}}, "df": 6}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameResult.end_state": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.shared.commands.Step": {"tf": 1}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}, "comprl.shared.commands.Step.reverseErrors": {"tf": 1}, "comprl.shared.commands.Step.allErrors": {"tf": 1}, "comprl.shared.commands.Step.commandName": {"tf": 1}}, "df": 9}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"comprl.server.interfaces.IServer.on_stop": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.networking.COMPFactory.stopFactory": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameResult.score_user_1": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_2": {"tf": 1}}, "df": 2, "s": {"docs": {"comprl.server.interfaces.IGame.scores": {"tf": 1}}, "df": 1}}}}}, "q": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.host": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.table": {"tf": 1}}, "df": 4}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1}}, "df": 2}, "n": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.networking.COMPFactory.server": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 2}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.data.interfaces.GameResult.game_id": {"tf": 1}, "comprl.server.interfaces.IGame.game_info": {"tf": 1}, "comprl.server.managers.GameManager.game_type": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.MatchmakingManager.game_manager": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}}, "df": 12, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1}}, "df": 4}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.data.interfaces.GameResult": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.interfaces.GameResult.game_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user1_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user2_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_1": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_2": {"tf": 1}, "comprl.server.data.interfaces.GameResult.start_time": {"tf": 1}, "comprl.server.data.interfaces.GameResult.end_state": {"tf": 1}, "comprl.server.data.interfaces.GameResult.winner_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.disconnected_id": {"tf": 1}}, "df": 11}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.connection": {"tf": 1}, "comprl.server.data.sql_backend.GameData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.GameData.table": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}}, "df": 7}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.GameManager": {"tf": 1}, "comprl.server.managers.GameManager.__init__": {"tf": 1}, "comprl.server.managers.GameManager.games": {"tf": 1}, "comprl.server.managers.GameManager.game_type": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 9}}}}}}}, "s": {"docs": {"comprl.server.managers.GameManager.games": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "d": {"docs": {"comprl.shared.types.GameID": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1}}, "df": 14}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}}, "df": 2}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.networking.VERSION": {"tf": 1}, "comprl.server.networking.VERSION": {"tf": 1}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.client.networking.ClientProtocol": {"tf": 1}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.client.networking.ClientProtocol.agent": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}}, "df": 12}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.sql_backend.GameData.connection": {"tf": 1}, "comprl.server.data.sql_backend.UserData.connection": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.connection": {"tf": 1}}, "df": 12, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}}, "df": 2}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}}, "df": 1}}}}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.interfaces.IPlayer.is_connected": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_connected": {"tf": 1}}, "df": 3}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.util.ConfigProvider": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1}}, "df": 3}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.__init__": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1}}, "df": 22}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.networking.COMPPlayer": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPPlayer.connection": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_connected": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}}, "df": 12}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.__init__": {"tf": 1}, "comprl.server.networking.COMPFactory.server": {"tf": 1}, "comprl.server.networking.COMPFactory.startFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.stopFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 6}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.shared.commands.Auth.commandName": {"tf": 1}, "comprl.shared.commands.Ready.commandName": {"tf": 1}, "comprl.shared.commands.StartGame.commandName": {"tf": 1}, "comprl.shared.commands.EndGame.commandName": {"tf": 1}, "comprl.shared.commands.Step.commandName": {"tf": 1}, "comprl.shared.commands.Error.commandName": {"tf": 1}, "comprl.shared.commands.Message.commandName": {"tf": 1}}, "df": 7}}}}}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.data.sql_backend.GameData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.UserData.cursor": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}}, "df": 5, "s": {"docs": {"comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}}, "df": 5}}}}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.data.interfaces.GameResult.winner_id": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"1": {"docs": {"comprl.server.data.interfaces.GameResult.user1_id": {"tf": 1}}, "df": 1}, "2": {"docs": {"comprl.server.data.interfaces.GameResult.user2_id": {"tf": 1}}, "df": 1}, "docs": {"comprl.server.data.interfaces.GameResult.score_user_1": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_2": {"tf": 1}, "comprl.server.data.interfaces.UserRole.USER": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.interfaces.IPlayer.user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}}, "df": 6, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.UserRole": {"tf": 1}, "comprl.server.data.interfaces.UserRole.USER": {"tf": 1}, "comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1}}, "df": 3}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"comprl.server.data.sql_backend.UserData": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.connection": {"tf": 1}, "comprl.server.data.sql_backend.UserData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.UserData.table": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}}, "df": 11}}}}}}}, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IServer.on_update": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameResult.start_time": {"tf": 1}, "comprl.server.interfaces.IGame.start_time": {"tf": 1}}, "df": 2, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}}, "df": 3}}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.SQLiteConnectionInfo.table": {"tf": 1}, "comprl.server.data.sql_backend.GameData.table": {"tf": 1}, "comprl.server.data.sql_backend.UserData.table": {"tf": 1}}, "df": 3}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.managers.GameManager.game_type": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.data.sql_backend.SQLiteConnectionInfo.host": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 4}}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.MatchmakingManager.player_manager": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}}, "df": 4, "s": {"docs": {"comprl.server.interfaces.IGame.players": {"tf": 1}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}}, "df": 3}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.PlayerManager": {"tf": 1}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 12}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {"comprl.shared.types.PlayerID": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}}, "df": 10}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}}, "df": 2}}}}}, "b": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.QueuePlayer": {"tf": 1}}, "df": 1}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"comprl.server.networking.launch_server": {"tf": 1}}, "df": 1}}}}}}}}, "fullname": {"root": {"1": {"docs": {"comprl.server.data.interfaces.GameResult.score_user_1": {"tf": 1}}, "df": 1}, "2": {"docs": {"comprl.server.data.interfaces.GameResult.score_user_2": {"tf": 1}}, "df": 1}, "docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.managers.GameManager.__init__": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.__init__": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPFactory.__init__": {"tf": 1}}, "df": 11, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"comprl": {"tf": 1}, "comprl.client": {"tf": 1}, "comprl.client.agent": {"tf": 1}, "comprl.client.agent.Agent": {"tf": 1}, "comprl.client.agent.Agent.event": {"tf": 1}, "comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.agent.Agent.on_disconnect": {"tf": 1}, "comprl.client.interfaces": {"tf": 1}, "comprl.client.interfaces.IAgent": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.auth": {"tf": 1}, "comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}, "comprl.client.networking": {"tf": 1}, "comprl.client.networking.VERSION": {"tf": 1}, "comprl.client.networking.ClientProtocol": {"tf": 1}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.client.networking.ClientProtocol.agent": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server": {"tf": 1}, "comprl.server.data": {"tf": 1}, "comprl.server.data.interfaces": {"tf": 1}, "comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1}, "comprl.server.data.interfaces.GameResult": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.interfaces.GameResult.game_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user1_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user2_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_1": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_2": {"tf": 1}, "comprl.server.data.interfaces.GameResult.start_time": {"tf": 1}, "comprl.server.data.interfaces.GameResult.end_state": {"tf": 1}, "comprl.server.data.interfaces.GameResult.winner_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.disconnected_id": {"tf": 1}, "comprl.server.data.interfaces.UserRole": {"tf": 1}, "comprl.server.data.interfaces.UserRole.USER": {"tf": 1}, "comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1}, "comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.host": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.table": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.connection": {"tf": 1}, "comprl.server.data.sql_backend.GameData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.GameData.table": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.connection": {"tf": 1}, "comprl.server.data.sql_backend.UserData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.UserData.table": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.interfaces": {"tf": 1}, "comprl.server.interfaces.IAction": {"tf": 1}, "comprl.server.interfaces.IPlayer": {"tf": 1}, "comprl.server.interfaces.IPlayer.id": {"tf": 1}, "comprl.server.interfaces.IPlayer.user_id": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_connected": {"tf": 1}, "comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IPlayer.disconnect": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.id": {"tf": 1}, "comprl.server.interfaces.IGame.players": {"tf": 1}, "comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.interfaces.IGame.scores": {"tf": 1}, "comprl.server.interfaces.IGame.start_time": {"tf": 1}, "comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1}, "comprl.server.interfaces.IGame.game_info": {"tf": 1}, "comprl.server.interfaces.IGame.all_actions": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}, "comprl.server.interfaces.IServer": {"tf": 1}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.interfaces.IServer.on_stop": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_update": {"tf": 1}, "comprl.server.managers": {"tf": 1}, "comprl.server.managers.GameManager": {"tf": 1}, "comprl.server.managers.GameManager.__init__": {"tf": 1}, "comprl.server.managers.GameManager.games": {"tf": 1}, "comprl.server.managers.GameManager.game_type": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager": {"tf": 1}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.QueuePlayer": {"tf": 1}, "comprl.server.managers.MatchmakingManager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}, "comprl.server.managers.MatchmakingManager.player_manager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.game_manager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.model": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}, "comprl.server.networking": {"tf": 1}, "comprl.server.networking.VERSION": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.__init__": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPPlayer.connection": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_connected": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.__init__": {"tf": 1}, "comprl.server.networking.COMPFactory.server": {"tf": 1}, "comprl.server.networking.COMPFactory.startFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.stopFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}, "comprl.server.util": {"tf": 1}, "comprl.server.util.IDGenerator": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}, "comprl.server.util.ConfigProvider": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1}, "comprl.shared": {"tf": 1}, "comprl.shared.commands": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1}, "comprl.shared.commands.Auth.arguments": {"tf": 1}, "comprl.shared.commands.Auth.response": {"tf": 1}, "comprl.shared.commands.Auth.reverseErrors": {"tf": 1}, "comprl.shared.commands.Auth.allErrors": {"tf": 1}, "comprl.shared.commands.Auth.commandName": {"tf": 1}, "comprl.shared.commands.Ready": {"tf": 1}, "comprl.shared.commands.Ready.arguments": {"tf": 1}, "comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.Ready.reverseErrors": {"tf": 1}, "comprl.shared.commands.Ready.allErrors": {"tf": 1}, "comprl.shared.commands.Ready.commandName": {"tf": 1}, "comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.StartGame.response": {"tf": 1}, "comprl.shared.commands.StartGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.StartGame.allErrors": {"tf": 1}, "comprl.shared.commands.StartGame.commandName": {"tf": 1}, "comprl.shared.commands.EndGame": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1}, "comprl.shared.commands.EndGame.response": {"tf": 1}, "comprl.shared.commands.EndGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.EndGame.allErrors": {"tf": 1}, "comprl.shared.commands.EndGame.commandName": {"tf": 1}, "comprl.shared.commands.Step": {"tf": 1}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}, "comprl.shared.commands.Step.reverseErrors": {"tf": 1}, "comprl.shared.commands.Step.allErrors": {"tf": 1}, "comprl.shared.commands.Step.commandName": {"tf": 1}, "comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Error.response": {"tf": 1}, "comprl.shared.commands.Error.reverseErrors": {"tf": 1}, "comprl.shared.commands.Error.allErrors": {"tf": 1}, "comprl.shared.commands.Error.commandName": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}, "comprl.shared.commands.Message.response": {"tf": 1}, "comprl.shared.commands.Message.reverseErrors": {"tf": 1}, "comprl.shared.commands.Message.allErrors": {"tf": 1}, "comprl.shared.commands.Message.commandName": {"tf": 1}, "comprl.shared.types": {"tf": 1}, "comprl.shared.types.PlayerID": {"tf": 1}, "comprl.shared.types.GameID": {"tf": 1}}, "df": 243}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.__init__": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1}}, "df": 22}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.networking.COMPPlayer": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPPlayer.connection": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_connected": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}}, "df": 12}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.__init__": {"tf": 1}, "comprl.server.networking.COMPFactory.server": {"tf": 1}, "comprl.server.networking.COMPFactory.startFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.stopFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 6}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"comprl.shared.commands": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1}, "comprl.shared.commands.Auth.arguments": {"tf": 1}, "comprl.shared.commands.Auth.response": {"tf": 1}, "comprl.shared.commands.Auth.reverseErrors": {"tf": 1}, "comprl.shared.commands.Auth.allErrors": {"tf": 1}, "comprl.shared.commands.Auth.commandName": {"tf": 1}, "comprl.shared.commands.Ready": {"tf": 1}, "comprl.shared.commands.Ready.arguments": {"tf": 1}, "comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.Ready.reverseErrors": {"tf": 1}, "comprl.shared.commands.Ready.allErrors": {"tf": 1}, "comprl.shared.commands.Ready.commandName": {"tf": 1}, "comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.StartGame.response": {"tf": 1}, "comprl.shared.commands.StartGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.StartGame.allErrors": {"tf": 1}, "comprl.shared.commands.StartGame.commandName": {"tf": 1}, "comprl.shared.commands.EndGame": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1}, "comprl.shared.commands.EndGame.response": {"tf": 1}, "comprl.shared.commands.EndGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.EndGame.allErrors": {"tf": 1}, "comprl.shared.commands.EndGame.commandName": {"tf": 1}, "comprl.shared.commands.Step": {"tf": 1}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}, "comprl.shared.commands.Step.reverseErrors": {"tf": 1}, "comprl.shared.commands.Step.allErrors": {"tf": 1}, "comprl.shared.commands.Step.commandName": {"tf": 1}, "comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Error.response": {"tf": 1}, "comprl.shared.commands.Error.reverseErrors": {"tf": 1}, "comprl.shared.commands.Error.allErrors": {"tf": 1}, "comprl.shared.commands.Error.commandName": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}, "comprl.shared.commands.Message.response": {"tf": 1}, "comprl.shared.commands.Message.reverseErrors": {"tf": 1}, "comprl.shared.commands.Message.allErrors": {"tf": 1}, "comprl.shared.commands.Message.commandName": {"tf": 1}}, "df": 43}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.shared.commands.Auth.commandName": {"tf": 1}, "comprl.shared.commands.Ready.commandName": {"tf": 1}, "comprl.shared.commands.StartGame.commandName": {"tf": 1}, "comprl.shared.commands.EndGame.commandName": {"tf": 1}, "comprl.shared.commands.Step.commandName": {"tf": 1}, "comprl.shared.commands.Error.commandName": {"tf": 1}, "comprl.shared.commands.Message.commandName": {"tf": 1}}, "df": 7}}}}}}}}}, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.sql_backend.GameData.connection": {"tf": 1}, "comprl.server.data.sql_backend.UserData.connection": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.connection": {"tf": 1}}, "df": 12, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}}, "df": 2}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}}, "df": 1}}}}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.interfaces.IPlayer.is_connected": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_connected": {"tf": 1}}, "df": 3}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.util.ConfigProvider": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1}}, "df": 3}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client": {"tf": 1}, "comprl.client.agent": {"tf": 1}, "comprl.client.agent.Agent": {"tf": 1}, "comprl.client.agent.Agent.event": {"tf": 1}, "comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.agent.Agent.on_disconnect": {"tf": 1}, "comprl.client.interfaces": {"tf": 1}, "comprl.client.interfaces.IAgent": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.auth": {"tf": 1}, "comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}, "comprl.client.networking": {"tf": 1}, "comprl.client.networking.VERSION": {"tf": 1}, "comprl.client.networking.ClientProtocol": {"tf": 1}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.client.networking.ClientProtocol.agent": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}}, "df": 34, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.client.networking.ClientProtocol": {"tf": 1}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.client.networking.ClientProtocol.agent": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}}, "df": 12}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.data.sql_backend.GameData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.UserData.cursor": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}}, "df": 5, "s": {"docs": {"comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}}, "df": 5}}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent": {"tf": 1}, "comprl.client.agent.Agent": {"tf": 1.4142135623730951}, "comprl.client.agent.Agent.event": {"tf": 1.4142135623730951}, "comprl.client.agent.Agent.run": {"tf": 1.4142135623730951}, "comprl.client.agent.Agent.on_error": {"tf": 1.4142135623730951}, "comprl.client.agent.Agent.on_message": {"tf": 1.4142135623730951}, "comprl.client.agent.Agent.on_disconnect": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.agent": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}}, "df": 9}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"comprl.client.interfaces.IAgent.auth": {"tf": 1}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1}, "comprl.shared.commands.Auth.arguments": {"tf": 1}, "comprl.shared.commands.Auth.response": {"tf": 1}, "comprl.shared.commands.Auth.reverseErrors": {"tf": 1}, "comprl.shared.commands.Auth.allErrors": {"tf": 1}, "comprl.shared.commands.Auth.commandName": {"tf": 1}}, "df": 10, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}}, "df": 2}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1}}, "df": 1}}}, "d": {"docs": {"comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}}, "df": 8}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}}, "df": 2, "s": {"docs": {"comprl.server.interfaces.IGame.all_actions": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 2}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.interfaces.IGame.all_actions": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"comprl.shared.commands.Auth.allErrors": {"tf": 1}, "comprl.shared.commands.Ready.allErrors": {"tf": 1}, "comprl.shared.commands.StartGame.allErrors": {"tf": 1}, "comprl.shared.commands.EndGame.allErrors": {"tf": 1}, "comprl.shared.commands.Step.allErrors": {"tf": 1}, "comprl.shared.commands.Error.allErrors": {"tf": 1}, "comprl.shared.commands.Message.allErrors": {"tf": 1}}, "df": 7}}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"comprl.shared.commands.Auth.arguments": {"tf": 1}, "comprl.shared.commands.Ready.arguments": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}}, "df": 7}}}}}}}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent.event": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Error.response": {"tf": 1}, "comprl.shared.commands.Error.reverseErrors": {"tf": 1}, "comprl.shared.commands.Error.allErrors": {"tf": 1}, "comprl.shared.commands.Error.commandName": {"tf": 1}}, "df": 17}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.data.interfaces.GameResult.end_state": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}}, "df": 9, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.shared.commands.EndGame": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1}, "comprl.shared.commands.EndGame.response": {"tf": 1}, "comprl.shared.commands.EndGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.EndGame.allErrors": {"tf": 1}, "comprl.shared.commands.EndGame.commandName": {"tf": 1}}, "df": 6}}}}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}, "comprl.shared.commands.Ready": {"tf": 1}, "comprl.shared.commands.Ready.arguments": {"tf": 1}, "comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.Ready.reverseErrors": {"tf": 1}, "comprl.shared.commands.Ready.allErrors": {"tf": 1}, "comprl.shared.commands.Ready.commandName": {"tf": 1}}, "df": 11}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}}, "df": 4}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.interfaces.IGame.get_result": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"comprl.shared.commands.Auth.response": {"tf": 1}, "comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.StartGame.response": {"tf": 1}, "comprl.shared.commands.EndGame.response": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}, "comprl.shared.commands.Error.response": {"tf": 1}, "comprl.shared.commands.Message.response": {"tf": 1}}, "df": 7}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"comprl.shared.commands.Auth.reverseErrors": {"tf": 1}, "comprl.shared.commands.Ready.reverseErrors": {"tf": 1}, "comprl.shared.commands.StartGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.EndGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.Step.reverseErrors": {"tf": 1}, "comprl.shared.commands.Error.reverseErrors": {"tf": 1}, "comprl.shared.commands.Message.reverseErrors": {"tf": 1}}, "df": 7}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.agent.Agent.on_disconnect": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.interfaces.IServer.on_stop": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_update": {"tf": 1}}, "df": 17}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}, "comprl.shared.commands.Message.response": {"tf": 1}, "comprl.shared.commands.Message.reverseErrors": {"tf": 1}, "comprl.shared.commands.Message.allErrors": {"tf": 1}, "comprl.shared.commands.Message.commandName": {"tf": 1}}, "df": 10}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}}, "df": 2, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 4, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.MatchmakingManager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}, "comprl.server.managers.MatchmakingManager.player_manager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.game_manager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.model": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}}, "df": 8}}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.MatchmakingManager.player_manager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.game_manager": {"tf": 1}}, "df": 2, "s": {"docs": {"comprl.server.managers": {"tf": 1}, "comprl.server.managers.GameManager": {"tf": 1}, "comprl.server.managers.GameManager.__init__": {"tf": 1}, "comprl.server.managers.GameManager.games": {"tf": 1}, "comprl.server.managers.GameManager.game_type": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager": {"tf": 1}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.QueuePlayer": {"tf": 1}, "comprl.server.managers.MatchmakingManager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}, "comprl.server.managers.MatchmakingManager.player_manager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.game_manager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.model": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}}, "df": 31}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.managers.MatchmakingManager.model": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent.on_disconnect": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IPlayer.disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}}, "df": 7, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1}, "comprl.server.data.interfaces.GameResult.disconnected_id": {"tf": 1}, "comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1}}, "df": 3}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"comprl.server.data": {"tf": 1}, "comprl.server.data.interfaces": {"tf": 1}, "comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1}, "comprl.server.data.interfaces.GameResult": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.interfaces.GameResult.game_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user1_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user2_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_1": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_2": {"tf": 1}, "comprl.server.data.interfaces.GameResult.start_time": {"tf": 1}, "comprl.server.data.interfaces.GameResult.end_state": {"tf": 1}, "comprl.server.data.interfaces.GameResult.winner_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.disconnected_id": {"tf": 1}, "comprl.server.data.interfaces.UserRole": {"tf": 1}, "comprl.server.data.interfaces.UserRole.USER": {"tf": 1}, "comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1}, "comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.host": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.table": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.connection": {"tf": 1}, "comprl.server.data.sql_backend.GameData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.GameData.table": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.connection": {"tf": 1}, "comprl.server.data.sql_backend.UserData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.UserData.table": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}}, "df": 43}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "w": {"docs": {"comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.interfaces": {"tf": 1}, "comprl.client.interfaces.IAgent": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.auth": {"tf": 1}, "comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}, "comprl.server.data.interfaces": {"tf": 1}, "comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1}, "comprl.server.data.interfaces.GameResult": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.interfaces.GameResult.game_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user1_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user2_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_1": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_2": {"tf": 1}, "comprl.server.data.interfaces.GameResult.start_time": {"tf": 1}, "comprl.server.data.interfaces.GameResult.end_state": {"tf": 1}, "comprl.server.data.interfaces.GameResult.winner_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.disconnected_id": {"tf": 1}, "comprl.server.data.interfaces.UserRole": {"tf": 1}, "comprl.server.data.interfaces.UserRole.USER": {"tf": 1}, "comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1}, "comprl.server.interfaces": {"tf": 1}, "comprl.server.interfaces.IAction": {"tf": 1}, "comprl.server.interfaces.IPlayer": {"tf": 1}, "comprl.server.interfaces.IPlayer.id": {"tf": 1}, "comprl.server.interfaces.IPlayer.user_id": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_connected": {"tf": 1}, "comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IPlayer.disconnect": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.id": {"tf": 1}, "comprl.server.interfaces.IGame.players": {"tf": 1}, "comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.interfaces.IGame.scores": {"tf": 1}, "comprl.server.interfaces.IGame.start_time": {"tf": 1}, "comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1}, "comprl.server.interfaces.IGame.game_info": {"tf": 1}, "comprl.server.interfaces.IGame.all_actions": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}, "comprl.server.interfaces.IServer": {"tf": 1}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.interfaces.IServer.on_stop": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_update": {"tf": 1}}, "df": 66}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.managers.GameManager.__init__": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.__init__": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPFactory.__init__": {"tf": 1}}, "df": 11}}, "f": {"docs": {}, "df": 0, "o": {"docs": {"comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.interfaces.IGame.game_info": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}}, "df": 3}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.interfaces.IAgent": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.auth": {"tf": 1}, "comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}}, "df": 10}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.interfaces.IAction": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_connected": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_connected": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}}, "df": 7, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IServer": {"tf": 1}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.interfaces.IServer.on_stop": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_update": {"tf": 1}}, "df": 8}}}}}}, "d": {"docs": {"comprl.server.data.interfaces.GameResult.game_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user1_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user2_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.winner_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.disconnected_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.interfaces.IPlayer.id": {"tf": 1}, "comprl.server.interfaces.IPlayer.user_id": {"tf": 1}, "comprl.server.interfaces.IGame.id": {"tf": 1}, "comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}}, "df": 14, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.util.IDGenerator": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}}, "df": 3}}}}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IPlayer": {"tf": 1}, "comprl.server.interfaces.IPlayer.id": {"tf": 1}, "comprl.server.interfaces.IPlayer.user_id": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_connected": {"tf": 1}, "comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IPlayer.disconnect": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}}, "df": 12}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.id": {"tf": 1}, "comprl.server.interfaces.IGame.players": {"tf": 1}, "comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.interfaces.IGame.scores": {"tf": 1}, "comprl.server.interfaces.IGame.start_time": {"tf": 1}, "comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1}, "comprl.server.interfaces.IGame.game_info": {"tf": 1}, "comprl.server.interfaces.IGame.all_actions": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}}, "df": 14}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.server.data.interfaces.GameResult.start_time": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IGame.start_time": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}}, "df": 10, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.networking.COMPFactory.startFactory": {"tf": 1}}, "df": 1}}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.StartGame.response": {"tf": 1}, "comprl.shared.commands.StartGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.StartGame.allErrors": {"tf": 1}, "comprl.shared.commands.StartGame.commandName": {"tf": 1}}, "df": 6}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameResult.end_state": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.shared.commands.Step": {"tf": 1}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}, "comprl.shared.commands.Step.reverseErrors": {"tf": 1}, "comprl.shared.commands.Step.allErrors": {"tf": 1}, "comprl.shared.commands.Step.commandName": {"tf": 1}}, "df": 9}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"comprl.server.interfaces.IServer.on_stop": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.networking.COMPFactory.stopFactory": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server": {"tf": 1}, "comprl.server.data": {"tf": 1}, "comprl.server.data.interfaces": {"tf": 1}, "comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1}, "comprl.server.data.interfaces.GameResult": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.interfaces.GameResult.game_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user1_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user2_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_1": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_2": {"tf": 1}, "comprl.server.data.interfaces.GameResult.start_time": {"tf": 1}, "comprl.server.data.interfaces.GameResult.end_state": {"tf": 1}, "comprl.server.data.interfaces.GameResult.winner_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.disconnected_id": {"tf": 1}, "comprl.server.data.interfaces.UserRole": {"tf": 1}, "comprl.server.data.interfaces.UserRole.USER": {"tf": 1}, "comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1}, "comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.host": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.table": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.connection": {"tf": 1}, "comprl.server.data.sql_backend.GameData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.GameData.table": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.connection": {"tf": 1}, "comprl.server.data.sql_backend.UserData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.UserData.table": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.interfaces": {"tf": 1}, "comprl.server.interfaces.IAction": {"tf": 1}, "comprl.server.interfaces.IPlayer": {"tf": 1}, "comprl.server.interfaces.IPlayer.id": {"tf": 1}, "comprl.server.interfaces.IPlayer.user_id": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_connected": {"tf": 1}, "comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IPlayer.disconnect": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.id": {"tf": 1}, "comprl.server.interfaces.IGame.players": {"tf": 1}, "comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.interfaces.IGame.scores": {"tf": 1}, "comprl.server.interfaces.IGame.start_time": {"tf": 1}, "comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1}, "comprl.server.interfaces.IGame.game_info": {"tf": 1}, "comprl.server.interfaces.IGame.all_actions": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}, "comprl.server.interfaces.IServer": {"tf": 1}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.interfaces.IServer.on_stop": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_update": {"tf": 1}, "comprl.server.managers": {"tf": 1}, "comprl.server.managers.GameManager": {"tf": 1}, "comprl.server.managers.GameManager.__init__": {"tf": 1}, "comprl.server.managers.GameManager.games": {"tf": 1}, "comprl.server.managers.GameManager.game_type": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager": {"tf": 1}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.QueuePlayer": {"tf": 1}, "comprl.server.managers.MatchmakingManager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}, "comprl.server.managers.MatchmakingManager.player_manager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.game_manager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.model": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}, "comprl.server.networking": {"tf": 1}, "comprl.server.networking.VERSION": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.__init__": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPPlayer.connection": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_connected": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.__init__": {"tf": 1}, "comprl.server.networking.COMPFactory.server": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPFactory.startFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.stopFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1.4142135623730951}, "comprl.server.util": {"tf": 1}, "comprl.server.util.IDGenerator": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}, "comprl.server.util.ConfigProvider": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1}}, "df": 161}}}}, "t": {"docs": {"comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1}}, "df": 2}, "n": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}}, "df": 2}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameResult.score_user_1": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_2": {"tf": 1}}, "df": 2, "s": {"docs": {"comprl.server.interfaces.IGame.scores": {"tf": 1}}, "df": 1}}}}}, "q": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.host": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.table": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.connection": {"tf": 1}, "comprl.server.data.sql_backend.GameData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.GameData.table": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.connection": {"tf": 1}, "comprl.server.data.sql_backend.UserData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.UserData.table": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}}, "df": 23, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.host": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.table": {"tf": 1}}, "df": 4}}}}}}}}}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.shared": {"tf": 1}, "comprl.shared.commands": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1}, "comprl.shared.commands.Auth.arguments": {"tf": 1}, "comprl.shared.commands.Auth.response": {"tf": 1}, "comprl.shared.commands.Auth.reverseErrors": {"tf": 1}, "comprl.shared.commands.Auth.allErrors": {"tf": 1}, "comprl.shared.commands.Auth.commandName": {"tf": 1}, "comprl.shared.commands.Ready": {"tf": 1}, "comprl.shared.commands.Ready.arguments": {"tf": 1}, "comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.Ready.reverseErrors": {"tf": 1}, "comprl.shared.commands.Ready.allErrors": {"tf": 1}, "comprl.shared.commands.Ready.commandName": {"tf": 1}, "comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.StartGame.response": {"tf": 1}, "comprl.shared.commands.StartGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.StartGame.allErrors": {"tf": 1}, "comprl.shared.commands.StartGame.commandName": {"tf": 1}, "comprl.shared.commands.EndGame": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1}, "comprl.shared.commands.EndGame.response": {"tf": 1}, "comprl.shared.commands.EndGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.EndGame.allErrors": {"tf": 1}, "comprl.shared.commands.EndGame.commandName": {"tf": 1}, "comprl.shared.commands.Step": {"tf": 1}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}, "comprl.shared.commands.Step.reverseErrors": {"tf": 1}, "comprl.shared.commands.Step.allErrors": {"tf": 1}, "comprl.shared.commands.Step.commandName": {"tf": 1}, "comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Error.response": {"tf": 1}, "comprl.shared.commands.Error.reverseErrors": {"tf": 1}, "comprl.shared.commands.Error.allErrors": {"tf": 1}, "comprl.shared.commands.Error.commandName": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}, "comprl.shared.commands.Message.response": {"tf": 1}, "comprl.shared.commands.Message.reverseErrors": {"tf": 1}, "comprl.shared.commands.Message.allErrors": {"tf": 1}, "comprl.shared.commands.Message.commandName": {"tf": 1}, "comprl.shared.types": {"tf": 1}, "comprl.shared.types.PlayerID": {"tf": 1}, "comprl.shared.types.GameID": {"tf": 1}}, "df": 47}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.data.interfaces.GameResult.game_id": {"tf": 1}, "comprl.server.interfaces.IGame.game_info": {"tf": 1}, "comprl.server.managers.GameManager.game_type": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.MatchmakingManager.game_manager": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}}, "df": 12, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1}}, "df": 4}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.data.interfaces.GameResult": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.interfaces.GameResult.game_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user1_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.user2_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_1": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_2": {"tf": 1}, "comprl.server.data.interfaces.GameResult.start_time": {"tf": 1}, "comprl.server.data.interfaces.GameResult.end_state": {"tf": 1}, "comprl.server.data.interfaces.GameResult.winner_id": {"tf": 1}, "comprl.server.data.interfaces.GameResult.disconnected_id": {"tf": 1}}, "df": 11}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.connection": {"tf": 1}, "comprl.server.data.sql_backend.GameData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.GameData.table": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}}, "df": 7}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.GameManager": {"tf": 1}, "comprl.server.managers.GameManager.__init__": {"tf": 1}, "comprl.server.managers.GameManager.games": {"tf": 1}, "comprl.server.managers.GameManager.game_type": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 9}}}}}}}, "s": {"docs": {"comprl.server.managers.GameManager.games": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "d": {"docs": {"comprl.shared.types.GameID": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1}}, "df": 14}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}}, "df": 2}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.client.networking": {"tf": 1}, "comprl.client.networking.VERSION": {"tf": 1}, "comprl.client.networking.ClientProtocol": {"tf": 1}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.client.networking.ClientProtocol.agent": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.networking": {"tf": 1}, "comprl.server.networking.VERSION": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.__init__": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPPlayer.connection": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_connected": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.__init__": {"tf": 1}, "comprl.server.networking.COMPFactory.server": {"tf": 1}, "comprl.server.networking.COMPFactory.startFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.stopFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 58}}}}}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}}, "df": 10}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.networking.VERSION": {"tf": 1}, "comprl.server.networking.VERSION": {"tf": 1}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}}, "df": 1}}}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.data.interfaces.GameResult.winner_id": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"1": {"docs": {"comprl.server.data.interfaces.GameResult.user1_id": {"tf": 1}}, "df": 1}, "2": {"docs": {"comprl.server.data.interfaces.GameResult.user2_id": {"tf": 1}}, "df": 1}, "docs": {"comprl.server.data.interfaces.GameResult.score_user_1": {"tf": 1}, "comprl.server.data.interfaces.GameResult.score_user_2": {"tf": 1}, "comprl.server.data.interfaces.UserRole.USER": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.interfaces.IPlayer.user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}}, "df": 6, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.UserRole": {"tf": 1}, "comprl.server.data.interfaces.UserRole.USER": {"tf": 1}, "comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1}}, "df": 3}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"comprl.server.data.sql_backend.UserData": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.connection": {"tf": 1}, "comprl.server.data.sql_backend.UserData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.UserData.table": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}}, "df": 11}}}}}}}, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IServer.on_update": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.util": {"tf": 1}, "comprl.server.util.IDGenerator": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}, "comprl.server.util.ConfigProvider": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1}}, "df": 7}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameResult.start_time": {"tf": 1}, "comprl.server.interfaces.IGame.start_time": {"tf": 1}}, "df": 2, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}}, "df": 3}}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.SQLiteConnectionInfo.table": {"tf": 1}, "comprl.server.data.sql_backend.GameData.table": {"tf": 1}, "comprl.server.data.sql_backend.UserData.table": {"tf": 1}}, "df": 3}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.managers.GameManager.game_type": {"tf": 1}}, "df": 1, "s": {"docs": {"comprl.shared.types": {"tf": 1}, "comprl.shared.types.PlayerID": {"tf": 1}, "comprl.shared.types.GameID": {"tf": 1}}, "df": 3}}}}, "r": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.host": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.table": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.connection": {"tf": 1}, "comprl.server.data.sql_backend.GameData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.GameData.table": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.connection": {"tf": 1}, "comprl.server.data.sql_backend.UserData.cursor": {"tf": 1}, "comprl.server.data.sql_backend.UserData.table": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}}, "df": 23}}}}}}, "y": {"docs": {"comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.data.sql_backend.SQLiteConnectionInfo.host": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 4}}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.MatchmakingManager.player_manager": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}}, "df": 4, "s": {"docs": {"comprl.server.interfaces.IGame.players": {"tf": 1}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}}, "df": 3}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.PlayerManager": {"tf": 1}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 12}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {"comprl.shared.types.PlayerID": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}}, "df": 2}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.QueuePlayer": {"tf": 1}}, "df": 1}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"comprl.server.networking.launch_server": {"tf": 1}}, "df": 1}}}}}}}}, "annotation": {"root": {"docs": {"comprl.client.networking.ClientProtocol.agent": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.host": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.table": {"tf": 1}, "comprl.server.interfaces.IPlayer.id": {"tf": 1}, "comprl.server.interfaces.IPlayer.user_id": {"tf": 1}, "comprl.server.interfaces.IGame.id": {"tf": 1}, "comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.interfaces.IGame.scores": {"tf": 1}, "comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.game_info": {"tf": 1}, "comprl.server.interfaces.IGame.all_actions": {"tf": 1}, "comprl.server.managers.GameManager.games": {"tf": 1}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}, "comprl.server.managers.QueuePlayer": {"tf": 1}, "comprl.server.networking.VERSION": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}, "comprl.server.networking.COMPPlayer.connection": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_connected": {"tf": 1}, "comprl.server.networking.COMPFactory.server": {"tf": 1}, "comprl.shared.types.PlayerID": {"tf": 1}, "comprl.shared.types.GameID": {"tf": 1}}, "df": 25, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"comprl.client.networking.ClientProtocol.agent": {"tf": 1}, "comprl.server.managers.GameManager.games": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}, "comprl.server.networking.COMPPlayer.connection": {"tf": 1}, "comprl.server.networking.COMPFactory.server": {"tf": 1}}, "df": 5}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.networking.COMPPlayer.connection": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.agent": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}}, "df": 2, "[": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.networking.VERSION": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.networking.ClientProtocol.agent": {"tf": 1}, "comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.managers.GameManager.games": {"tf": 1}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}, "comprl.server.networking.COMPFactory.server": {"tf": 1}}, "df": 6}}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.agent": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.managers.GameManager.games": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}}, "df": 2}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.networking.COMPFactory.server": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.data.sql_backend.SQLiteConnectionInfo.host": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.table": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.managers.GameManager.games": {"tf": 1}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}, "comprl.server.networking.COMPPlayer.connection": {"tf": 1}, "comprl.server.networking.COMPFactory.server": {"tf": 1}}, "df": 6}}}}}}, "u": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.interfaces.IPlayer.id": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.id": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.scores": {"tf": 1}, "comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.games": {"tf": 1}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}}, "df": 7}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.interfaces.IPlayer.user_id": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}}, "df": 5}}}}}}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.interfaces.IGame.game_info": {"tf": 1}, "comprl.server.interfaces.IGame.all_actions": {"tf": 1}}, "df": 2}}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}}, "df": 5}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.interfaces.IGame.game_info": {"tf": 1}, "comprl.server.interfaces.IGame.all_actions": {"tf": 1}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.networking.COMPPlayer.connection": {"tf": 1}}, "df": 1}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.interfaces.IGame.scores": {"tf": 1}, "comprl.server.managers.GameManager.games": {"tf": 1}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1}}, "df": 4}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IGame.game_info": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.interfaces.IGame.scores": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.managers.PlayerManager.auth_players": {"tf": 1}}, "df": 1}}}}}}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.managers.QueuePlayer": {"tf": 1}, "comprl.shared.types.PlayerID": {"tf": 1}, "comprl.shared.types.GameID": {"tf": 1}}, "df": 3}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1}}, "df": 2}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.networking.COMPPlayer.is_connected": {"tf": 1}}, "df": 1}}}}}}, "default_value": {"root": {"0": {"docs": {"comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1}}, "df": 1}, "1": {"docs": {"comprl.client.networking.VERSION": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1}, "comprl.server.networking.VERSION": {"tf": 1}}, "df": 3}, "2": {"docs": {"comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1}}, "df": 1}, "docs": {"comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1.4142135623730951}, "comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1.4142135623730951}, "comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1.4142135623730951}, "comprl.server.data.interfaces.UserRole.USER": {"tf": 1.4142135623730951}, "comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1.4142135623730951}, "comprl.shared.commands.Auth.arguments": {"tf": 1}, "comprl.shared.commands.Auth.response": {"tf": 1.4142135623730951}, "comprl.shared.commands.Auth.reverseErrors": {"tf": 1}, "comprl.shared.commands.Auth.allErrors": {"tf": 1}, "comprl.shared.commands.Auth.commandName": {"tf": 1}, "comprl.shared.commands.Ready.arguments": {"tf": 1}, "comprl.shared.commands.Ready.response": {"tf": 1.4142135623730951}, "comprl.shared.commands.Ready.reverseErrors": {"tf": 1}, "comprl.shared.commands.Ready.allErrors": {"tf": 1}, "comprl.shared.commands.Ready.commandName": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.StartGame.response": {"tf": 1}, "comprl.shared.commands.StartGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.StartGame.allErrors": {"tf": 1}, "comprl.shared.commands.StartGame.commandName": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.EndGame.response": {"tf": 1}, "comprl.shared.commands.EndGame.reverseErrors": {"tf": 1}, "comprl.shared.commands.EndGame.allErrors": {"tf": 1}, "comprl.shared.commands.EndGame.commandName": {"tf": 1}, "comprl.shared.commands.Step.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.Step.response": {"tf": 1.4142135623730951}, "comprl.shared.commands.Step.reverseErrors": {"tf": 1}, "comprl.shared.commands.Step.allErrors": {"tf": 1}, "comprl.shared.commands.Step.commandName": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.Error.response": {"tf": 1}, "comprl.shared.commands.Error.reverseErrors": {"tf": 1}, "comprl.shared.commands.Error.allErrors": {"tf": 1}, "comprl.shared.commands.Error.commandName": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.Message.response": {"tf": 1}, "comprl.shared.commands.Message.reverseErrors": {"tf": 1}, "comprl.shared.commands.Message.allErrors": {"tf": 1}, "comprl.shared.commands.Message.commandName": {"tf": 1}}, "df": 40, "l": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1}, "comprl.server.data.interfaces.UserRole.USER": {"tf": 1}, "comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1}, "comprl.shared.commands.Auth.response": {"tf": 1.4142135623730951}, "comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}}, "df": 13}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "f": {"docs": {"comprl.shared.commands.EndGame.arguments": {"tf": 1}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}}, "df": 3}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.shared.commands.StartGame.arguments": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1}}, "df": 3}}}}}}}}}}}, "t": {"docs": {"comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1}, "comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1}, "comprl.server.data.interfaces.UserRole.USER": {"tf": 1}, "comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1}, "comprl.shared.commands.Auth.response": {"tf": 1.4142135623730951}, "comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}}, "df": 13}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "w": {"docs": {"comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.managers.QueuePlayer": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.data.interfaces.UserRole.USER": {"tf": 1.4142135623730951}}, "df": 1, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.UserRole.USER": {"tf": 1}, "comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1}}, "df": 2}}}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.managers.QueuePlayer": {"tf": 1}, "comprl.shared.types.PlayerID": {"tf": 1.4142135623730951}, "comprl.shared.types.GameID": {"tf": 1.4142135623730951}}, "df": 3}}}}, "x": {"2": {"7": {"docs": {"comprl.server.data.interfaces.UserRole.USER": {"tf": 1.4142135623730951}, "comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1.4142135623730951}, "comprl.shared.commands.Auth.response": {"tf": 2}, "comprl.shared.commands.Auth.commandName": {"tf": 1.4142135623730951}, "comprl.shared.commands.Ready.response": {"tf": 1.4142135623730951}, "comprl.shared.commands.Ready.commandName": {"tf": 1.4142135623730951}, "comprl.shared.commands.StartGame.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.StartGame.commandName": {"tf": 1.4142135623730951}, "comprl.shared.commands.EndGame.arguments": {"tf": 2}, "comprl.shared.commands.EndGame.commandName": {"tf": 1.4142135623730951}, "comprl.shared.commands.Step.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.Step.response": {"tf": 1.4142135623730951}, "comprl.shared.commands.Step.commandName": {"tf": 1.4142135623730951}, "comprl.shared.commands.Error.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.Error.commandName": {"tf": 1.4142135623730951}, "comprl.shared.commands.Message.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.Message.commandName": {"tf": 1.4142135623730951}}, "df": 17}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1.4142135623730951}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"comprl.shared.commands.Auth.response": {"tf": 1.4142135623730951}, "comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}}, "df": 8}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"comprl.shared.commands.Auth.commandName": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.shared.commands.Step.response": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.managers.QueuePlayer": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"comprl.shared.commands.Auth.response": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.shared.commands.Auth.response": {"tf": 1.4142135623730951}, "comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}}, "df": 8}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.managers.QueuePlayer": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.shared.commands.Auth.response": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {"comprl.shared.commands.StartGame.arguments": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.managers.QueuePlayer": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "b": {"docs": {"comprl.shared.commands.Auth.response": {"tf": 1.4142135623730951}, "comprl.shared.commands.Auth.commandName": {"tf": 1}, "comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.Ready.commandName": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.StartGame.commandName": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.EndGame.commandName": {"tf": 1}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}, "comprl.shared.commands.Step.commandName": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Error.commandName": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}, "comprl.shared.commands.Message.commandName": {"tf": 1}}, "df": 15, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1}}, "df": 2}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"comprl.shared.commands.Auth.response": {"tf": 1.4142135623730951}, "comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}}, "df": 8}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.shared.commands.Auth.response": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}}, "df": 4}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.shared.commands.StartGame.commandName": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "s": {"docs": {"comprl.shared.commands.EndGame.arguments": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"comprl.shared.commands.Step.commandName": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"comprl.shared.commands.Auth.response": {"tf": 1.4142135623730951}, "comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.StartGame.arguments": {"tf": 1}, "comprl.shared.commands.EndGame.arguments": {"tf": 1.4142135623730951}, "comprl.shared.commands.Step.arguments": {"tf": 1}, "comprl.shared.commands.Step.response": {"tf": 1}, "comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}}, "df": 8}}}}, "v": {"docs": {"comprl.shared.commands.Step.arguments": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.shared.commands.Auth.response": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"comprl.shared.commands.Ready.response": {"tf": 1}, "comprl.shared.commands.Ready.commandName": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"comprl.shared.commands.EndGame.arguments": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.shared.commands.EndGame.commandName": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"comprl.shared.commands.Error.commandName": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "g": {"docs": {"comprl.shared.commands.Error.arguments": {"tf": 1}, "comprl.shared.commands.Message.arguments": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"comprl.shared.commands.Message.commandName": {"tf": 1}}, "df": 1}}}}}}}}}, "signature": {"root": {"0": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}}, "df": 2}, "1": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 1}, "2": {"5": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1}}, "df": 1}, "docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 1}, "3": {"3": {"3": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "9": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1.4142135623730951}, "comprl.client.networking.connect_agent": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1.4142135623730951}}, "df": 3}, "docs": {}, "df": 0}, "6": {"5": {"3": {"3": {"5": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 3}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1}}, "df": 1}, "docs": {"comprl.client.agent.Agent.event": {"tf": 3.7416573867739413}, "comprl.client.agent.Agent.run": {"tf": 7.0710678118654755}, "comprl.client.agent.Agent.on_error": {"tf": 4.242640687119285}, "comprl.client.agent.Agent.on_message": {"tf": 4.242640687119285}, "comprl.client.agent.Agent.on_disconnect": {"tf": 3.1622776601683795}, "comprl.client.interfaces.IAgent.run": {"tf": 4.242640687119285}, "comprl.client.interfaces.IAgent.auth": {"tf": 3.4641016151377544}, "comprl.client.interfaces.IAgent.is_ready": {"tf": 3.4641016151377544}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 4.47213595499958}, "comprl.client.interfaces.IAgent.get_step": {"tf": 5.477225575051661}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 5.744562646538029}, "comprl.client.interfaces.IAgent.on_error": {"tf": 4.242640687119285}, "comprl.client.interfaces.IAgent.on_message": {"tf": 4.242640687119285}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 3.1622776601683795}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 6.557438524302}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 3.1622776601683795}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 3.7416573867739413}, "comprl.client.networking.ClientProtocol.auth": {"tf": 3.1622776601683795}, "comprl.client.networking.ClientProtocol.ready": {"tf": 3.1622776601683795}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 4.242640687119285}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 4.242640687119285}, "comprl.client.networking.ClientProtocol.step": {"tf": 4.795831523312719}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 3.7416573867739413}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 3.7416573867739413}, "comprl.client.networking.connect_agent": {"tf": 7.681145747868608}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 11.704699910719626}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 4.47213595499958}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 5.291502622129181}, "comprl.server.data.sql_backend.GameData.add": {"tf": 6}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 4.898979485566356}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 5.291502622129181}, "comprl.server.data.sql_backend.UserData.add": {"tf": 8.94427190999916}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 4.47213595499958}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 4.47213595499958}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 5}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 5.477225575051661}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 6}, "comprl.server.interfaces.IPlayer.authenticate": {"tf": 3.7416573867739413}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 4}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 3.7416573867739413}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 5.656854249492381}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 4.242640687119285}, "comprl.server.interfaces.IPlayer.disconnect": {"tf": 4.242640687119285}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 4.242640687119285}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 4.242640687119285}, "comprl.server.interfaces.IGame.__init__": {"tf": 5.385164807134504}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 6.6332495807108}, "comprl.server.interfaces.IGame.start": {"tf": 3.1622776601683795}, "comprl.server.interfaces.IGame.force_end": {"tf": 4.69041575982343}, "comprl.server.interfaces.IGame.get_result": {"tf": 5.744562646538029}, "comprl.server.interfaces.IServer.on_start": {"tf": 3.1622776601683795}, "comprl.server.interfaces.IServer.on_stop": {"tf": 3.1622776601683795}, "comprl.server.interfaces.IServer.on_connect": {"tf": 5.477225575051661}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 5.477225575051661}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 6.164414002968976}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 5.830951894845301}, "comprl.server.interfaces.IServer.on_update": {"tf": 3.1622776601683795}, "comprl.server.managers.GameManager.__init__": {"tf": 5.385164807134504}, "comprl.server.managers.GameManager.start_game": {"tf": 7.14142842854285}, "comprl.server.managers.GameManager.end_game": {"tf": 5.656854249492381}, "comprl.server.managers.GameManager.force_game_end": {"tf": 4.69041575982343}, "comprl.server.managers.GameManager.get": {"tf": 6.4031242374328485}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 6.4031242374328485}, "comprl.server.managers.PlayerManager.add": {"tf": 5.656854249492381}, "comprl.server.managers.PlayerManager.auth": {"tf": 5.656854249492381}, "comprl.server.managers.PlayerManager.remove": {"tf": 5.656854249492381}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 5.385164807134504}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 6.4031242374328485}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 4.47213595499958}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 4.47213595499958}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 5.477225575051661}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 6}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 6.782329983125268}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 4.898979485566356}, "comprl.server.managers.MatchmakingManager.match": {"tf": 4.898979485566356}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 4.898979485566356}, "comprl.server.networking.COMPServerProtocol.__init__": {"tf": 4.47213595499958}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 5}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 5}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 5.744562646538029}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 5.291502622129181}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 3.4641016151377544}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 3.7416573867739413}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 4.47213595499958}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 4}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 5.477225575051661}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 5.477225575051661}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 4.898979485566356}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 6.782329983125268}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 4.47213595499958}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 4.242640687119285}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 4.242640687119285}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 3.1622776601683795}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 4.898979485566356}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 3.7416573867739413}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 4}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 4.69041575982343}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 4.242640687119285}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 4.242640687119285}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 4.242640687119285}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 4.242640687119285}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 4.242640687119285}, "comprl.server.networking.COMPFactory.__init__": {"tf": 4.898979485566356}, "comprl.server.networking.COMPFactory.startFactory": {"tf": 3.4641016151377544}, "comprl.server.networking.COMPFactory.stopFactory": {"tf": 3.4641016151377544}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 7.681145747868608}, "comprl.server.networking.launch_server": {"tf": 6.48074069840786}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 3.605551275463989}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 3.605551275463989}, "comprl.server.util.ConfigProvider.get": {"tf": 3.1622776601683795}, "comprl.server.util.ConfigProvider.set": {"tf": 3.7416573867739413}}, "df": 111, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"comprl.client.agent.Agent.event": {"tf": 1}, "comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.agent.Agent.on_disconnect": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.auth": {"tf": 1}, "comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IPlayer.disconnect": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.interfaces.IServer.on_stop": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_update": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}, "comprl.server.networking.COMPFactory.startFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.stopFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 94}}, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.managers.GameManager.__init__": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPFactory.__init__": {"tf": 1.4142135623730951}, "comprl.server.networking.launch_server": {"tf": 1.4142135623730951}}, "df": 23}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1.4142135623730951}, "comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.auth": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.interfaces.IPlayer.disconnect": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}}, "df": 25}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}}, "df": 5}, "e": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}, "q": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 3}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"comprl.client.agent.Agent.event": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}}, "df": 9}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}}, "df": 2}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}}, "df": 6}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}}, "df": 2}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.managers.GameManager.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1}}, "df": 3}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.__init__": {"tf": 1}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1.4142135623730951}}, "df": 7}}}, "t": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 3}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 3}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}}, "df": 15, "s": {"docs": {"comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}}, "df": 2}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 14, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.managers.GameManager.__init__": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.networking.COMPFactory.__init__": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 22}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "d": {"docs": {"comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}}, "df": 22}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}}, "df": 2}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.interfaces.IPlayer.get_action": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.networking.COMPFactory.__init__": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 2}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}}, "df": 9}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.managers.GameManager.__init__": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}}, "df": 5}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 1.4142135623730951}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.__init__": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPFactory.startFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.stopFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 36, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}}, "df": 8}}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1.4142135623730951}}, "df": 1}, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.networking.COMPPlayer.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "g": {"docs": {"comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}}, "df": 11}}, "u": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 3}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.MatchmakingManager.__init__": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"comprl.server.managers.MatchmakingManager.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}}, "df": 8}}, "x": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.__init__": {"tf": 1}}, "df": 2}}}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}}, "df": 2}}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.managers.GameManager.__init__": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}}, "df": 13, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}, "t": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 3}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "v": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}}, "df": 5}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}}, "df": 12}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.server.interfaces.IPlayer.disconnect": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}}, "df": 5}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}}, "df": 3}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}}, "df": 2}}, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.managers.GameManager.__init__": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPFactory.__init__": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 25}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.networking.COMPPlayer.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}}, "df": 3}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}}, "df": 14}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}}, "df": 8}}}}}}}}, "u": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.force_end": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.get": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.auth": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1.4142135623730951}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1.4142135623730951}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1.4142135623730951}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1.4142135623730951}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1.4142135623730951}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1.4142135623730951}}, "df": 16}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"1": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.7320508075688772}}, "df": 1}, "2": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 1}, "docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.add": {"tf": 2.8284271247461903}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 9, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}}, "df": 4}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}}, "df": 5}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 1}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.util.ConfigProvider.get": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1}}, "df": 2}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.util.ConfigProvider.set": {"tf": 1}}, "df": 1}}}}}}}, "bases": {"root": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"comprl.client.agent.Agent": {"tf": 1}, "comprl.server.networking.COMPPlayer": {"tf": 1}}, "df": 2}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"comprl.shared.commands.Auth": {"tf": 1}, "comprl.shared.commands.Ready": {"tf": 1}, "comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.EndGame": {"tf": 1}, "comprl.shared.commands.Step": {"tf": 1}, "comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}}, "df": 7}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.agent.Agent": {"tf": 1}, "comprl.server.networking.COMPPlayer": {"tf": 1}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"comprl.server.data.interfaces.GameEndState": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.networking.COMPPlayer": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.client.networking.ClientProtocol": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1}, "comprl.shared.commands.Ready": {"tf": 1}, "comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.EndGame": {"tf": 1}, "comprl.shared.commands.Step": {"tf": 1}, "comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}}, "df": 10}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1}}, "df": 1, "s": {"docs": {"comprl.client.networking.ClientProtocol": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1}, "comprl.shared.commands.Ready": {"tf": 1}, "comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.EndGame": {"tf": 1}, "comprl.shared.commands.Step": {"tf": 1}, "comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}}, "df": 9}}}}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"comprl.client.networking.ClientProtocol": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}, "comprl.shared.commands.Auth": {"tf": 1}, "comprl.shared.commands.Ready": {"tf": 1}, "comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.EndGame": {"tf": 1}, "comprl.shared.commands.Step": {"tf": 1}, "comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}}, "df": 9}}, "b": {"docs": {}, "df": 0, "c": {"docs": {"comprl.server.interfaces.IPlayer": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame": {"tf": 1.4142135623730951}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.UserRole": {"tf": 1.4142135623730951}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.networking.COMPPlayer": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "doc": {"root": {"1": {"docs": {"comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}}, "df": 4}, "2": {"5": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1}}, "df": 1}, "docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 1}, "3": {"3": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "6": {"5": {"3": {"3": {"5": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 3}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1}}, "df": 1}, "docs": {"comprl": {"tf": 1.7320508075688772}, "comprl.client": {"tf": 1.7320508075688772}, "comprl.client.agent": {"tf": 1.7320508075688772}, "comprl.client.agent.Agent": {"tf": 2.449489742783178}, "comprl.client.agent.Agent.event": {"tf": 3.1622776601683795}, "comprl.client.agent.Agent.run": {"tf": 4}, "comprl.client.agent.Agent.on_error": {"tf": 1.7320508075688772}, "comprl.client.agent.Agent.on_message": {"tf": 1.7320508075688772}, "comprl.client.agent.Agent.on_disconnect": {"tf": 1.7320508075688772}, "comprl.client.interfaces": {"tf": 1.7320508075688772}, "comprl.client.interfaces.IAgent": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.run": {"tf": 2.6457513110645907}, "comprl.client.interfaces.IAgent.auth": {"tf": 2.449489742783178}, "comprl.client.interfaces.IAgent.is_ready": {"tf": 2.449489742783178}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 3.1622776601683795}, "comprl.client.interfaces.IAgent.get_step": {"tf": 3.1622776601683795}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 3}, "comprl.client.interfaces.IAgent.on_error": {"tf": 2.6457513110645907}, "comprl.client.interfaces.IAgent.on_message": {"tf": 2.449489742783178}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1.7320508075688772}, "comprl.client.networking": {"tf": 1.7320508075688772}, "comprl.client.networking.VERSION": {"tf": 1.7320508075688772}, "comprl.client.networking.ClientProtocol": {"tf": 2.449489742783178}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 3}, "comprl.client.networking.ClientProtocol.agent": {"tf": 1.7320508075688772}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1.7320508075688772}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 2.6457513110645907}, "comprl.client.networking.ClientProtocol.auth": {"tf": 2.8284271247461903}, "comprl.client.networking.ClientProtocol.ready": {"tf": 2.6457513110645907}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 3.3166247903554}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 3.4641016151377544}, "comprl.client.networking.ClientProtocol.step": {"tf": 3.3166247903554}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 2.6457513110645907}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 2.6457513110645907}, "comprl.client.networking.connect_agent": {"tf": 4}, "comprl.server": {"tf": 1.7320508075688772}, "comprl.server.data": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.GameEndState": {"tf": 2.449489742783178}, "comprl.server.data.interfaces.GameEndState.WIN": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.GameEndState.DRAW": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.GameEndState.DISCONNECTED": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.GameResult": {"tf": 1.4142135623730951}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 3.7416573867739413}, "comprl.server.data.interfaces.GameResult.game_id": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.GameResult.user1_id": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.GameResult.user2_id": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.GameResult.score_user_1": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.GameResult.score_user_2": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.GameResult.start_time": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.GameResult.end_state": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.GameResult.winner_id": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.GameResult.disconnected_id": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.UserRole": {"tf": 2.449489742783178}, "comprl.server.data.interfaces.UserRole.USER": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.UserRole.ADMIN": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 2.8284271247461903}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.__init__": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.host": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.SQLiteConnectionInfo.table": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.GameData": {"tf": 2.8284271247461903}, "comprl.server.data.sql_backend.GameData.__init__": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.GameData.connection": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.GameData.cursor": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.GameData.table": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.GameData.add": {"tf": 2.6457513110645907}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 2.6457513110645907}, "comprl.server.data.sql_backend.UserData": {"tf": 2.8284271247461903}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 2.6457513110645907}, "comprl.server.data.sql_backend.UserData.connection": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.cursor": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.table": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.add": {"tf": 3.872983346207417}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 2.6457513110645907}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 3.1622776601683795}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 3.1622776601683795}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 3.1622776601683795}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 3}, "comprl.server.interfaces": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IAction": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IPlayer": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IPlayer.id": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IPlayer.user_id": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IPlayer.is_connected": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IPlayer.authenticate": {"tf": 2.23606797749979}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 2}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 2.8284271247461903}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IPlayer.disconnect": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame": {"tf": 3.3166247903554}, "comprl.server.interfaces.IGame.__init__": {"tf": 2.6457513110645907}, "comprl.server.interfaces.IGame.id": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IGame.players": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IGame.finish_callbacks": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IGame.scores": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IGame.start_time": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IGame.disconnected_player_id": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IGame.game_info": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IGame.all_actions": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 2.8284271247461903}, "comprl.server.interfaces.IGame.start": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IGame.force_end": {"tf": 2.6457513110645907}, "comprl.server.interfaces.IGame.get_result": {"tf": 2.449489742783178}, "comprl.server.interfaces.IServer": {"tf": 2.449489742783178}, "comprl.server.interfaces.IServer.on_start": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IServer.on_stop": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IServer.on_connect": {"tf": 2}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 2}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 2}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 2}, "comprl.server.interfaces.IServer.on_update": {"tf": 1.7320508075688772}, "comprl.server.managers": {"tf": 1.7320508075688772}, "comprl.server.managers.GameManager": {"tf": 2.8284271247461903}, "comprl.server.managers.GameManager.__init__": {"tf": 1.7320508075688772}, "comprl.server.managers.GameManager.games": {"tf": 1.7320508075688772}, "comprl.server.managers.GameManager.game_type": {"tf": 1.7320508075688772}, "comprl.server.managers.GameManager.start_game": {"tf": 3.1622776601683795}, "comprl.server.managers.GameManager.end_game": {"tf": 2.6457513110645907}, "comprl.server.managers.GameManager.force_game_end": {"tf": 2.449489742783178}, "comprl.server.managers.GameManager.get": {"tf": 3.1622776601683795}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 2.23606797749979}, "comprl.server.managers.PlayerManager": {"tf": 1.7320508075688772}, "comprl.server.managers.PlayerManager.auth_players": {"tf": 1.7320508075688772}, "comprl.server.managers.PlayerManager.connected_players": {"tf": 1.7320508075688772}, "comprl.server.managers.PlayerManager.add": {"tf": 3}, "comprl.server.managers.PlayerManager.auth": {"tf": 3.3166247903554}, "comprl.server.managers.PlayerManager.remove": {"tf": 3}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 3.1622776601683795}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 3.1622776601683795}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 3}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 3}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 3.1622776601683795}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 3}, "comprl.server.managers.QueuePlayer": {"tf": 1.7320508075688772}, "comprl.server.managers.MatchmakingManager": {"tf": 1.4142135623730951}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 2.8284271247461903}, "comprl.server.managers.MatchmakingManager.player_manager": {"tf": 1.7320508075688772}, "comprl.server.managers.MatchmakingManager.game_manager": {"tf": 1.7320508075688772}, "comprl.server.managers.MatchmakingManager.model": {"tf": 1.7320508075688772}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 3}, "comprl.server.managers.MatchmakingManager.match": {"tf": 2.6457513110645907}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 2.6457513110645907}, "comprl.server.networking": {"tf": 1.4142135623730951}, "comprl.server.networking.VERSION": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol": {"tf": 3.605551275463989}, "comprl.server.networking.COMPServerProtocol.__init__": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.connection_made_callbacks": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.connection_lost_callbacks": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.connection_timeout_callbacks": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.connection_error_callbacks": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 2.6457513110645907}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 2.8284271247461903}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 2.8284271247461903}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 2.8284271247461903}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 2.23606797749979}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 2.8284271247461903}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 2.23606797749979}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 2.449489742783178}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 3}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 3.1622776601683795}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 2.6457513110645907}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 3.1622776601683795}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 2.8284271247461903}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 3}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 3}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 2.23606797749979}, "comprl.server.networking.COMPPlayer": {"tf": 2.6457513110645907}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 2.6457513110645907}, "comprl.server.networking.COMPPlayer.connection": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPPlayer.is_connected": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 3.3166247903554}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 3.1622776601683795}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 2.6457513110645907}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 2.8284271247461903}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 2.8284271247461903}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 2.6457513110645907}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 2.6457513110645907}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 2.6457513110645907}, "comprl.server.networking.COMPFactory": {"tf": 3.1622776601683795}, "comprl.server.networking.COMPFactory.__init__": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPFactory.server": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPFactory.startFactory": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPFactory.stopFactory": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 3.3166247903554}, "comprl.server.networking.launch_server": {"tf": 2.8284271247461903}, "comprl.server.util": {"tf": 1.7320508075688772}, "comprl.server.util.IDGenerator": {"tf": 1.4142135623730951}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 2}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 2}, "comprl.server.util.ConfigProvider": {"tf": 1.4142135623730951}, "comprl.server.util.ConfigProvider.get": {"tf": 2.6457513110645907}, "comprl.server.util.ConfigProvider.set": {"tf": 2.449489742783178}, "comprl.shared": {"tf": 1.7320508075688772}, "comprl.shared.commands": {"tf": 1.7320508075688772}, "comprl.shared.commands.Auth": {"tf": 3.1622776601683795}, "comprl.shared.commands.Auth.arguments": {"tf": 1.7320508075688772}, "comprl.shared.commands.Auth.response": {"tf": 1.7320508075688772}, "comprl.shared.commands.Auth.reverseErrors": {"tf": 1.7320508075688772}, "comprl.shared.commands.Auth.allErrors": {"tf": 1.7320508075688772}, "comprl.shared.commands.Auth.commandName": {"tf": 1.7320508075688772}, "comprl.shared.commands.Ready": {"tf": 1.4142135623730951}, "comprl.shared.commands.Ready.arguments": {"tf": 1.7320508075688772}, "comprl.shared.commands.Ready.response": {"tf": 1.7320508075688772}, "comprl.shared.commands.Ready.reverseErrors": {"tf": 1.7320508075688772}, "comprl.shared.commands.Ready.allErrors": {"tf": 1.7320508075688772}, "comprl.shared.commands.Ready.commandName": {"tf": 1.7320508075688772}, "comprl.shared.commands.StartGame": {"tf": 1.4142135623730951}, "comprl.shared.commands.StartGame.arguments": {"tf": 1.7320508075688772}, "comprl.shared.commands.StartGame.response": {"tf": 1.7320508075688772}, "comprl.shared.commands.StartGame.reverseErrors": {"tf": 1.7320508075688772}, "comprl.shared.commands.StartGame.allErrors": {"tf": 1.7320508075688772}, "comprl.shared.commands.StartGame.commandName": {"tf": 1.7320508075688772}, "comprl.shared.commands.EndGame": {"tf": 1.4142135623730951}, "comprl.shared.commands.EndGame.arguments": {"tf": 1.7320508075688772}, "comprl.shared.commands.EndGame.response": {"tf": 1.7320508075688772}, "comprl.shared.commands.EndGame.reverseErrors": {"tf": 1.7320508075688772}, "comprl.shared.commands.EndGame.allErrors": {"tf": 1.7320508075688772}, "comprl.shared.commands.EndGame.commandName": {"tf": 1.7320508075688772}, "comprl.shared.commands.Step": {"tf": 1.4142135623730951}, "comprl.shared.commands.Step.arguments": {"tf": 1.7320508075688772}, "comprl.shared.commands.Step.response": {"tf": 1.7320508075688772}, "comprl.shared.commands.Step.reverseErrors": {"tf": 1.7320508075688772}, "comprl.shared.commands.Step.allErrors": {"tf": 1.7320508075688772}, "comprl.shared.commands.Step.commandName": {"tf": 1.7320508075688772}, "comprl.shared.commands.Error": {"tf": 1.4142135623730951}, "comprl.shared.commands.Error.arguments": {"tf": 1.7320508075688772}, "comprl.shared.commands.Error.response": {"tf": 1.7320508075688772}, "comprl.shared.commands.Error.reverseErrors": {"tf": 1.7320508075688772}, "comprl.shared.commands.Error.allErrors": {"tf": 1.7320508075688772}, "comprl.shared.commands.Error.commandName": {"tf": 1.7320508075688772}, "comprl.shared.commands.Message": {"tf": 1.4142135623730951}, "comprl.shared.commands.Message.arguments": {"tf": 1.7320508075688772}, "comprl.shared.commands.Message.response": {"tf": 1.7320508075688772}, "comprl.shared.commands.Message.reverseErrors": {"tf": 1.7320508075688772}, "comprl.shared.commands.Message.allErrors": {"tf": 1.7320508075688772}, "comprl.shared.commands.Message.commandName": {"tf": 1.7320508075688772}, "comprl.shared.types": {"tf": 1.4142135623730951}, "comprl.shared.types.PlayerID": {"tf": 1.7320508075688772}, "comprl.shared.types.GameID": {"tf": 1.7320508075688772}}, "df": 243, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client": {"tf": 1}, "comprl.client.agent": {"tf": 1}, "comprl.client.agent.Agent": {"tf": 1}, "comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.interfaces": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.interfaces": {"tf": 1}, "comprl.server.interfaces": {"tf": 1}, "comprl.server.interfaces.IServer": {"tf": 1}, "comprl.server.managers": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1.4142135623730951}, "comprl.server.util": {"tf": 1}}, "df": 14}}, "e": {"docs": {"comprl.client": {"tf": 1.4142135623730951}, "comprl.client.agent": {"tf": 1.7320508075688772}, "comprl.client.agent.Agent": {"tf": 2}, "comprl.client.agent.Agent.event": {"tf": 1.4142135623730951}, "comprl.client.agent.Agent.run": {"tf": 3.605551275463989}, "comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.agent.Agent.on_disconnect": {"tf": 1.4142135623730951}, "comprl.client.interfaces": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1.7320508075688772}, "comprl.client.interfaces.IAgent.auth": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.is_ready": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1.7320508075688772}, "comprl.client.interfaces.IAgent.get_step": {"tf": 2}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 2.6457513110645907}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1.4142135623730951}, "comprl.client.networking": {"tf": 1}, "comprl.client.networking.ClientProtocol": {"tf": 2}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 2.23606797749979}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 2}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1.7320508075688772}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 2.449489742783178}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 2}, "comprl.client.networking.ClientProtocol.step": {"tf": 2.23606797749979}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1.4142135623730951}, "comprl.client.networking.connect_agent": {"tf": 3.605551275463989}, "comprl.server.data.interfaces": {"tf": 1.4142135623730951}, "comprl.server.data.interfaces.GameEndState": {"tf": 2}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 2.8284271247461903}, "comprl.server.data.interfaces.UserRole": {"tf": 1}, "comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 2.23606797749979}, "comprl.server.data.sql_backend.GameData": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.add": {"tf": 3.872983346207417}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 2.449489742783178}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 2.23606797749979}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 2.6457513110645907}, "comprl.server.interfaces": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IPlayer.disconnect": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 2.449489742783178}, "comprl.server.interfaces.IGame.__init__": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.start": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.force_end": {"tf": 2}, "comprl.server.interfaces.IGame.get_result": {"tf": 2}, "comprl.server.interfaces.IServer": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.interfaces.IServer.on_stop": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IServer.on_update": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 2}, "comprl.server.managers.GameManager.end_game": {"tf": 2}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 2.23606797749979}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 2}, "comprl.server.managers.PlayerManager.add": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.auth": {"tf": 2}, "comprl.server.managers.PlayerManager.remove": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 2}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 2}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 2.23606797749979}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 2.6457513110645907}, "comprl.server.managers.MatchmakingManager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1.4142135623730951}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 2}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1.7320508075688772}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1.7320508075688772}, "comprl.server.networking": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol": {"tf": 2.449489742783178}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 2}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 2}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 2.23606797749979}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 2.449489742783178}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 2.6457513110645907}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 2}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 2}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 2.23606797749979}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 2.23606797749979}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 2.23606797749979}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPFactory": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPFactory.startFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.stopFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 2.23606797749979}, "comprl.server.networking.launch_server": {"tf": 1.7320508075688772}, "comprl.server.util": {"tf": 1}, "comprl.server.util.IDGenerator": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1.4142135623730951}, "comprl.server.util.ConfigProvider.set": {"tf": 1.4142135623730951}, "comprl.shared.commands": {"tf": 1.4142135623730951}, "comprl.shared.commands.Auth": {"tf": 2.449489742783178}, "comprl.shared.commands.Ready": {"tf": 1.4142135623730951}, "comprl.shared.commands.StartGame": {"tf": 1.4142135623730951}, "comprl.shared.commands.EndGame": {"tf": 1.4142135623730951}, "comprl.shared.commands.Step": {"tf": 1.4142135623730951}, "comprl.shared.types": {"tf": 1.4142135623730951}}, "df": 135, "i": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 8}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IServer": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1.4142135623730951}, "comprl.server.managers": {"tf": 1}, "comprl.server.managers.GameManager": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1.4142135623730951}, "comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.EndGame": {"tf": 1}}, "df": 20}}}, "o": {"docs": {"comprl.client.agent": {"tf": 1}, "comprl.client.agent.Agent": {"tf": 1.4142135623730951}, "comprl.client.agent.Agent.event": {"tf": 1.4142135623730951}, "comprl.client.agent.Agent.run": {"tf": 2.23606797749979}, "comprl.client.interfaces.IAgent.is_ready": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol": {"tf": 1}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 2.23606797749979}, "comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 2}, "comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 2}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1.4142135623730951}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1.7320508075688772}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1.4142135623730951}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 2}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1.4142135623730951}, "comprl.shared.commands.Auth": {"tf": 1}, "comprl.shared.commands.Ready": {"tf": 1.4142135623730951}, "comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.EndGame": {"tf": 1}}, "df": 55, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1.7320508075688772}, "comprl.client.interfaces.IAgent.run": {"tf": 1.7320508075688772}, "comprl.client.interfaces.IAgent.auth": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1.4142135623730951}, "comprl.client.networking.connect_agent": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1.7320508075688772}, "comprl.server.managers.PlayerManager.auth": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1.4142135623730951}, "comprl.shared.commands.Auth": {"tf": 1.4142135623730951}}, "df": 12}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}}, "df": 11}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IGame": {"tf": 1.4142135623730951}}, "df": 2, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.interfaces.IServer.on_timeout": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 2}}, "df": 3}}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1.4142135623730951}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}}, "df": 2}}}}}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.managers.GameManager": {"tf": 1.7320508075688772}}, "df": 1, "[": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.managers.GameManager": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"comprl.shared.types": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client": {"tf": 1}, "comprl.client.agent": {"tf": 1}, "comprl.client.interfaces": {"tf": 1}, "comprl.server.data.interfaces": {"tf": 1}, "comprl.server.interfaces": {"tf": 1}, "comprl.server.managers": {"tf": 1}, "comprl.server.util": {"tf": 1}}, "df": 7}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1.4142135623730951}, "comprl.client.networking.connect_agent": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"comprl.client.agent.Agent": {"tf": 1}, "comprl.server.interfaces.IServer": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1}}, "df": 3}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}, "comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}}, "df": 11}}}}}}, "s": {"docs": {}, "df": 0, "g": {"docs": {"comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}}, "df": 8}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1.4142135623730951}}, "df": 3}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.networking.ClientProtocol.step": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}}, "df": 3}}}, "e": {"docs": {"comprl.server.managers": {"tf": 1}}, "df": 1, "s": {"docs": {"comprl.server.managers.GameManager": {"tf": 1}, "comprl.server.managers.PlayerManager": {"tf": 1}}, "df": 2}, "d": {"docs": {"comprl.server.managers.GameManager": {"tf": 1}}, "df": 1}, "r": {"docs": {"comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 2}}, "df": 3}}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}}, "df": 1, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.MatchmakingManager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}}, "df": 7, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.managers.MatchmakingManager.match": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1.4142135623730951}}, "df": 5}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPPlayer": {"tf": 1}}, "df": 13, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}}, "df": 3, "s": {"docs": {"comprl.client": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}}, "df": 4}}}}}}}}}, "t": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 13, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.agent.Agent": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.networking.COMPServerProtocol": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}}, "df": 2}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.interfaces": {"tf": 1}, "comprl.client.interfaces.IAgent": {"tf": 1}, "comprl.server.interfaces.IAction": {"tf": 1}, "comprl.server.interfaces.IPlayer": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IServer": {"tf": 1.4142135623730951}, "comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}}, "df": 8, "s": {"docs": {"comprl.server.data.interfaces": {"tf": 1}, "comprl.server.interfaces": {"tf": 1}}, "df": 2}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.shared.commands.Auth": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1.4142135623730951}}, "df": 3}}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1.4142135623730951}}, "df": 5}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 8, "s": {"docs": {"comprl.server.managers": {"tf": 1}, "comprl.server.managers.GameManager": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1.7320508075688772}}, "df": 2}}}}}}}, "t": {"docs": {"comprl.client.agent.Agent": {"tf": 1}, "comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1}}, "df": 4, "s": {"docs": {"comprl.server.data.sql_backend.GameData.remove": {"tf": 1}}, "df": 1}}, "f": {"docs": {"comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.is_ready": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1.4142135623730951}, "comprl.shared.commands.Ready": {"tf": 1}}, "df": 20}, "s": {"docs": {"comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.is_ready": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 2}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.shared.commands.Ready": {"tf": 1}}, "df": 27, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 2}}}}}}, "d": {"docs": {"comprl.client.interfaces.IAgent.on_start_game": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1.4142135623730951}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 2.449489742783178}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1.7320508075688772}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.get": {"tf": 1.7320508075688772}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.auth": {"tf": 1.7320508075688772}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 2}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1.7320508075688772}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1.7320508075688772}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1.7320508075688772}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1.7320508075688772}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1.4142135623730951}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1.4142135623730951}, "comprl.server.util.IDGenerator": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1.4142135623730951}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1.4142135623730951}}, "df": 29, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1}}, "df": 1}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.interfaces.IServer": {"tf": 1}, "comprl.server.interfaces.IServer.on_update": {"tf": 1}}, "df": 3}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.interfaces.IPlayer.get_action": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}}, "df": 7}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.managers.GameManager": {"tf": 1}}, "df": 4}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client": {"tf": 1}, "comprl.client.agent.Agent.run": {"tf": 1.4142135623730951}, "comprl.client.networking": {"tf": 1}, "comprl.client.networking.ClientProtocol": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1}, "comprl.shared.commands": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 2}, "comprl.shared.commands.Ready": {"tf": 1}, "comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.EndGame": {"tf": 1}, "comprl.shared.types": {"tf": 1}}, "df": 27}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.agent": {"tf": 1}, "comprl.client.agent.Agent": {"tf": 1}, "comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.managers.GameManager": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPFactory": {"tf": 1}}, "df": 9, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.networking": {"tf": 1}, "comprl.server.managers": {"tf": 1}}, "df": 2}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.server.networking.COMPPlayer": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1.4142135623730951}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 4, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.networking": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.networking.COMPPlayer": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.networking.COMPPlayer.__init__": {"tf": 1}}, "df": 1}}}}}}}, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.networking.ClientProtocol": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.shared.commands": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"comprl.shared.commands.Auth": {"tf": 1}, "comprl.shared.commands.Ready": {"tf": 1}, "comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.EndGame": {"tf": 1}, "comprl.shared.commands.Step": {"tf": 1}, "comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}}, "df": 7, "s": {"docs": {"comprl.shared.commands": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.agent": {"tf": 1}, "comprl.client.interfaces": {"tf": 1}, "comprl.client.networking": {"tf": 1}, "comprl.server.data.interfaces": {"tf": 1}, "comprl.server.interfaces": {"tf": 1}, "comprl.server.managers": {"tf": 1}, "comprl.server.networking": {"tf": 1}, "comprl.server.util": {"tf": 1}, "comprl.shared.types": {"tf": 1}}, "df": 9}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}}, "df": 3}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.client.agent": {"tf": 1}, "comprl.client.agent.Agent": {"tf": 1.4142135623730951}}, "df": 2}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1.4142135623730951}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol": {"tf": 2}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.networking.COMPPlayer": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1.4142135623730951}}, "df": 17, "s": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1.4142135623730951}, "comprl.client.networking.connect_agent": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}}, "df": 3}, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.managers.PlayerManager": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}}, "df": 4}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.util.ConfigProvider": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1}}, "df": 3}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"comprl.client.interfaces.IAgent": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}}, "df": 3}, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.agent.Agent.on_disconnect": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.interfaces.IServer.on_stop": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_update": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}}, "df": 30}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"comprl.server.interfaces.IPlayer.authenticate": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1.7320508075688772}}, "df": 13, "s": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol": {"tf": 2}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}}, "df": 3, "[": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}}, "df": 3}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1.4142135623730951}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.managers.GameManager.force_game_end": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.data.sql_backend.GameData": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData": {"tf": 1.7320508075688772}}, "df": 2}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.shared.commands.Ready": {"tf": 1}}, "df": 2, "s": {"docs": {"comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}}, "df": 4}}}}}, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame.start": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.util.IDGenerator": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"comprl.server.networking.launch_server": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}}, "df": 1, "s": {"docs": {"comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 4}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}}, "df": 3}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IServer": {"tf": 1}}, "df": 1, "s": {"docs": {"comprl.client.agent.Agent": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.server.util.ConfigProvider": {"tf": 1}}, "df": 3}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.client.networking.ClientProtocol": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1.7320508075688772}}, "df": 5}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1.7320508075688772}, "comprl.client.networking.connect_agent": {"tf": 1.7320508075688772}, "comprl.server.networking.launch_server": {"tf": 1.4142135623730951}}, "df": 3}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.UserRole": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 3}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"comprl.client.interfaces.IAgent.is_ready": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1.4142135623730951}}, "df": 4, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IPlayer": {"tf": 1}, "comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IPlayer.disconnect": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1.7320508075688772}, "comprl.server.managers.PlayerManager.add": {"tf": 1.7320508075688772}, "comprl.server.managers.PlayerManager.auth": {"tf": 2}, "comprl.server.managers.PlayerManager.remove": {"tf": 1.7320508075688772}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1.7320508075688772}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 2.23606797749979}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1.4142135623730951}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 2}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1.7320508075688772}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPPlayer": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}}, "df": 32, "s": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.__init__": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.managers": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1.7320508075688772}, "comprl.server.managers.PlayerManager": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.managers.MatchmakingManager": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}}, "df": 11}, "i": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}}, "df": 9}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.managers.GameManager.force_game_end": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client": {"tf": 1}, "comprl.client.agent.Agent": {"tf": 1}, "comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.interfaces": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.networking": {"tf": 1}, "comprl.client.networking.ClientProtocol": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.interfaces": {"tf": 1}, "comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.interfaces": {"tf": 1}, "comprl.server.interfaces.IAction": {"tf": 1}, "comprl.server.interfaces.IPlayer": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IServer": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.networking.COMPPlayer": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 2}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1.4142135623730951}, "comprl.server.util": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}, "comprl.shared.commands": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1}, "comprl.shared.commands.Step": {"tf": 1}, "comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}}, "df": 39, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}}, "df": 2}, "d": {"docs": {"comprl.server.interfaces.IGame.force_end": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}}, "df": 4}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"comprl.client.agent.Agent.event": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.agent.Agent.event": {"tf": 2.23606797749979}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}}, "df": 12, "s": {"docs": {"comprl.client.networking": {"tf": 1}, "comprl.server.util": {"tf": 1}}, "df": 2}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.agent.Agent.on_disconnect": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}, "comprl.shared.commands.Step": {"tf": 1}}, "df": 15}}, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.interfaces.IServer.on_update": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"comprl.shared.commands.Auth": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}}, "df": 6}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPFactory.startFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.stopFactory": {"tf": 1}}, "df": 3}}}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.interfaces.IServer.on_update": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1.4142135623730951}}, "df": 6}}}}}, "s": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.server.util.IDGenerator": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client": {"tf": 1}, "comprl.client.agent": {"tf": 1}, "comprl.client.agent.Agent": {"tf": 1.7320508075688772}, "comprl.client.agent.Agent.run": {"tf": 2}, "comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.agent.Agent.on_disconnect": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}, "comprl.client.networking.ClientProtocol": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 2}, "comprl.server.interfaces.IServer": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.interfaces.IServer.on_stop": {"tf": 1}, "comprl.server.interfaces.IServer.on_update": {"tf": 1}, "comprl.server.networking": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPFactory.startFactory": {"tf": 1}, "comprl.server.networking.COMPFactory.stopFactory": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 2}, "comprl.server.util": {"tf": 1}, "comprl.shared.commands": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1.4142135623730951}, "comprl.shared.types": {"tf": 1}}, "df": 35, "s": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}}, "df": 3}, "d": {"docs": {"comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1}}, "df": 2}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.util.ConfigProvider.get": {"tf": 1.7320508075688772}, "comprl.server.util.ConfigProvider.set": {"tf": 1.7320508075688772}}, "df": 2, "s": {"docs": {"comprl.server.util.ConfigProvider": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}}, "df": 5}}, "c": {"docs": {"comprl.server.managers.GameManager": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.auth": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1.4142135623730951}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1}}, "df": 23, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1}}, "df": 5}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}, "comprl.server.networking.COMPFactory.startFactory": {"tf": 1}, "comprl.shared.commands.Ready": {"tf": 1}}, "df": 7, "s": {"docs": {"comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.MatchmakingManager": {"tf": 1}, "comprl.shared.commands.StartGame": {"tf": 1}}, "df": 7}, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1.4142135623730951}}, "df": 5}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1.4142135623730951}}, "df": 4}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.data.interfaces.GameResult": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}}, "df": 4}}}}}}, "e": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"comprl.server.data.interfaces.GameEndState": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.shared.commands.Step": {"tf": 1}}, "df": 2}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"comprl.server.networking.COMPFactory.stopFactory": {"tf": 1}}, "df": 1, "s": {"docs": {"comprl.server.interfaces.IServer.on_stop": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.managers.GameManager": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1}}, "df": 3}}, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1.4142135623730951}}, "df": 5}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IServer": {"tf": 1}}, "df": 3}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 2}}, "df": 1}}}}, "q": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"3": {"docs": {"comprl.server.data.sql_backend.GameData": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData": {"tf": 1.4142135623730951}}, "df": 2}, "docs": {"comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.GameData": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}}, "df": 5, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.managers.PlayerManager.auth": {"tf": 1}}, "df": 1}}}}}}}}}}, "a": {"docs": {"comprl.client.agent.Agent.event": {"tf": 1}, "comprl.client.agent.Agent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1.7320508075688772}, "comprl.client.networking.ClientProtocol.step": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.server.data.interfaces.GameEndState": {"tf": 2}, "comprl.server.data.interfaces.GameResult": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.interfaces.IPlayer": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IGame.__init__": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IServer": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1.7320508075688772}, "comprl.server.managers.GameManager": {"tf": 1.7320508075688772}, "comprl.server.managers.GameManager.start_game": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPPlayer": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1}, "comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}}, "df": 65, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent": {"tf": 1}, "comprl.client.agent.Agent": {"tf": 1.4142135623730951}, "comprl.client.agent.Agent.on_disconnect": {"tf": 1}, "comprl.client.interfaces": {"tf": 1}, "comprl.client.interfaces.IAgent": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.is_ready": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.get_step": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 1.4142135623730951}, "comprl.shared.commands.Step": {"tf": 1}}, "df": 13}}}}, "n": {"docs": {"comprl.client.agent.Agent": {"tf": 1}, "comprl.client.agent.Agent.event": {"tf": 1.4142135623730951}, "comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.server.interfaces.IAction": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}}, "df": 16, "d": {"docs": {"comprl.client.agent.Agent": {"tf": 1}, "comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking": {"tf": 1}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.interfaces.GameResult": {"tf": 1}, "comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.managers": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.MatchmakingManager": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.shared.types": {"tf": 1}}, "df": 19}, "y": {"docs": {"comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1.4142135623730951}, "comprl.server.util.ConfigProvider.get": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1}}, "df": 5}}, "s": {"docs": {"comprl.client.agent.Agent.event": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPFactory": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1}}, "df": 4}}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.shared.commands.Auth": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.agent.Agent.event": {"tf": 1}, "comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1}}, "df": 80}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"comprl.shared.commands.Auth": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.auth": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1.4142135623730951}}, "df": 7}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}}, "df": 3}, "d": {"docs": {"comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}}, "df": 1, "r": {"docs": {"comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 3}}}}, "s": {"docs": {"comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}}, "df": 9}, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}}, "df": 7}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.interfaces.UserRole": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.UserRole": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.step": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IAction": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}}, "df": 6, "s": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.managers.GameManager": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}}, "df": 3}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"comprl.client.networking": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}}, "df": 5}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.UserRole": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.managers.GameManager": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.server.networking.COMPPlayer": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1}}, "df": 10}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}}, "df": 1}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}}, "df": 2}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.client.agent": {"tf": 1}, "comprl.client.agent.Agent": {"tf": 1}, "comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.interfaces.IAgent": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.networking.ClientProtocol": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}, "comprl.shared.commands": {"tf": 1}, "comprl.shared.types": {"tf": 1}}, "df": 11}, "r": {"1": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.7320508075688772}}, "df": 1}, "2": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 1}, "docs": {"comprl.client.agent": {"tf": 1}, "comprl.client.agent.Agent": {"tf": 1}, "comprl.client.interfaces.IAgent": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 2.8284271247461903}, "comprl.server.data.interfaces.UserRole": {"tf": 2}, "comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 3.872983346207417}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 2}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 2.23606797749979}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 2}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 2.23606797749979}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 2}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 2.23606797749979}}, "df": 15, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}}, "df": 3}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1.4142135623730951}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}}, "df": 3}}}}}, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.interfaces.IServer.on_update": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.util": {"tf": 1}}, "df": 1}}}}}}}, "b": {"docs": {"comprl.client.networking.ClientProtocol.auth": {"tf": 1}}, "df": 1, "y": {"docs": {"comprl.client.agent": {"tf": 1}, "comprl.client.agent.Agent": {"tf": 1}, "comprl.client.interfaces.IAgent": {"tf": 1}, "comprl.client.networking.ClientProtocol": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1}, "comprl.shared.types": {"tf": 1}}, "df": 7}, "e": {"docs": {"comprl.client.agent.Agent.event": {"tf": 1}, "comprl.client.interfaces.IAgent": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.managers.GameManager": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 24, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.managers.MatchmakingManager": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}}, "df": 2, "d": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 9}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}}, "df": 10, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.networking.ClientProtocol.end_game": {"tf": 1}}, "df": 1}}}}}, "x": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"comprl.client.agent": {"tf": 1}, "comprl.client.agent.Agent": {"tf": 1}, "comprl.client.interfaces.IAgent": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.force_end": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}}, "df": 9, "s": {"docs": {"comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}}, "df": 6}, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.interfaces.GameEndState": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.shared.commands.EndGame": {"tf": 1}}, "df": 4}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.step": {"tf": 1}}, "df": 1}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent": {"tf": 1}, "comprl.client.agent.Agent.event": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}}, "df": 3, "s": {"docs": {"comprl.server.networking.COMPServerProtocol": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 2}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 2}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1.7320508075688772}, "comprl.shared.commands.Error": {"tf": 1}}, "df": 10}}}}, "x": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}}, "df": 5}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}}, "df": 1, "d": {"docs": {"comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}}, "df": 8}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}}, "df": 2}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.networking.COMPServerProtocol": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.agent.Agent": {"tf": 1}, "comprl.client.networking.ClientProtocol": {"tf": 1}, "comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.UserRole": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.server.networking.COMPPlayer": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1}}, "df": 10}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}}, "df": 1}}}}}}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client.agent.Agent.event": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.client.agent.Agent": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.client.agent.Agent.event": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}}, "df": 3, "s": {"docs": {"comprl.client.agent.Agent.event": {"tf": 1}, "comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.interfaces.IAgent.auth": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.is_ready": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}, "comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1}}, "df": 52}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}}, "df": 8}, "d": {"docs": {"comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"comprl.client.interfaces.IAgent.is_ready": {"tf": 1.4142135623730951}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1.7320508075688772}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IPlayer.is_ready": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1.4142135623730951}, "comprl.shared.commands.Ready": {"tf": 1}}, "df": 9}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1.4142135623730951}}, "df": 4}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.shared.commands.Step": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.interfaces.IAgent.on_end_game": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.data.interfaces.GameResult": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1.7320508075688772}, "comprl.server.interfaces.IPlayer.authenticate": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.authenticate": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1.4142135623730951}}, "df": 14}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {"comprl.shared.commands.Auth": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.client.networking": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1}}, "df": 1}, "s": {"docs": {"comprl.server.networking.COMPPlayer.get_action": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}}, "df": 4}, "d": {"docs": {"comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}}, "df": 4}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}}, "df": 2}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}}, "df": 2, "s": {"docs": {"comprl.client.interfaces.IAgent.run": {"tf": 1}}, "df": 1}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.shared.commands.Auth": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"comprl.server.data.interfaces.UserRole": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.data.interfaces.UserRole": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"comprl.client.agent.Agent": {"tf": 1}, "comprl.client.interfaces.IAgent.run": {"tf": 1}, "comprl.client.networking.ClientProtocol": {"tf": 1}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 1}, "comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.UserRole": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPFactory": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1}}, "df": 18, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.data.interfaces.UserRole": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"comprl.server.data.interfaces.GameEndState": {"tf": 1.4142135623730951}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 2, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.agent.Agent.on_disconnect": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.on_message": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionMade": {"tf": 1}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.interfaces.IServer.on_stop": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_update": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1}}, "df": 32}, "r": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"comprl.client.interfaces.IAgent": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1, "s": {"docs": {"comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}}, "df": 2}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.networking.ClientProtocol.end_game": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.networking.COMPFactory": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.networking.COMPPlayer.authenticate": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}}, "df": 3, "r": {"docs": {"comprl.client.agent.Agent.event": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"comprl.client.agent.Agent": {"tf": 1}}, "df": 1}}, "d": {"docs": {"comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}}, "df": 1}, "s": {"docs": {"comprl.server.managers.MatchmakingManager": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.util.IDGenerator": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.server.networking.COMPServerProtocol": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1.4142135623730951}, "comprl.shared.commands.EndGame": {"tf": 1}}, "df": 8}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1.7320508075688772}, "comprl.client.networking.connect_agent": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1.4142135623730951}}, "df": 3}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client.agent.Agent.event": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 1.4142135623730951}, "comprl.client.networking.connect_agent": {"tf": 1.4142135623730951}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 2}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1.7320508075688772}, "comprl.server.networking.launch_server": {"tf": 1}}, "df": 6}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.interfaces.IServer": {"tf": 1}, "comprl.shared.commands": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}}, "df": 3}}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}}, "df": 2}}}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.interfaces.IServer.on_update": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.interfaces.IPlayer.disconnect": {"tf": 1}}, "df": 1, "s": {"docs": {"comprl.client.agent.Agent.on_disconnect": {"tf": 1}, "comprl.client.interfaces.IAgent.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}}, "df": 7}, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}}, "df": 4}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.networking.COMPPlayer.disconnect": {"tf": 1}}, "df": 3}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.auth": {"tf": 1}, "comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 6, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"comprl.client.networking.ClientProtocol.ready": {"tf": 1}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.managers.GameManager": {"tf": 1}}, "df": 6}}}}}}, "[": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.managers.GameManager": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"comprl.server.data.interfaces": {"tf": 1}, "comprl.server.data.sql_backend": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.GameData": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData": {"tf": 1.4142135623730951}}, "df": 4, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.GameData": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}}, "df": 7}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "w": {"docs": {"comprl.server.data.interfaces.GameEndState": {"tf": 1.4142135623730951}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameEndState": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1.7320508075688772}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1.7320508075688772}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces.GameEndState": {"tf": 1}, "comprl.server.data.interfaces.GameResult": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 2.449489742783178}, "comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 2.6457513110645907}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 2}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 2}, "comprl.server.interfaces.IGame.__init__": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.start_game": {"tf": 1.4142135623730951}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1.7320508075688772}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 2}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}, "comprl.server.networking": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}, "comprl.server.util.IDGenerator": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1.4142135623730951}, "comprl.server.util.ConfigProvider.set": {"tf": 1.4142135623730951}, "comprl.shared.commands.Auth": {"tf": 1.4142135623730951}}, "df": 54}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}}, "df": 3}}}, "s": {"docs": {"comprl.client.interfaces.IAgent.on_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connection_error": {"tf": 1}}, "df": 4}}}}}, "n": {"docs": {"comprl.client.agent.Agent.on_error": {"tf": 1}, "comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.remove": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}, "comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1}, "comprl.server.interfaces.IServer.on_update": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1}}, "df": 12, "l": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client.networking.ClientProtocol.end_game": {"tf": 1}}, "df": 1, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.interfaces.IAgent.is_ready": {"tf": 1}, "comprl.client.interfaces.IAgent.on_start_game": {"tf": 1}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 1}, "comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.PlayerManager.auth": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.networking.COMPPlayer.is_ready": {"tf": 1}}, "df": 9}}}}}}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}}, "df": 4}}}}}}}}}, "v": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}, "comprl.server.networking.COMPPlayer.get_action": {"tf": 1}}, "df": 5}, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 2}, "comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_error": {"tf": 1}, "comprl.client.networking.ClientProtocol.on_message": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1.4142135623730951}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}}, "df": 12, "s": {"docs": {"comprl.server.data.sql_backend": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}}, "df": 2}}}}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1.4142135623730951}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 2}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1.7320508075688772}}, "df": 3, "[": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.managers.GameManager.get": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "r": {"docs": {"comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client.networking.ClientProtocol.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.networking.ClientProtocol.connectionLost": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}}, "df": 4}, "s": {"docs": {"comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}}, "df": 1}}, "g": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "c": {"docs": {"comprl.server.interfaces": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}}, "df": 4, "[": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"comprl.client.interfaces.IAgent.get_step": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1}}, "df": 3}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}}, "df": 2}}}}}}}, "n": {"docs": {}, "df": 0, "p": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.sql_backend.SQLiteConnectionInfo": {"tf": 1}, "comprl.server.networking.launch_server": {"tf": 1}, "comprl.shared.commands.Auth": {"tf": 1}}, "df": 5}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.server.interfaces": {"tf": 1}}, "df": 1, "e": {"docs": {"comprl.client.agent.Agent.run": {"tf": 1}, "comprl.client.networking.ClientProtocol.__init__": {"tf": 1.4142135623730951}, "comprl.client.networking.connect_agent": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.PlayerManager.add": {"tf": 1}, "comprl.server.managers.PlayerManager.remove": {"tf": 1}, "comprl.server.managers.PlayerManager.get_user_id": {"tf": 1}, "comprl.server.managers.PlayerManager.get_player_by_id": {"tf": 1}, "comprl.server.managers.PlayerManager.broadcast_error": {"tf": 1}, "comprl.server.managers.PlayerManager.disconnect_all": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.networking.COMPServerProtocol": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.add_connection_made_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_lost_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_timeout_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.add_connection_error_callback": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionMade": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionLost": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_token": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.is_ready": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.get_step": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_error": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.send_message": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.disconnect": {"tf": 1}, "comprl.server.networking.COMPFactory.buildProtocol": {"tf": 1}}, "df": 30}}, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"comprl.server.data.interfaces.UserRole": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"comprl.server.data.sql_backend.UserData.get_user_id": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_error": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_info": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_error": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_info": {"tf": 1}}, "df": 10}}}, "y": {"docs": {"comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.EndGame": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"comprl.client.interfaces.IAgent.on_start_game": {"tf": 1.4142135623730951}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1}, "comprl.server.data.sql_backend.UserData.__init__": {"tf": 1}, "comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 2}}, "df": 8, "l": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"comprl.client.networking": {"tf": 1}, "comprl.server.interfaces": {"tf": 1}, "comprl.server.networking": {"tf": 1}, "comprl.server.networking.COMPPlayer": {"tf": 1}, "comprl.server.networking.COMPPlayer.__init__": {"tf": 1}}, "df": 5}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"comprl.shared.commands.Step": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1.4142135623730951}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}}, "df": 1}}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"comprl.client.interfaces.IAgent.on_start_game": {"tf": 1.7320508075688772}, "comprl.client.interfaces.IAgent.on_end_game": {"tf": 2}, "comprl.client.networking.ClientProtocol.start_game": {"tf": 2}, "comprl.client.networking.ClientProtocol.end_game": {"tf": 1.7320508075688772}, "comprl.server.data.interfaces": {"tf": 1}, "comprl.server.data.interfaces.GameEndState": {"tf": 2}, "comprl.server.data.interfaces.GameResult": {"tf": 1}, "comprl.server.data.interfaces.GameResult.__init__": {"tf": 2.23606797749979}, "comprl.server.data.sql_backend": {"tf": 1}, "comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.GameData.add": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.GameData.remove": {"tf": 1.7320508075688772}, "comprl.server.data.sql_backend.UserData": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_start": {"tf": 1}, "comprl.server.interfaces.IPlayer.notify_end": {"tf": 1}, "comprl.server.interfaces.IGame": {"tf": 2.23606797749979}, "comprl.server.interfaces.IGame.__init__": {"tf": 1}, "comprl.server.interfaces.IGame.add_finish_callback": {"tf": 1}, "comprl.server.interfaces.IGame.start": {"tf": 1.4142135623730951}, "comprl.server.interfaces.IGame.force_end": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1.4142135623730951}, "comprl.server.managers": {"tf": 1}, "comprl.server.managers.GameManager": {"tf": 2.23606797749979}, "comprl.server.managers.GameManager.start_game": {"tf": 1.7320508075688772}, "comprl.server.managers.GameManager.end_game": {"tf": 1.7320508075688772}, "comprl.server.managers.GameManager.get": {"tf": 2}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1.7320508075688772}, "comprl.server.managers.MatchmakingManager": {"tf": 1}, "comprl.server.managers.MatchmakingManager.__init__": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPServerProtocol.notify_end": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPPlayer": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1.7320508075688772}, "comprl.server.networking.COMPPlayer.notify_end": {"tf": 1.7320508075688772}, "comprl.shared.commands.Ready": {"tf": 1}, "comprl.shared.commands.StartGame": {"tf": 1}, "comprl.shared.commands.EndGame": {"tf": 1}}, "df": 37, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.interfaces.GameResult.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.data.sql_backend.GameData.add": {"tf": 1}, "comprl.server.interfaces.IGame.get_result": {"tf": 1}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.interfaces.IGame": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.GameManager.end_game": {"tf": 1}, "comprl.server.managers.GameManager.get": {"tf": 1}, "comprl.server.managers.GameManager.get_stored_actions": {"tf": 1}, "comprl.server.networking.COMPServerProtocol.notify_start": {"tf": 1}, "comprl.server.networking.COMPPlayer.notify_start": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}}, "df": 8}}, "s": {"docs": {"comprl.server.managers.GameManager": {"tf": 1}, "comprl.server.managers.GameManager.force_game_end": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}}, "df": 3}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"comprl.server.managers.MatchmakingManager.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.networking.ClientProtocol.step": {"tf": 1}, "comprl.server.managers.GameManager.start_game": {"tf": 1}, "comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}}, "df": 3}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"comprl.server.managers.GameManager.get_stored_actions": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"comprl.server.interfaces.IPlayer.get_action": {"tf": 1}, "comprl.server.interfaces.IServer.on_start": {"tf": 1}, "comprl.server.interfaces.IServer.on_stop": {"tf": 1}, "comprl.server.interfaces.IServer.on_connect": {"tf": 1}, "comprl.server.interfaces.IServer.on_disconnect": {"tf": 1}, "comprl.server.interfaces.IServer.on_timeout": {"tf": 1}, "comprl.server.interfaces.IServer.on_remote_error": {"tf": 1}, "comprl.server.interfaces.IServer.on_update": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1}}, "df": 9}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.util.IDGenerator.generate_player_id": {"tf": 1}, "comprl.server.util.IDGenerator.generate_game_id": {"tf": 1}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {"comprl.shared.commands.Error": {"tf": 1}, "comprl.shared.commands.Message": {"tf": 1}}, "df": 2}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"comprl.client.networking.ClientProtocol.auth": {"tf": 1.4142135623730951}, "comprl.shared.commands.Auth": {"tf": 1.4142135623730951}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"comprl.server.data.sql_backend.UserData.is_verified": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.data.sql_backend.UserData.add": {"tf": 1.4142135623730951}, "comprl.server.data.sql_backend.UserData.set_matchmaking_parameters": {"tf": 1.4142135623730951}, "comprl.server.managers.PlayerManager.update_matchmaking_parameters": {"tf": 1.4142135623730951}, "comprl.server.networking.COMPServerProtocol.connectionTimeout": {"tf": 1}, "comprl.server.util.ConfigProvider.get": {"tf": 1}, "comprl.server.util.ConfigProvider.set": {"tf": 1.4142135623730951}}, "df": 6, "s": {"docs": {"comprl.server.data.sql_backend.UserData.get_matchmaking_parameters": {"tf": 1}, "comprl.server.managers.PlayerManager.get_matchmaking_parameters": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.networking.COMPServerProtocol": {"tf": 1}}, "df": 1}}}}}}}, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"comprl.client.networking.ClientProtocol.ready": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "y": {"docs": {"comprl.server.util.ConfigProvider.get": {"tf": 1.4142135623730951}, "comprl.server.util.ConfigProvider.set": {"tf": 1.4142135623730951}}, "df": 2}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"comprl.server.data.sql_backend.GameData": {"tf": 1}, "comprl.server.data.sql_backend.UserData": {"tf": 1}}, "df": 2}}}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"comprl.server.managers.MatchmakingManager.try_match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.match": {"tf": 1}, "comprl.server.managers.MatchmakingManager.remove": {"tf": 1}}, "df": 3}}}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; + + // mirrored in build-search-index.js (part 1) + // Also split on html tags. this is a cheap heuristic, but good enough. + elasticlunr.tokenizer.setSeperator(/[\s\-.;&_'"=,()]+|<[^>]*>/); + + let searchIndex; + if (docs._isPrebuiltIndex) { + console.info("using precompiled search index"); + searchIndex = elasticlunr.Index.load(docs); + } else { + console.time("building search index"); + // mirrored in build-search-index.js (part 2) + searchIndex = elasticlunr(function () { + this.pipeline.remove(elasticlunr.stemmer); + this.pipeline.remove(elasticlunr.stopWordFilter); + this.addField("qualname"); + this.addField("fullname"); + this.addField("annotation"); + this.addField("default_value"); + this.addField("signature"); + this.addField("bases"); + this.addField("doc"); + this.setRef("fullname"); + }); + for (let doc of docs) { + searchIndex.addDoc(doc); + } + console.timeEnd("building search index"); + } + + return (term) => searchIndex.search(term, { + fields: { + qualname: {boost: 4}, + fullname: {boost: 2}, + annotation: {boost: 2}, + default_value: {boost: 2}, + signature: {boost: 2}, + bases: {boost: 2}, + doc: {boost: 1}, + }, + expand: true + }); +})(); \ No newline at end of file