12
marshall.Marshall = function(typelist, input, struct, offset) {
15
for (var i=0; i < typelist.length; i++) {
17
switch (typelist[i]) {
19
struct[offset++] = item & 0xFF;
20
struct[offset++] = (item >> 8) & 0xFF;
21
struct[offset++] = (item >> 16) & 0xFF;
22
struct[offset++] = (item >> 24) & 0xFF;
26
struct[offset++] = item & 0xFF;
27
struct[offset++] = (item >> 8) & 0xFF;
28
struct[offset++] = (item >> 16) & 0xFF;
29
struct[offset++] = (item >> 24) & 0xFF;
30
struct[offset++] = 0x0;
31
struct[offset++] = 0x0;
32
struct[offset++] = 0x0;
33
struct[offset++] = 0x0;
37
struct[offset++] = item & 0xFF;
38
struct[offset++] = item >> 8;
42
struct[offset++] = item;
46
var lengthoffset = offset;
52
var utf8 = UnicodeToUTF8Stream(j.charCodeAt(0));
53
utf8.forEach( function(c) {
59
struct[lengthoffset+0] = length & 0xFF;
60
struct[lengthoffset+1] = (length >> 8) & 0xFF;
63
marshall.Marshall(["b", "w", "d"], [item.type, item.version, item.path], struct, offset);
68
message.Debug("Marshall: Unknown type=" + typelist[i]);
77
marshall.Unmarshall = function(typelist, struct, state) {
78
let offset = state.offset;
80
for (var i=0; i < typelist.length; i++) {
81
switch (typelist[i]) {
83
var val = struct[offset++];
84
val += struct[offset++] << 8;
85
val += struct[offset++] << 16;
86
val += (struct[offset++] << 24) >>> 0;
90
var val = struct[offset++];
91
val += struct[offset++] << 8;
92
val += struct[offset++] << 16;
93
val += (struct[offset++] << 24) >>> 0;
98
var val = struct[offset++];
99
output.push(val + (struct[offset++] << 8));
102
output.push(struct[offset++]);
105
var len = struct[offset++];
106
len += struct[offset++] << 8;
108
var utf8converter = new UTF8StreamToUnicode();
109
for (var j=0; j < len; j++) {
110
var c = utf8converter.Put(struct[offset++]);
111
if (c == -1) continue;
112
str += String.fromCharCode(c);
117
state.offset = offset;
118
const qid = marshall.Unmarshall(["b", "w", "d"], struct, state);
119
offset = state.offset;
127
message.Debug("Error in Unmarshall: Unknown type=" + typelist[i]);
131
state.offset = offset;