Skip to content

Instantly share code, notes, and snippets.

@robinmonjo
Last active December 20, 2015 23:48
Show Gist options
  • Save robinmonjo/6214744 to your computer and use it in GitHub Desktop.
Save robinmonjo/6214744 to your computer and use it in GitHub Desktop.
class Connection
constructor: (@socket, @manager) ->
@socket.setEncoding 'utf-8'
@socket.on 'data', incomingData
@socket.on 'end', connectionClosed
@peerMet = false
incomingData = (chunck) =>
@buffer += chunck
if not @secret #try to find secret
tryToParseSecret @buffer
else
if @peer
@peer.socket.write @buffer
@buffer = ''
tryToParseSecret = () =>
#parsing method
#@secret = blabla
@buffer = ''
secretFound = () =>
if @peer == null #I have my secret and my peer hasn't look for me yet
@manager.connectionFindOutSecret this, (peer) =>
if peer == null
#no peer waiting for it to come look for me
else
meetingPeer peer #I met my peer
@peer.meetingPeer this #My peer met his peer (myself)
meetingPeer: () =>
@peer = peer
@peerMet = true
@peer.socket.write @buffer #writting buffer
@buffer = ''
connectionClosed = () =>
@peer.peer = null #I'm dying, telling my peer not to rely on me anymore
if @peerMet && @peer == null #I have met my peer and he has died
#last of the 2 peers, sending delete request to the API
module.exports.Connection = Connection
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment