forked from bigeasy/packet
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserializer.sketch.js
More file actions
41 lines (38 loc) · 1.15 KB
/
serializer.sketch.js
File metadata and controls
41 lines (38 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
var interrupt = require('interrupt').createInterrupter('packet')
var rescue = require('rescue')
function Serializer (definition, object) {
this._definition = definition
this._object = object
this._buffer = new Buffer('')
}
Serializer.prototype.write = function (buffer, start, end) {
if (this._buffer.length != 0) {
start = 0
end += this._buffer.length
buffer = Buffer.concat([ this.buffer, buffer ])
}
var object = this._object
function packet () {
var vargs = Array.prototype.slice.call(arguments)
var name = vargs.shift()
var size = vargs.shift()
var bytes = size / 16
var value = 0
var bite = 1
var offset = -1
for (var i = 0; i <= bytes; i++) {
buffer[start++] = object[name] >>> bite * 8 & 0xff
bite += offset
}
}
packet.serializing = true
packet.parsing = false
try {
this._definition.call(null, packet, this._object)
} catch (error) {
rescue(/^packet#underflow$/m, function () {
this._buffer = buffer
}).call(this, error)
}
}
module.exports = Serializer