mirror of https://github.com/libp2p/py-libp2p.git
Robert Zajac
6 years ago
committed by
GitHub
6 changed files with 136 additions and 0 deletions
@ -0,0 +1,9 @@ |
|||
from host_interface import Host |
|||
|
|||
# Upon host creation, host takes in options, |
|||
# including the list of addresses on which to listen. |
|||
# Host then parses these options and delegates to its Network instance, |
|||
# telling it to listen on the given listen addresses. |
|||
|
|||
class BasicHost(Host): |
|||
pass |
@ -0,0 +1,51 @@ |
|||
from abc import ABC |
|||
|
|||
class Host(ABC): |
|||
|
|||
# default options constructor |
|||
def __init__(self, context, network): |
|||
self.context = context |
|||
self.network = network |
|||
|
|||
@abstractmethod |
|||
def id(self): |
|||
""" |
|||
:return: peer_id of host |
|||
""" |
|||
pass |
|||
|
|||
@abstractmethod |
|||
def network(self): |
|||
""" |
|||
:return: network instance of host |
|||
""" |
|||
pass |
|||
|
|||
@abstractmethod |
|||
def mux(self): |
|||
""" |
|||
:return: mux instance of host |
|||
""" |
|||
pass |
|||
|
|||
@abstractmethod |
|||
def set_stream_handler(self, protocol_id, stream_handler): |
|||
""" |
|||
set stream handler for host |
|||
:param protocol_id: protocol id used on stream |
|||
:param stream_handler: a stream handler function |
|||
:return: true if successful |
|||
""" |
|||
pass |
|||
|
|||
# protocol_id can be a list of protocol_ids |
|||
# stream will decide which protocol_id to run on |
|||
@abstractmethod |
|||
def new_stream(self, context, peer_id, protocol_id): |
|||
""" |
|||
:param context: a context instance |
|||
:param peer_id: peer_id that host is connecting |
|||
:param proto_id: protocol id that stream runs on |
|||
:return: true if successful |
|||
""" |
|||
pass |
@ -0,0 +1,25 @@ |
|||
from abc import ABC |
|||
|
|||
class Network(ABC): |
|||
|
|||
def __init__(self, context, my_peer_id, peer_store): |
|||
self.context = context |
|||
self.my_peer_id = my_peer_id |
|||
self.peer_store = peer_store |
|||
|
|||
@abstractmethod |
|||
def set_stream_handler(stream_handler): |
|||
""" |
|||
:param stream_handler: a stream handler instance |
|||
:return: true if successful |
|||
""" |
|||
pass |
|||
|
|||
@abstractmethod |
|||
def new_stream(context, peer_id): |
|||
""" |
|||
:param context: context instance |
|||
:param peer_id: peer_id of destination |
|||
:return: stream instance |
|||
""" |
|||
pass |
@ -0,0 +1,47 @@ |
|||
from abc import ABC |
|||
|
|||
class Stream(ABC): |
|||
|
|||
def __init__(self, context, peer_id): |
|||
self.context = context |
|||
self.peer_id = peer_id |
|||
|
|||
@abstractmethod |
|||
def protocol(): |
|||
""" |
|||
:return: protocol id that stream runs on |
|||
""" |
|||
pass |
|||
|
|||
@abstractmethod |
|||
def set_protocol(protocol_id): |
|||
""" |
|||
:param protocol_id: protocol id that stream runs on |
|||
:return: true if successful |
|||
""" |
|||
pass |
|||
|
|||
@abstractmethod |
|||
def read(): |
|||
""" |
|||
read from stream |
|||
:return: bytes of input |
|||
""" |
|||
pass |
|||
|
|||
@abstractmethod |
|||
def write(bytes): |
|||
""" |
|||
write to stream |
|||
:return: number of bytes written |
|||
""" |
|||
pass |
|||
|
|||
@abstractmethod |
|||
def close(): |
|||
""" |
|||
close stream |
|||
:return: true if successful |
|||
""" |
|||
pass |
|||
|
@ -0,0 +1,4 @@ |
|||
from network_interface import Network |
|||
|
|||
class Swarm(Network): |
|||
pass |
Loading…
Reference in new issue