11import json
22import threading
33import time
4+ import uuid
45from DataPackager import get_message , create_payload , send_message
56from RpiClusterExceptions import DisconnectionException
67from MachineInfo import get_base_machine_info
910
1011class RpiClusterClient (threading .Thread ):
1112
12- def __init__ (self , clientsocket , address ):
13+ def __init__ (self , master , clientsocket , address ):
1314 threading .Thread .__init__ (self )
15+ self .uuid = uuid .uuid4 ().hex
16+ self .master = master
1417 self .clientsocket = clientsocket
1518 self .address = address
19+ self .node_specifications = None
1620
1721 def run (self ):
1822 try :
@@ -22,13 +26,20 @@ def run(self):
2226 if message ['type' ] == 'message' :
2327 logger .info ("Received message: " + message ['payload' ])
2428 elif message ['type' ] == 'computer_details' :
25- logger .info ("Computer specifications: " + json .dumps (message ['payload' ]))
29+ self .node_specifications = message ['payload' ]
30+ logger .info ("Received Computer specifications: " + json .dumps (self .node_specifications ))
2631 elif message ['type' ] == 'info' :
2732 logger .info ("Slave wants to know my info about " + message ['payload' ])
2833 if message ['payload' ] == 'computer_details' :
2934 send_message (self .clientsocket , create_payload (get_base_machine_info (), "master_info" ))
35+ elif message ['payload' ] == 'uuid' :
36+ send_message (self .clientsocket , create_payload (self .uuid , "uuid" ))
37+ elif message ['payload' ] == 'slave_details' :
38+ slave_details = self .master .get_slave_details ()
39+ send_message (self .clientsocket , create_payload (slave_details , "slave_details" ))
3040 else :
3141 send_message (self .clientsocket , create_payload ("unknown" , "bad_message" ))
3242 except DisconnectionException as e :
3343 logger .info ("Got disconnection exception with message: " + e .message )
3444 logger .info ("Shutting down slave connection handler" )
45+ self .master .remove_client (self )
0 commit comments