1111
1212logging .basicConfig (level = logging .DEBUG )
1313
14- manager = Manager ()
15- shared_lock = Lock () # Create a Lock for synchronization
16- shared_number_of_connections = manager .Value ('i' , 0 )
1714
1815class GrpcAgent :
1916 def __init__ (self , agent_type , uniform_number ) -> None :
@@ -77,8 +74,10 @@ def GetTrainerActions(self, state: pb2.State):
7774 return pb2 .TrainerActions (actions = actions )
7875
7976class GameHandler (pb2_grpc .GameServicer ):
80- def __init__ (self ) :
77+ def __init__ (self , shared_lock , shared_number_of_connections ) -> None :
8178 self .agents : dict [int , GrpcAgent ] = {}
79+ self .shared_lock = shared_lock
80+ self .shared_number_of_connections = shared_number_of_connections
8281
8382 def GetPlayerActions (self , state : pb2 .State , context ):
8483 logging .debug (f"GetPlayerActions unum { state .register_response .uniform_number } at { state .world_model .cycle } " )
@@ -124,14 +123,14 @@ def Register(self, register_request: pb2.RegisterRequest, context):
124123 logging .debug (f"received register request from team_name: { register_request .team_name } "
125124 f"unum: { register_request .uniform_number } "
126125 f"agent_type: { register_request .agent_type } " )
127- with shared_lock :
128- shared_number_of_connections .value += 1
129- logging .debug (f"Number of connections { shared_number_of_connections .value } " )
126+ with self . shared_lock :
127+ self . shared_number_of_connections .value += 1
128+ logging .debug (f"Number of connections { self . shared_number_of_connections .value } " )
130129 team_name = register_request .team_name
131130 uniform_number = register_request .uniform_number
132131 agent_type = register_request .agent_type
133- self .agents [shared_number_of_connections .value ] = GrpcAgent (agent_type , uniform_number )
134- res = pb2 .RegisterResponse (client_id = shared_number_of_connections .value ,
132+ self .agents [self . shared_number_of_connections .value ] = GrpcAgent (agent_type , uniform_number )
133+ res = pb2 .RegisterResponse (client_id = self . shared_number_of_connections .value ,
135134 team_name = team_name ,
136135 uniform_number = uniform_number ,
137136 agent_type = agent_type )
@@ -145,9 +144,9 @@ def SendByeCommand(self, register_response: pb2.RegisterResponse, context):
145144 res = pb2 .Empty ()
146145 return res
147146
148- def serve (port ):
147+ def serve (port , shared_lock , shared_number_of_connections ):
149148 server = grpc .server (futures .ThreadPoolExecutor (max_workers = 22 ))
150- game_service = GameHandler ()
149+ game_service = GameHandler (shared_lock , shared_number_of_connections )
151150 pb2_grpc .add_GameServicer_to_server (game_service , server )
152151 server .add_insecure_port (f'[::]:{ port } ' )
153152 server .start ()
@@ -156,8 +155,15 @@ def serve(port):
156155 server .wait_for_termination ()
157156
158157
159- if __name__ == '__main__' :
158+ def main ():
159+ manager = Manager ()
160+ shared_lock = Lock () # Create a Lock for synchronization
161+ shared_number_of_connections = manager .Value ('i' , 0 )
160162 parser = argparse .ArgumentParser (description = 'Run play maker server' )
161163 parser .add_argument ('-p' , '--rpc-port' , required = False , help = 'The port of the server' , default = 50051 )
162164 args = parser .parse_args ()
163- serve (args .rpc_port )
165+ serve (args .rpc_port , shared_lock , shared_number_of_connections )
166+
167+ if __name__ == '__main__' :
168+ main ()
169+
0 commit comments