40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
/*
|
|
* @TEST-DOC: Demo suspend and continue processing from JavaScript
|
|
* @TEST-REQUIRES: $SCRIPTS/have-javascript
|
|
* @TEST-EXEC: zeek -b -Cr $TRACES/http/get.trace base/protocols/http %INPUT > out
|
|
* @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff out
|
|
*/
|
|
zeek.on('zeek_init', () => {
|
|
const nt = zeek.invoke('network_time');
|
|
console.log(`${nt} suspend_processing`);
|
|
zeek.invoke('suspend_processing');
|
|
const suspended_at = Date.now();
|
|
|
|
// Schedule a JavaScript timer (running based on wallclock)
|
|
// to continue execution in 333 msec.
|
|
setTimeout(() => {
|
|
const nt = zeek.invoke('network_time');
|
|
const continued_at = Date.now();
|
|
const delayed_ms = continued_at - suspended_at;
|
|
const delayed_enough = delayed_ms > 300;
|
|
|
|
console.log(`${nt} continue_processing (delayed_enough=${delayed_enough})`);
|
|
zeek.invoke('continue_processing');
|
|
}, 333);
|
|
});
|
|
|
|
zeek.on('http_request', (c, method, orig_URI, escaped_URI, version) => {
|
|
const nt = zeek.invoke('network_time');
|
|
console.log(`${nt} http_request ${c.uid} ${method} ${orig_URI} ${version}`);
|
|
});
|
|
|
|
zeek.on('Pcap::file_done', (path) => {
|
|
const nt = zeek.invoke('network_time');
|
|
console.log(`${nt} Pcap::file_done ${path}`);
|
|
});
|
|
|
|
zeek.on('zeek_done', () => {
|
|
const nt = zeek.invoke('network_time');
|
|
console.log(`${nt} zeek_done`);
|
|
});
|