Source code for aergo.herapy.obj.peer

# -*- coding: utf-8 -*-

import json

from google.protobuf.json_format import MessageToJson

from .block import Block
from ..status.peer_status import PeerStatus
from ..utils.encoding import encode_b58
from ..utils.converter import convert_ip_bytes_to_str


[docs]class Peer: def __init__(self): self.__info = None self.__address = None self.__port = None self.__id = None self.__state = None @property def info(self): return MessageToJson(self.__info) @info.setter def info(self, v): self.__info = v self.__address = convert_ip_bytes_to_str(v.address.address) self.__port = v.address.port self.__id = v.address.peerID self.__bestblock = Block( hash_value=v.bestblock.blockHash, height=v.bestblock.blockNo) self.__state = PeerStatus(v.state) @property def address(self): return self.__address @property def port(self): return self.__port @property def id(self): return self.__id @property def state(self): return self.__state @state.setter def state(self, s): self.__state = s
[docs] def json(self): return { "Address": { "Address": str(self.__address), "Port": self.__port, "PeerID": encode_b58(self.__id), }, "BestBlock": { "BlockNo": self.__bestblock.block_no, "BlockHash": str(self.__bestblock.hash), }, "State": self.__state.name }
def __str__(self): return json.dumps(self.json(), indent=2)