4 changed files with 49 additions and 89 deletions
Split View
Diff Options
@ -0,0 +1,43 @@ |
|||
/*jshint esversion: 6 */ |
|||
|
|||
var Pins = module.exports; |
|||
|
|||
/* |
|||
takes contents of a pinFile (UTF8 string) |
|||
and the pin file's name |
|||
returns an array of of channel ids which are pinned |
|||
|
|||
throw errors on pin logs with invalid pin data |
|||
*/ |
|||
Pins.calculateFromLog = function (pinFile, fileName) { |
|||
var pins = {}; |
|||
pinFile.split('\n').filter((x)=>(x)).map((l) => JSON.parse(l)).forEach((l) => { |
|||
switch (l[0]) { |
|||
case 'RESET': { |
|||
pins = {}; |
|||
if (l[1] && l[1].length) { l[1].forEach((x) => { pins[x] = 1; }); } |
|||
//jshint -W086
|
|||
// fallthrough
|
|||
} |
|||
case 'PIN': { |
|||
l[1].forEach((x) => { pins[x] = 1; }); |
|||
break; |
|||
} |
|||
case 'UNPIN': { |
|||
l[1].forEach((x) => { delete pins[x]; }); |
|||
break; |
|||
} |
|||
default: |
|||
// FIXME logging
|
|||
// TODO write to the error log
|
|||
/* Log.error('CORRUPTED_PIN_LOG', { |
|||
line: JSON.stringify(l), |
|||
fileName: fileName, |
|||
}); */ |
|||
console.error(new Error (JSON.stringify(l) + ' ' + fileName)); |
|||
} |
|||
}); |
|||
return Object.keys(pins); |
|||
}; |
|||
|
|||
// TODO refactor to include a streaming version for use in rpc.js as well
|
|||
Write
Preview
Loading…
Cancel
Save