예제 #1
0
    def build_obj(cls, sk, url, name='Masternode') -> tuple:
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)

        witness = NodeFactory._build_node(loop=loop, signing_key=sk, ip=url, node_cls=Witness, name=name)
        witness.start(start_loop=False)

        tasks = witness.tasks + [witness.composer.interface._recv_messages()]

        return witness, loop, tasks
예제 #2
0
    def build_obj(cls, sk, name='Masternode') -> tuple:
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)

        ip = os.getenv('HOST_IP', '127.0.0.1')

        log = get_logger("MPMasternode Builder")
        log.info("Creating Masternode with IP {}, signing key {}..., and name {}".format(ip, sk[:8], name))

        mn = NodeFactory._build_node(loop=loop, signing_key=sk, ip=ip, node_cls=Masternode, name=name)
        mn.start(start_loop=False)

        tasks = mn.tasks + [mn.composer.interface._recv_messages()]

        return mn, loop, tasks
예제 #3
0
def _build_node(signing_key, name='', node_cls=None) -> tuple:
    assert node_cls and name, "This is an abstract class. Subclasses must pass in node_cls and name."
    assert node_cls in (
        Witness, Masternode, Delegate
    ), "node_cls must be Witness/Masternode/Delegate, not {}".format(node_cls)

    loop = asyncio.get_event_loop()
    asyncio.set_event_loop(loop)

    with DB(should_reset=True) as db:
        pass

    ip = os.getenv('HOST_IP', '127.0.0.1')

    node = NodeFactory._build_node(loop=loop,
                                   signing_key=signing_key,
                                   ip=ip,
                                   node_cls=node_cls,
                                   name=name)
    node.start(start_loop=False)

    tasks = node.tasks + [node.composer.interface._recv_messages()]

    return node, loop, tasks