def test_json_support(self): '''It should convert to json and back''' kvp_info = KVPExchangeInfo(KeyBytes(), KeyBytes(), 1234, 123456789) self.assertEqual(kvp_info, KVPExchangeInfo.from_json_loadable(kvp_info.to_json_dumpable()))
def _received_find_value_rpc(self, data_packet): '''Find value rpc callback''' _logger.debug('Find value %s←%s', self.address, data_packet.address) key = KeyBytes.new_silent(data_packet.dict_obj.get(JSONKeys.KEY, 'fake')) index = KeyBytes.new_silent(data_packet.dict_obj.get(JSONKeys.INDEX)) if not key: _logger.debug('Find value %s←%s bad key', self.address, data_packet.address) return _logger.debug('Find value %s←%s k=%s i=%s', self.address, data_packet.address, key, index) kvpid = KVPID(key, index) if index and kvpid in self._kvp_table: kvp_record = self._kvp_table.record(kvpid) d = self._template_dict() d[JSONKeys.VALUES] = KVPExchangeInfoList([ KVPExchangeInfo.from_kvp_record(kvp_record) ]).to_json_dumpable() self._network.send_answer_reply(data_packet, d) elif self._kvp_table.indices(key): kvp_record_list = self._kvp_table.records_by_key(key) d = self._template_dict() d[JSONKeys.VALUES] = KVPExchangeInfoList.from_kvp_record_list( kvp_record_list).to_json_dumpable() self._network.send_answer_reply(data_packet, d) else: self._reply_find_node(data_packet, key)