Example #1
0
MqttNode.prototype.enableReport = function (oid, iid, rid) {
    var self = this,
        trg = this._target(oid, iid, rid),
        rAttrs = this._getAttrs(oid, iid, rid),
        okey = mutils.oidKey(oid),
        rkey,
        rpid,
        pmin,
        pmax,
        rRpt,
        dumper,
        notify;

    if (!trg.exist) return false;

    if (trg.type === TTYPE.obj) {
        rpid = okey;
        dumper = function (cb) {
            self._dumpObj(oid, cb);
        };
        notify = { oid: mutils.oidNum(oid), data: null };
    } else if (trg.type === TTYPE.inst) {
        rpid = okey + ':' + iid;
        dumper = function (cb) {
            self._dumpObj(oid, iid, cb);
        };
        notify = { oid: mutils.oidNum(oid), iid: iid, data: null };
    } else if (trg.type === TTYPE.rsc) {
        rkey = mutils.ridKey(oid, rid);
        rpid = okey + ':' + iid + ':' + rkey;
        dumper = function (cb) {
            self._readResrc(oid, iid, rid, cb);
        };
        notify = { oid: mutils.oidNum(oid), iid: iid, rid: mutils.ridNum(rid), data: null };
    }

    pmin = rAttrs.pmin * 1000;
    pmax = rAttrs.pmax * 1000;

    rAttrs.cancel = false;
    rAttrs.mute = true;
    this._reporters[rpid] = { min: null, max: null, poller: null };
    rRpt = this._reporters[rpid];

    // WE DONT USE POLLER AT THIS MOMENT, BUT KEEP THIS SNIPPET HERE
    // if (trg.type === TTYPE.rsc) {
    //     rRpt.poller = setInterval(function () {
    //         self._readResrc(oid, iid, rid);     // just read it, helper._checkAndReportResrc() will be invoked
    //     }, rAttrs.pintvl || 500);
    // }

    rRpt.min = setTimeout(function () {
        if (pmin === 0) {             // if no pmin, just report at pmax triggered
            rAttrs.mute = false;
        } else {
            dumper(function (err, val) {
                rAttrs.mute = false;
                notify.data = val;
                self.pubNotify(notify);
            });
        }
    }, pmin);

    rRpt.max = setInterval(function () {
        rAttrs.mute = true;
        dumper(function (err, val) {
            rAttrs.mute = false;
            notify.data = val;
            self.pubNotify(notify);
        });

        if (!_.isNil(rRpt.min))
            clearTimeout(rRpt.min);

        rRpt.min = null;
        rRpt.min = setTimeout(function () {
            if (pmin === 0) {
                rAttrs.mute = false;
            } else {
                dumper(function (err, val) {
                    rAttrs.mute = false;
                    notify.data = val;
                    self.pubNotify(notify);
                });
            }
        }, pmin);
    }, pmax);

    return true;
};
Example #2
0
 _.forEach(obj, function (inst, iid) {
     var iidNum = parseInt(iid);
     iidNum = _.isNaN(iidNum) ? iid : iidNum;
     objList.push({ oid: mutils.oidNum(oid), iid: iidNum });
 });