From 14d9150bbbad35be4e08d121ef84c02030571c42 Mon Sep 17 00:00:00 2001 From: Dmitriy Ryajov Date: Thu, 5 Sep 2019 18:16:21 -0600 Subject: [PATCH] moving modules to apropriate directories --- libp2p/{ => protocols}/identify.nim | 14 ++++++++---- libp2p/protocols/plaintext.nim | 29 ++++++++++++++++++++++++ libp2p/{ => protocols}/protocol.nim | 5 ++-- libp2p/{ => transports}/tcptransport.nim | 6 ++--- libp2p/{ => transports}/transport.nim | 3 ++- 5 files changed, 46 insertions(+), 11 deletions(-) rename libp2p/{ => protocols}/identify.nim (91%) create mode 100644 libp2p/protocols/plaintext.nim rename libp2p/{ => protocols}/protocol.nim (91%) rename libp2p/{ => transports}/tcptransport.nim (94%) rename libp2p/{ => transports}/transport.nim (96%) diff --git a/libp2p/identify.nim b/libp2p/protocols/identify.nim similarity index 91% rename from libp2p/identify.nim rename to libp2p/protocols/identify.nim index 3413323..db41774 100644 --- a/libp2p/identify.nim +++ b/libp2p/protocols/identify.nim @@ -9,10 +9,10 @@ import options import chronos -import protobuf/minprotobuf, peerinfo, - protocol as proto, connection, - peer, crypto/crypto, multiaddress, - crypto/crypto +import ../protobuf/minprotobuf, ../peerinfo, + protocol as proto, ../connection, + ../peer, ../crypto/crypto, + ../multiaddress const IdentifyCodec* = "/ipfs/id/1.0.0" const IdentifyPushCodec* = "/ipfs/id/push/1.0.0" @@ -23,6 +23,7 @@ const AgentVersion* = "nim-libp2p/0.0.1" type IdentityNoMatchError* = object of CatchableError + IdentityInvalidMsgError* = object of CatchableError IdentifyInfo* = object pubKey*: PublicKey @@ -90,6 +91,7 @@ method init*(p: Identify) = await conn.writeLp(pb.buffer) p.handler = handle + p.codec = IdentifyCodec proc identify*(p: Identify, conn: Connection, @@ -97,7 +99,9 @@ proc identify*(p: Identify, Future[IdentifyInfo] {.async.} = var message = await conn.readLp() if len(message) == 0: - raise newException(CatchableError, "Incorrect or empty message received!") + raise newException(IdentityInvalidMsgError, + "Invalid or empty message received!") + result = decodeMsg(message) if remotePeerInfo.isSome and remotePeerInfo.get().peerId.publicKey != result.pubKey: diff --git a/libp2p/protocols/plaintext.nim b/libp2p/protocols/plaintext.nim new file mode 100644 index 0000000..1704ccf --- /dev/null +++ b/libp2p/protocols/plaintext.nim @@ -0,0 +1,29 @@ +## Nim-LibP2P +## Copyright (c) 2018 Status Research & Development GmbH +## Licensed under either of +## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE)) +## * MIT license ([LICENSE-MIT](LICENSE-MIT)) +## at your option. +## This file may not be copied, modified, or distributed except according to +## those terms. + +import chronos +import protocol +import ../connection + +const PlainTextCodec* = "/plaintext/1.0.0" + +type + PlainText* = ref object of LPProtocol + +method init(p: PlainText) {.gcsafe.} = + proc handle(conn: Connection, proto: string) {.async, gcsafe.} = + let msg = await conn.readLp() + await conn.writeLp(msg) + + p.codec = PlainTextCodec + p.handler = handle + +proc newPlainText*(): PlainText = + new result + result.init() diff --git a/libp2p/protocol.nim b/libp2p/protocols/protocol.nim similarity index 91% rename from libp2p/protocol.nim rename to libp2p/protocols/protocol.nim index a4c8c05..c1129a5 100644 --- a/libp2p/protocol.nim +++ b/libp2p/protocols/protocol.nim @@ -8,8 +8,9 @@ ## those terms. import chronos -import connection, transport, - peerinfo, multiaddress +import ../connection, + ../peerinfo, + ../multiaddress type LPProtoHandler* = proc (conn: Connection, diff --git a/libp2p/tcptransport.nim b/libp2p/transports/tcptransport.nim similarity index 94% rename from libp2p/tcptransport.nim rename to libp2p/transports/tcptransport.nim index a523bad..e4e088b 100644 --- a/libp2p/tcptransport.nim +++ b/libp2p/transports/tcptransport.nim @@ -8,9 +8,9 @@ ## those terms. import chronos -import transport, wire, connection, - multiaddress, connection, - multicodec, stream/chronosstream +import transport, ../wire, ../connection, + ../multiaddress, ../connection, + ../multicodec, ../stream/chronosstream type TcpTransport* = ref object of Transport server*: StreamServer diff --git a/libp2p/transport.nim b/libp2p/transports/transport.nim similarity index 96% rename from libp2p/transport.nim rename to libp2p/transports/transport.nim index 954fe45..9088fe9 100644 --- a/libp2p/transport.nim +++ b/libp2p/transports/transport.nim @@ -9,7 +9,8 @@ import sequtils import chronos -import peerinfo, connection, multiaddress, multicodec +import ../peerinfo, ../connection, + ../multiaddress, ../multicodec type ConnHandler* = proc (conn: Connection): Future[void] {.gcsafe.}