netsoul
Version:
netsoul protocol library
119 lines (97 loc) • 3.32 kB
text/coffeescript
protocol = require './protocol'
utils = require './utils'
class ConnectBase extends utils.PubSub
constructor: ( = {}) ->
= false
do
'ConnectBase::constructor'
super
debug: (args...) =>
.logFn "#{@constructor.name}> ", args... if .debug
verbose: (args...) =>
.logFn "#{@constructor.name}> ", args... if .verbose
handleOptions: =>
.logFn ?= console.log
.verbose ?= false
.debug ?= false
'handleOptions'
connect: =>
if not ?
throw new Error 'socket does not exists'
# classes using lib net
class ConnectNet extends ConnectBase
connect: =>
"ConnectNet::connect"
super
.on 'connect',
.on 'data',
.on 'end',
.on 'error',
.on 'close',
send: (message, encoding = null, callback = null) =>
if typeof(message) is 'string'
data = "#{message}\r\n"
else
data = message.join(" ") + "\r\n"
.write data, encoding, callback
disconnect: =>
do .end
do
# Net callbacks
onConnect: =>
= true
"ConnectNet::onConnect"
'connect'
onBuffer: (buffer) =>
'ConnectNet::onBuffer', buffer
'buffer', buffer
line for line in buffer.toString().split("\n")
handleLine: (line) =>
line = line.replace /^\s+|\s+$/g, ""
return false if not line.length
'ConnectNet::handleLine', line
message = protocol::parseData line
'protocol::parseData', message
'data', line
'message', message
onDisconnect: =>
"ConnectNet::onDisconnect"
= false
'disconnect'
onClose: =>
"ConnectNet::onClose"
= false
'disconnect'
onError: (error) =>
"ConnectNet::onError", error
'error', error
class ConnectTCP extends ConnectNet
handleOptions: =>
super
.host ?= 'ns-server.epitech.net'
.port ?= 4242
.localAddress ?= '0.0.0.0'
connect: =>
"ConnectTCP::connect"
"Connecting to #{@options.host}:#{@options.port}..."
= require('net').connect
port: .port
host: .host
localAddress: .localAddress
super
class ConnectUnixSocket extends ConnectNet
handleOptions: =>
super
if not .path?
throw new Error 'unix socket not specified'
connect: =>
"ConnectUnixSocket::connect"
"Connecting to #{@options.path}..."
= require('net').connect
path: .path
super
module.exports =
unixSocket: ConnectUnixSocket
tcp: ConnectTCP
net: ConnectNet
base: ConnectBase