00001
00002
00003
00004
00005
00006
00007 var dgram = require('dgram');
00008 var emitter = require('events').EventEmitter;
00009 var arc = new emitter();
00010
00011 function startJSONListener(workerData, partition)
00012 {
00013 var server = dgram.createSocket('udp4');
00014
00015 console.log("Setting up JSON listener for partition " + partition);
00016 server.on("error", function(err) {
00017 console.log("artdaq-runcontrol listen server error:\n" + err.stack);
00018 server.close();
00019 });
00020
00021 server.on("message", function(msg, rinfo) {;
00022 var thisEvent = JSON.parse(msg);
00023
00024 arc.emit("message", {name:"artdaq-runcontrol",target:"p"+partition+"onmon",data:true});
00025 arc.emit("message", {name:"artdaq-runcontrol",target:"p"+partition+"evt",method:"push",data:thisEvent});
00026 });
00027
00028 server.on("listening", function () {
00029 var address = server.address();
00030 console.log("server listening " +
00031 address.address + ":" + address.port);
00032 });
00033
00034 console.log("Binding Server to port " + (35555 + partition) );
00035 server.bind(35555 + partition);
00036 return server;
00037 }
00038
00039 arc.MasterInitFunction = function( workerData ) {
00040 return null;
00041 };
00042
00043 arc.WorkerInitFunction = function( workerData ) {
00044 startJSONListener(workerData, 0);
00045 startJSONListener(workerData, 1);
00046 startJSONListener(workerData, 2);
00047 startJSONListener(workerData, 3);
00048 return null;
00049 }
00050
00051 module.exports = function ( module_holder ) {
00052 module_holder["dispatcher-receiver"] = arc;
00053 };