diff --git a/host/basic_host.py b/host/basic_host.py index e69de29..7f5fdef 100644 --- a/host/basic_host.py +++ b/host/basic_host.py @@ -0,0 +1,4 @@ +from host_interface import Host + +class BasicHost(Host): + pass \ No newline at end of file diff --git a/host/host_interface.py b/host/host_interface.py new file mode 100644 index 0000000..367128c --- /dev/null +++ b/host/host_interface.py @@ -0,0 +1,49 @@ +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 instance + :return: true if successful + """ + pass + + @abstractmethod + def new_stream(self, context, peer_id, protocol_ids): + """ + :param context: a context instance + :param peer_id: peer_id that host is connecting + :param proto_ids: list of protocol ids that stream runs on + :return: true if successful + """ + pass \ No newline at end of file diff --git a/host/interface.py b/host/interface.py deleted file mode 100644 index e69de29..0000000 diff --git a/network/network_interface.py b/network/network_interface.py new file mode 100644 index 0000000..fb6c7a4 --- /dev/null +++ b/network/network_interface.py @@ -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 diff --git a/network/stream_interface.py b/network/stream_interface.py new file mode 100644 index 0000000..dc0a519 --- /dev/null +++ b/network/stream_interface.py @@ -0,0 +1,38 @@ +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 diff --git a/network/swarm.py b/network/swarm.py new file mode 100644 index 0000000..4b1c81a --- /dev/null +++ b/network/swarm.py @@ -0,0 +1,4 @@ +from interface import Network + +class Swarm(Network): + pass \ No newline at end of file