Last active
May 13, 2019 15:30
-
-
Save vasco-santos/bc89fe6e0acf8186f1137576135fbd49 to your computer and use it in GitHub Desktop.
js-libp2p connection
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const STATUS = { | |
OPEN: 0, | |
CLOSED: 1, | |
CLOSING: 2, | |
} | |
const ROLE = { | |
INITIATOR: 0, | |
RESPONDER: 1 | |
} | |
class Connection { | |
constructor (peerInfo, remoteMa, isInitiator) { | |
/** | |
* Connection identifier | |
*/ | |
this.id = (~~(Math.random() * 1e9)).toString(36) + Date.now() | |
/** | |
* Remote peer info | |
*/ | |
this.peerInfo = peerInfo | |
/** | |
* Status of the connection | |
*/ | |
this.status = STATUS.OPEN | |
/** | |
* Endpoints multiaddrs | |
*/ | |
this.endpoints = { | |
local: undefined, | |
remote: remoteMa | |
} | |
/** | |
* Connection timeline | |
*/ | |
this.timeline = { | |
openTs: Date.now(), | |
closeTs: undefined | |
} | |
/** | |
* Role in the connection, initiator or responder | |
*/ | |
this.role = isInitiator ? ROLE.INITIATOR : ROLE.RESPONDER | |
/** | |
* The multiplexer being used | |
*/ | |
this.multiplexer = undefined | |
/** | |
* The encryption method being used | |
*/ | |
this.encryption = undefined | |
/** | |
* Connection streams | |
*/ | |
this.streams = [] | |
/** | |
* User provided tags | |
*/ | |
this.tags = [] | |
} | |
newStream () { | |
if (!this.multiplexer) { | |
// await hasMultiplexerOrErrored() // magic ensues | |
} | |
// ... new stream creation | |
} | |
getStreams () { | |
} | |
close () { | |
this.timeline.closeTs = Date.now() | |
} | |
setLocalAddress (ma) { | |
this.endpoints.local = ma | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Fair enough. We can always revisit when we add more than 1 encryption. Right now if the switch has encryption turned on it's going to be
secio
, otherwise it'splaintext
. Once tls or quic support is added it will become more important for this.