def request(self, json_payload, newpacket, info):
     from logs import lg
     from p2p import p2p_service
     # words = newpacket.Payload.split(' ')
     try:
         # mode = words[1][:10]
         mode = json_payload['action']
     except:
         lg.exc()
         return p2p_service.SendFail(newpacket, "invalid json payload")
     if mode != 'join' and mode != 'write' and mode != 'read':
         lg.out(
             8,
             "service_accountant.request DENIED, wrong mode provided : %s" %
             mode)
         return p2p_service.SendFail(newpacket, "invalid request")
     from coins import accountant_node
     if not accountant_node.A():
         lg.out(
             8,
             "service_accountant.request DENIED, accountant_node() state machine not exist"
         )
         return p2p_service.SendFail(newpacket,
                                     "accountant_node service not started")
     # if accountant_node.A().state not in ['ACCOUNTANTS?', "READY", "VALID_COIN?", "WRITE_COIN!", ]:
     #     lg.out(8, "service_accountant.request DENIED, accountant_node() state is : %s" % accountant_node.A().state)
     # return p2p_service.SendFail(request, "accountant_node service
     # currently unavailable")
     if mode == 'join':
         accountant_node.A('accountant-connected', newpacket.OwnerID)
         #             if accountant_node.A().state == 'OFFLINE':
         #                 accountant_node.A('start')
         return p2p_service.SendAck(newpacket, 'accepted')
     return p2p_service.SendFail(newpacket, 'bad request')
 def stop(self):
     from coins import coins_db
     from coins import accountant_node
     accountant_node.A().removeStateChangedCallback(
         self._on_accountant_node_switched)
     accountant_node.A('stop')
     accountant_node.A('shutdown')
     coins_db.shutdown()
     return True
 def start(self):
     from coins import coins_db
     from coins import accountant_node
     from coins import accountants_finder
     coins_db.init()
     accountants_finder.A('init')
     accountant_node.A('init')
     accountant_node.A('start')
     accountant_node.A().addStateChangedCallback(
         self._on_accountant_node_switched)
     return True
 def health_check(self):
     from coins import accountant_node
     return accountant_node.A().state in [
         'READY',
         'READ_COINS',
         'VALID_COIN?',
         'WRITE_COIN!',
     ]