bramqp
Advanced tools
Comparing version 0.6.0 to 0.6.1
# Value Types | ||
All values used in AMQP communication have types defined by the specification. When calling a method, these types are listed in the fields of the method as `domain`. Since the type of the field is already know, bramqp only requires the data. However, certain values do not have a type or `domain` specified. These values would include the values used in an array or table. To ensure that bramqp uses the correct type, the type and the data must both be provided in an object. | ||
All values used in AMQP communication have types defined by the specification. When calling a method, these types are listed in the fields of the method as `domain`. Since the type of the field is already known, bramqp only requires the data. However, certain values do not have a type or `domain` specified. These values would include the values used in an array or table. To ensure that bramqp uses the correct type, the type and the data must both be provided in an object. | ||
@@ -5,0 +5,0 @@ The type must be a string matching one of the types available in the AMQP specification, listed in [valueTypes.js](../lib/valueTypes.js). |
@@ -113,8 +113,12 @@ 'use strict'; | ||
self.frameBodyClass[channel] = className; | ||
self.frameBodyBuffer[channel] = Buffer.alloc(size); | ||
self.frameBodyBuffer[channel].used = 0; | ||
self.frameBodyBuffer[channel] = { | ||
'used': 0, | ||
'length': size, | ||
'buffers': [], | ||
}; | ||
self.frameBodyProperties[channel] = properties; | ||
if (self.frameBodyBuffer[channel].used === self.frameBodyBuffer[channel].length) { | ||
self.emit('content', channel, self.frameBodyClass[channel], self.frameBodyProperties[channel], self.frameBodyBuffer[channel]); | ||
self.emit(channel + ':' + 'content', channel, self.frameBodyClass[channel], self.frameBodyProperties[channel], self.frameBodyBuffer[channel]); | ||
var contentBuffer = Buffer.concat(self.frameBodyBuffer[channel].buffers); | ||
self.emit('content', channel, self.frameBodyClass[channel], self.frameBodyProperties[channel], contentBuffer); | ||
self.emit(channel + ':' + 'content', channel, self.frameBodyClass[channel], self.frameBodyProperties[channel], contentBuffer); | ||
} | ||
@@ -124,7 +128,8 @@ }); | ||
self.emit('heartbeat'); | ||
buffer.copy(self.frameBodyBuffer[channel], self.frameBodyBuffer[channel].used); | ||
self.frameBodyBuffer[channel].buffers.push(buffer); | ||
self.frameBodyBuffer[channel].used += buffer.length; | ||
if (self.frameBodyBuffer[channel].used === self.frameBodyBuffer[channel].length) { | ||
self.emit('content', channel, self.frameBodyClass[channel], self.frameBodyProperties[channel], self.frameBodyBuffer[channel]); | ||
self.emit(channel + ':' + 'content', channel, self.frameBodyClass[channel], self.frameBodyProperties[channel], self.frameBodyBuffer[channel]); | ||
var contentBuffer = Buffer.concat(self.frameBodyBuffer[channel].buffers); | ||
self.emit('content', channel, self.frameBodyClass[channel], self.frameBodyProperties[channel], contentBuffer); | ||
self.emit(channel + ':' + 'content', channel, self.frameBodyClass[channel], self.frameBodyProperties[channel], contentBuffer); | ||
} | ||
@@ -335,3 +340,3 @@ }); | ||
frameBuffer.used = 0; | ||
this.frameSerializer.serializeFrameMethod(frameBuffer, channel, className, methodName, data); | ||
frameBuffer = this.frameSerializer.serializeFrameMethod(frameBuffer, channel, className, methodName, data); | ||
return frameBuffer.slice(0, frameBuffer.used); | ||
@@ -361,3 +366,3 @@ }; | ||
contentChunk.used = contentChunk.length; | ||
self.frameSerializer.serializeFrameContentBody(frameBuffer, channel, contentChunk); | ||
frameBuffer = self.frameSerializer.serializeFrameContentBody(frameBuffer, channel, contentChunk); | ||
frameBuffers.push(frameBuffer.slice(0, frameBuffer.used)); | ||
@@ -370,4 +375,4 @@ } | ||
frameBuffer.used = 0; | ||
this.frameSerializer.serializeFrameHeartbeat(frameBuffer); | ||
frameBuffer = this.frameSerializer.serializeFrameHeartbeat(frameBuffer); | ||
return frameBuffer.slice(0, frameBuffer.used); | ||
}; |
@@ -174,4 +174,3 @@ 'use strict'; | ||
var end = buffer.read + length; | ||
var ret = Buffer.alloc(length); | ||
buffer.copy(ret, 0, buffer.read, end); | ||
var ret = buffer.slice(buffer.read, end); | ||
buffer.read += length; | ||
@@ -286,9 +285,13 @@ return ret; | ||
FrameParser.prototype.resetFrameState = function() { | ||
this.frameStartBuffer = Buffer.alloc(this.frameStartSize); | ||
this.frameStartBuffer.used = 0; | ||
this.frameStartBuffer.read = 0; | ||
this.frameStartBuffer = { | ||
'used': 0, | ||
'read': 0, | ||
'buffers': [], | ||
}; | ||
this.framePayloadBuffer = undefined; | ||
this.frameEndBuffer = Buffer.alloc(this.frameEndSize); | ||
this.frameEndBuffer.used = 0; | ||
this.frameEndBuffer.read = 0; | ||
this.frameEndBuffer = { | ||
'used': 0, | ||
'read': 0, | ||
'buffers': [], | ||
}; | ||
this.frameType = 0; | ||
@@ -301,12 +304,17 @@ this.frameChannel = 0; | ||
var dataRead = Math.min(this.frameStartSize - this.frameStartBuffer.used, buffer.length - buffer.read); | ||
buffer.copy(this.frameStartBuffer, this.frameStartBuffer.used, buffer.read, buffer.read + dataRead); | ||
this.frameStartBuffer.buffers.push(buffer.slice(buffer.read, buffer.read + dataRead)); | ||
buffer.read += dataRead; | ||
this.frameStartBuffer.used += dataRead; | ||
if (this.frameStartBuffer.used === this.frameStartSize) { | ||
this.frameType = this.parseOctet(this.frameStartBuffer); | ||
this.frameChannel = this.parseShort(this.frameStartBuffer); | ||
this.framePayloadSize = this.parseLong(this.frameStartBuffer); | ||
this.framePayloadBuffer = Buffer.alloc(this.framePayloadSize); | ||
this.framePayloadBuffer.used = 0; | ||
this.framePayloadBuffer.read = 0; | ||
var frameStartBuffer = Buffer.concat(this.frameStartBuffer.buffers); | ||
frameStartBuffer.used = this.frameStartBuffer.used; | ||
frameStartBuffer.read = this.frameStartBuffer.read; | ||
this.frameType = this.parseOctet(frameStartBuffer); | ||
this.frameChannel = this.parseShort(frameStartBuffer); | ||
this.framePayloadSize = this.parseLong(frameStartBuffer); | ||
this.framePayloadBuffer = { | ||
'used': 0, | ||
'read': 0, | ||
'buffers': [], | ||
}; | ||
if (buffer.length === buffer.read) { | ||
@@ -323,3 +331,3 @@ return this.parseFramePayload; | ||
var dataRead = Math.min(this.framePayloadSize - this.framePayloadBuffer.used, buffer.length - buffer.read); | ||
buffer.copy(this.framePayloadBuffer, this.framePayloadBuffer.used, buffer.read, buffer.read + dataRead); | ||
this.framePayloadBuffer.buffers.push(buffer.slice(buffer.read, buffer.read + dataRead)); | ||
buffer.read += dataRead; | ||
@@ -339,7 +347,10 @@ this.framePayloadBuffer.used += dataRead; | ||
var dataRead = Math.min(this.frameEndSize - this.frameEndBuffer.used, buffer.length - buffer.read); | ||
buffer.copy(this.frameEndBuffer, this.frameEndBuffer.used, buffer.read, buffer.read + dataRead); | ||
this.frameEndBuffer.buffers.push(buffer.slice(buffer.read, buffer.read + dataRead)); | ||
buffer.read += dataRead; | ||
this.frameEndBuffer.used += dataRead; | ||
if (this.frameEndBuffer.used === this.frameEndSize) { | ||
var endCheck = this.parseOctet(this.frameEndBuffer); | ||
var frameEndBuffer = Buffer.concat(this.frameEndBuffer.buffers); | ||
frameEndBuffer.used = this.frameEndBuffer.used; | ||
frameEndBuffer.read = this.frameEndBuffer.read; | ||
var endCheck = this.parseOctet(frameEndBuffer); | ||
if (!this.constantLookup[endCheck] || this.constantLookup[endCheck].name !== 'frame-end') { | ||
@@ -349,3 +360,6 @@ this.emit('error', new Error('frame end octet does not match the specification')); | ||
try { | ||
this.frameLookup[this.constantLookup[this.frameType].name].call(this, this.framePayloadBuffer); | ||
var payloadBuffer = Buffer.concat(this.framePayloadBuffer.buffers); | ||
payloadBuffer.used = this.framePayloadBuffer.used; | ||
payloadBuffer.read = this.framePayloadBuffer.read; | ||
this.frameLookup[this.constantLookup[this.frameType].name].call(this, payloadBuffer); | ||
} finally { | ||
@@ -364,2 +378,5 @@ this.resetFrameState(); | ||
FrameParser.prototype.parse = function(data) { | ||
if (!(data instanceof Buffer)) { | ||
data = Buffer.from(data); | ||
} | ||
data.read = 0; | ||
@@ -366,0 +383,0 @@ try { |
@@ -292,3 +292,2 @@ 'use strict'; | ||
FrameSerializer.prototype.serializeFramePayload = function(buffer, payloadBuffer) { | ||
payloadBuffer.copy(buffer, buffer.used, 0, payloadBuffer.used); | ||
buffer.used += payloadBuffer.used; | ||
@@ -300,3 +299,3 @@ }; | ||
FrameSerializer.prototype.serializeFrameMethod = function(buffer, channel, className, methodName, fieldData) { | ||
var methodPayload = Buffer.alloc(this.frameMax); | ||
var methodPayload = buffer.slice(7); | ||
methodPayload.used = 0; | ||
@@ -311,5 +310,6 @@ var theClass = this.classLookup[className]; | ||
this.serializeFrameEnd(buffer); | ||
return buffer; | ||
}; | ||
FrameSerializer.prototype.serializeFrameContentHeader = function(buffer, channel, className, bodySize, fieldData) { | ||
var headerPayload = Buffer.alloc(this.frameMax); | ||
var headerPayload = buffer.slice(7); | ||
headerPayload.used = 0; | ||
@@ -355,2 +355,3 @@ var theClass = this.classLookup[className]; | ||
this.serializeFrameEnd(buffer); | ||
return buffer; | ||
}; | ||
@@ -361,2 +362,6 @@ FrameSerializer.prototype.serializeFrameContentBody = function(buffer, channel, bodyBuffer) { | ||
this.serializeFrameEnd(buffer); | ||
buffer = buffer.slice(0, buffer.used); | ||
var contentBuffer = Buffer.concat([buffer.slice(0, 7), bodyBuffer, buffer.slice(-1)]); | ||
contentBuffer.used = buffer.used; | ||
return contentBuffer; | ||
}; | ||
@@ -366,2 +371,3 @@ FrameSerializer.prototype.serializeFrameHeartbeat = function(buffer) { | ||
this.serializeFrameEnd(buffer); | ||
return buffer; | ||
}; |
{ | ||
"name": "bramqp", | ||
"version": "0.6.0", | ||
"version": "0.6.1", | ||
"description": "bakkerthehacker's rude AMQP library", | ||
@@ -26,3 +26,3 @@ "keywords": [ | ||
"dependencies": { | ||
"async": "~2.6.0", | ||
"async": "~3.1.0", | ||
"buffer-more-ints": "~1.0.0", | ||
@@ -33,3 +33,3 @@ "pkginfo": "~0.4.1", | ||
"devDependencies": { | ||
"vows": "~0.8.1" | ||
"vows": "~0.8.2" | ||
}, | ||
@@ -42,5 +42,5 @@ "scripts": { | ||
"engines": { | ||
"node": ">=4.5.0 >=5.10.0" | ||
"node": ">=6" | ||
}, | ||
"readme": "" | ||
} |
@@ -1,2 +0,2 @@ | ||
# [![bakkerthehacker](https://secure.gravatar.com/avatar/5d41671650b9f93a138b64e61c2ad8e4.png?s=28)](https://github.com/bakkerthehacker) bakkerthehacker's rude AMQP library | ||
# <img src="https://secure.gravatar.com/avatar/5d41671650b9f93a138b64e61c2ad8e4.png" width="28" height="28"> bakkerthehacker's rude AMQP library | ||
@@ -9,3 +9,2 @@ A radical, raw, robust, remarkable, rapid AMQP library for node.js | ||
[![devDependency Status](https://img.shields.io/david/dev/bakkerthehacker/bramqp.svg?style=flat)](https://david-dm.org/bakkerthehacker/bramqp#info=devDependencies) | ||
[![Donate](https://img.shields.io/badge/donate-%E0%B8%BF%20bitcoin-127fdc.svg?style=flat)](http://gh.bakker.pw/bramqp_donate) | ||
@@ -12,0 +11,0 @@ ## Benefits over existing AMQP libraries |
Sorry, the diff of this file is not supported yet
593282
61
4028
37
+ Addedasync@3.1.1(transitive)
- Removedasync@2.6.4(transitive)
- Removedlodash@4.17.21(transitive)
Updatedasync@~3.1.0