new TypeHelper()
This is a helper class that is used to register custom message types.
Methods
(static) helper(messageType, newHelperopt) → {object}
This method provides a helper for parsing messages of different types. If a helper was provided by a user,
registers it for future use.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
messageType |
String | The type of message to handle. | |
newHelper |
object |
<optional> |
a helper object with predefined functions that can be provided for custom parsing/handling of a message type. |
Returns:
The helper object assigned/registered.
- Type
- object
Examples
var xmlTypeHelper = {
serialize: function(data) {
return [new XMLSerializer().serializeToString(data)];
},
deserialize: function(data) {
if (data.constructor === String) {
return new DOMParser().parseFromString(data);
} else {
// Binary buffer, need to decode utf8
return new DOMParser().parseFromString(decodeURIComponent(escape(Uint8ToString(data))));
}
}
};
// Register the above XML custom helper for parsing all XML messages automatically
amps.TypeHelper.helper('xml', xmlTypeHelper);
amps.TypeHelper.helper('compositejjjbl', amps.TypeHelper.compositeHelper('json', 'json', 'json', 'binary'));
var nvfixTypeHelper = {
serialize: function(data) {
// serialzing an array of tuples into a string with the NVFIX delimiter
// [[1, 5], [2, 600], [10, 427]] => '1=5\x012=600\x0110=427'
return [data.map(function(tuple) { return tuple[0] + '=' + tuple[1]; }).join('\\x01')];
},
deserialize: function(data) {
// Deserializing: "foo=bar\x01bar=foo\x01" => [['foo', 'bar'], ['bar', 'foo']]
var parseMessage = function(message) {
message = message.split('\x01');
message.pop() // drop the empty tail after split
// convert the message into a list of tuples
return message.map(function(item) { return item.split('='); });
};
// Alternatively, a message can be converted into an object (dictionary/map)
// 'foo=bar\x01bar=foo\x01' => {foo: 'bar', bar: 'foo'}
var parseMessageAsMap = function(message) {
message = message.split('\x01');
message.pop() // drop the empty tail after split
// convert the message into a list of tuples
var messageObject = {};
message.map(function(item) {
var items = item.split('=');
messageObject[items[0]] = items[1];
});
return messageObject;
};
if (data.constructor === String) {
return parseMessage(data);
} else {
// Binary buffer, need to decode utf8
return parseMessage(decodeURIComponent(escape(Uint8ToString(data))));
}
}
};
// Register the above NVFIX custom helper for parsing all NVFIX messages automatically
amps.TypeHelper.helper('nvfix', nvfixTypeHelper);