Skip to content

Commit

Permalink
Normalize pack.msg before reaching encoding functions.
Browse files Browse the repository at this point in the history
No `msg` field will be sent if it's falsey.
  • Loading branch information
lsm committed Feb 3, 2017
1 parent 86d71a2 commit 1873ced
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 48 deletions.
4 changes: 1 addition & 3 deletions lib/message/index.js
Expand Up @@ -25,9 +25,7 @@ exports.encode = function(pack, encodeMsg) {
pack.msg = Buffer(msg)
} else if (isBuffer(msg)) {
pack.formatId = type.BUFFER
} else if (pack.hasOwnProperty('msg')) {
if (undefined === msg)
msg = null
} else if (msg) {
pack.msg = encodeMsg(msg)
}

Expand Down
2 changes: 1 addition & 1 deletion lib/queue/index.js
Expand Up @@ -174,7 +174,7 @@ Queue.prototype.dispatch = function(data, stream) {
while (i++ < len) {
repMsg[i] = arguments[i]
}
} else if ('string' !== typeof repMsg && !isBuffer(repMsg)) {
} else if (1 === len && 'string' !== typeof repMsg && !isBuffer(repMsg)) {
repMsg = [repMsg]
}
var buf = encode({
Expand Down
23 changes: 8 additions & 15 deletions lib/socket/channel.js
Expand Up @@ -29,33 +29,26 @@ var SocketChannel = module.exports = function SocketChannel(socket, ns, chn) {
inherits(SocketChannel, Socket)

SocketChannel.prototype.reqChn = function(chn, event, msg, callback) {
var args = que.getMsgAndCallback(arguments, 2)
var pack = {
chn: chn,
msg: args.msg,
event: event
}
var args = que.getMsgAndCallback(arguments, 2)
if (args.hasMsg)
pack.msg = args.msg
this.queue.req(this.streams, pack, args.callback)
}

SocketChannel.prototype.pubChn = function(chn, event, msg) {
var pack = {
chn: chn,
event: event
}
if (arguments.length > 2)
pack.msg = que.getMsg(arguments, 2)
var pack = que.getMsg(arguments, 2)
pack.chn = chn
pack.event = event
this.queue.pub(this.streams, pack)
}

SocketChannel.prototype.pubSid = function(sid, event, msg) {
var pack = {
sid: sid,
event: event
}
if (arguments.length > 2)
pack.msg = que.getMsg(arguments, 2)
var pack = que.getMsg(arguments, 2)
pack.sid = sid
pack.event = event
this.queue.pub(this.streams, pack)
}

Expand Down
47 changes: 18 additions & 29 deletions lib/socket/que.js
Expand Up @@ -8,20 +8,14 @@ var isBuffer = Buffer.isBuffer
// pub/sub pair

exports.pub = function(event, msg) {
var pack = {
event: event
}
if (arguments.length > 1)
pack.msg = getMsg(arguments, 1)
var pack = getMsg(arguments, 1)
pack.event = event
this.queue.pub(this.streams, pack)
}

exports.pubTag = function(tag, event, msg) {
var pack = {
event: event
}
if (arguments.length > 2)
pack.msg = getMsg(arguments, 2)
var pack = getMsg(arguments, 2)
pack.event = event
var streams = this.getStreamsByTag(tag)
if (streams.length > 0) {
this.queue.pub(streams, pack)
Expand All @@ -44,20 +38,18 @@ exports.sub = function(event, callback) {
exports.req = function(event, msg, callback) {
var args = getMsgAndCallback(arguments, 1)
var pack = {
msg: args.msg,
event: event
}
if (args.hasMsg)
pack.msg = args.msg
this.queue.req(this.streams, pack, args.callback)
}

exports.reqTag = function(tag, event, msg, callback) {
var args = getMsgAndCallback(arguments, 2)
var pack = {
msg: args.msg,
event: event
}
var args = getMsgAndCallback(arguments, 2)
if (args.hasMsg)
pack.msg = args.msg
var streams = this.getStreamsByTag(tag)
if (streams.length > 0) {
this.queue.req(streams, pack, args.callback)
Expand Down Expand Up @@ -85,15 +77,13 @@ var getMsgAndCallback = exports.getMsgAndCallback = function(args, start) {
else
callback = undefined

var result = {
callback: callback
}

if (len > start) {
result.msg = getMsg(args, start, len)
result.hasMsg = true
}
var result
if (len > start)
result = getMsg(args, start, len)
else
result = {}

result.callback = callback
return result
}

Expand All @@ -110,15 +100,14 @@ var getMsg = exports.getMsg = function(args, start, end) {
msg[i - start] = args[i]
i++
}
} else {
// only one or no argument is msg
} else if (end > start) {
// One msg arguments
msg = args[start]
if (!msg)
return msg

if ('string' !== typeof msg && !isBuffer(msg))
msg = [msg]
}

return msg
return {
msg: msg
}
}

0 comments on commit 1873ced

Please sign in to comment.