mirror of https://github.com/libp2p/py-libp2p.git
Robert Zajac
6 years ago
committed by
GitHub
21 changed files with 85 additions and 77 deletions
@ -1,14 +0,0 @@ |
|||||
import asyncio |
|
||||
from .raw_connection_interface import IRawConnection |
|
||||
|
|
||||
class RawConnection(IRawConnection): |
|
||||
|
|
||||
def __init__(self, ip, port): |
|
||||
self.conn_ip = ip |
|
||||
self.conn_port = port |
|
||||
self.reader = None |
|
||||
self.writer = None |
|
||||
|
|
||||
async def open_connection(self): |
|
||||
self.reader, self.writer = \ |
|
||||
await asyncio.open_connection(self.conn_ip, self.conn_port) |
|
@ -1,8 +0,0 @@ |
|||||
from abc import ABC, abstractmethod |
|
||||
|
|
||||
class IRawConnection(ABC): |
|
||||
|
|
||||
@abstractmethod |
|
||||
async def open_connection(self): |
|
||||
pass |
|
||||
|
|
@ -0,0 +1,35 @@ |
|||||
|
from .config import Config |
||||
|
from ..peer.peerstore import PeerStore |
||||
|
from ..network.swarm import Swarm |
||||
|
from ..host.basic_host import BasicHost |
||||
|
from ..transport.upgrader import TransportUpgrader |
||||
|
|
||||
|
class Libp2p(object): |
||||
|
|
||||
|
def __init__(self, idOpt, \ |
||||
|
transportOpt = ["/ip4/0.0.0.0/tcp/0"], \ |
||||
|
muxerOpt = ["mplex/6.7.0"], \ |
||||
|
secOpt = ["secio"], \ |
||||
|
peerstore = PeerStore()): |
||||
|
|
||||
|
if idOpt: |
||||
|
self.idOpt = idOpt |
||||
|
else: |
||||
|
# TODO generate RSA public key pair |
||||
|
|
||||
|
self.transportOpt = transportOpt |
||||
|
self.muxerOpt = muxerOpt |
||||
|
self.secOpt = secOpt |
||||
|
self.peerstore = peerstore |
||||
|
|
||||
|
def new_node(self): |
||||
|
|
||||
|
swarm = Swarm(self.id, self.peerstore) |
||||
|
host = BasicHost(swarm) |
||||
|
upgrader = TransportUpgrader(self.secOpt, self.transportOpt) |
||||
|
|
||||
|
# TODO transport upgrade |
||||
|
|
||||
|
# TODO listen on addrs |
||||
|
|
||||
|
# TODO swarm add transports |
@ -0,0 +1,16 @@ |
|||||
|
import asyncio |
||||
|
from .raw_connection_interface import IRawConnection |
||||
|
|
||||
|
class RawConnection(IRawConnection): |
||||
|
|
||||
|
def __init__(self, ip, port): |
||||
|
self.conn_ip = ip |
||||
|
self.conn_port = port |
||||
|
self.reader, self.writer = self.open_connection() |
||||
|
|
||||
|
async def open_connection(self): |
||||
|
""" |
||||
|
opens a connection on self.ip and self.port |
||||
|
:return: a raw connection |
||||
|
""" |
||||
|
return await asyncio.open_connection(self.conn_ip, self.conn_port) |
@ -0,0 +1,15 @@ |
|||||
|
from abc import ABC, abstractmethod |
||||
|
|
||||
|
class IRawConnection(ABC): |
||||
|
""" |
||||
|
A Raw Connection provides a Reader and a Writer |
||||
|
open_connection should return such a connection |
||||
|
""" |
||||
|
|
||||
|
@abstractmethod |
||||
|
async def open_connection(self): |
||||
|
""" |
||||
|
opens a connection on ip and port |
||||
|
:return: a raw connection |
||||
|
""" |
||||
|
pass |
@ -1,54 +0,0 @@ |
|||||
import asyncio |
|
||||
from .transport_interface import ITransport |
|
||||
from .listener_interface import IListener |
|
||||
|
|
||||
class TCP(ITransport): |
|
||||
|
|
||||
def __init__(self): |
|
||||
self.multiaddr = None |
|
||||
|
|
||||
class Listener(IListener): |
|
||||
|
|
||||
def listen(self, multiaddr): |
|
||||
""" |
|
||||
put listener in listening mode and wait for incoming connections |
|
||||
:param multiaddr: multiaddr of peer |
|
||||
:return: return True if successful |
|
||||
""" |
|
||||
pass |
|
||||
|
|
||||
def get_addrs(self): |
|
||||
""" |
|
||||
retrieve list of addresses the listener is listening on |
|
||||
:return: return list of addrs |
|
||||
""" |
|
||||
pass |
|
||||
|
|
||||
def close(self, options=None): |
|
||||
""" |
|
||||
close the listener such that no more connections |
|
||||
can be open on this transport instance |
|
||||
:param options: optional object potential with timeout |
|
||||
a timeout value in ms that fires and destroy all connections |
|
||||
:return: return True if successful |
|
||||
""" |
|
||||
pass |
|
||||
|
|
||||
def dial(self, multiaddr, options=None): |
|
||||
""" |
|
||||
dial a transport to peer listening on multiaddr |
|
||||
:param multiaddr: multiaddr of peer |
|
||||
:param options: optional object |
|
||||
:return: list of multiaddrs |
|
||||
""" |
|
||||
pass |
|
||||
|
|
||||
def create_listener(self, handler_function, options=None): |
|
||||
""" |
|
||||
create listener on transport |
|
||||
:param options: optional object with properties the listener must have |
|
||||
:param handler_function: a function called when a new conntion is received |
|
||||
that takes a connection as argument which implements interface-connection |
|
||||
:return: a listener object that implements listener_interface.py |
|
||||
""" |
|
||||
pass |
|
@ -0,0 +1,18 @@ |
|||||
|
class TransportUpgrader(object): |
||||
|
|
||||
|
def __init__(self, secOpt, muxerOpt): |
||||
|
self.sec = secOpt |
||||
|
self.muxer = muxerOpt |
||||
|
|
||||
|
def upgrade_listener(self, transport, listeners): |
||||
|
""" |
||||
|
upgrade multiaddr listeners to libp2p-transport listeners |
||||
|
|
||||
|
""" |
||||
|
pass |
||||
|
|
||||
|
def upgrade_security(self): |
||||
|
pass |
||||
|
|
||||
|
def upgrade_muxer(self): |
||||
|
pass |
Loading…
Reference in new issue