⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snmp4jheartbeatmib.java

📁 你个snmp的源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    }
    notificationOriginator.notify(context, oidSnmp4jAgentHBEvent, vbs);
  }

  // Scalars
  public class Snmp4jAgentHBRefTime extends DateAndTimeScalar {
    Snmp4jAgentHBRefTime(OID oid, MOAccess access) {
      super(oid, access, new OctetString());
//--AgentGen BEGIN=snmp4jAgentHBRefTime
//--AgentGen END
    }

    public int isValueOK(SubRequest request) {
      Variable newValue =
          request.getVariableBinding().getVariable();
      int valueOK = super.isValueOK(request);
      if (valueOK != SnmpConstants.SNMP_ERROR_SUCCESS) {
        return valueOK;
      }
      OctetString os = (OctetString) newValue;
      if (!(((os.length() >= 8) && (os.length() <= 8)) ||
            ((os.length() >= 11) && (os.length() <= 11)))) {
        valueOK = SnmpConstants.SNMP_ERROR_WRONG_LENGTH;
      }
      //--AgentGen BEGIN=snmp4jAgentHBRefTime::isValueOK
      //--AgentGen END
      return valueOK;
    }

    public Variable getValue() {
      //--AgentGen BEGIN=snmp4jAgentHBRefTime::getValue
      GregorianCalendar gc = new GregorianCalendar();
      gc.add(Calendar.MILLISECOND, heartbeatOffset);
      super.setValue(DateAndTime.makeDateAndTime(gc));
      //--AgentGen END
      return super.getValue();
    }

    public int setValue(Variable newValue) {
      //--AgentGen BEGIN=snmp4jAgentHBRefTime::setValue
      GregorianCalendar gc = DateAndTime.makeCalendar((OctetString) newValue);
      GregorianCalendar curGC = new GregorianCalendar();
      heartbeatOffset = (int) (gc.getTimeInMillis() - curGC.getTimeInMillis());
      //--AgentGen END
      return super.setValue(newValue);
    }

    //--AgentGen BEGIN=snmp4jAgentHBRefTime::_METHODS
    //--AgentGen END

  }

  // Value Validators
  /**
   * The <code>Snmp4jAgentHBRefTimeValidator</code> implements the value
   * validation for <code>Snmp4jAgentHBRefTime</code>.
   */
  static class Snmp4jAgentHBRefTimeValidator implements
      MOValueValidationListener {

    public void validate(MOValueValidationEvent validationEvent) {
      Variable newValue = validationEvent.getNewValue();
      OctetString os = (OctetString) newValue;
      if (!(((os.length() >= 8) && (os.length() <= 8)) ||
            ((os.length() >= 11) && (os.length() <= 11)))) {
        validationEvent.setValidationStatus(SnmpConstants.
                                            SNMP_ERROR_WRONG_LENGTH);
        return;
      }
      //--AgentGen BEGIN=snmp4jAgentHBRefTime::validate
      //--AgentGen END
    }
  }

  /**
   * The <code>Snmp4jAgentHBCtrlStartTimeValidator</code> implements the value
   * validation for <code>Snmp4jAgentHBCtrlStartTime</code>.
   */
  static class Snmp4jAgentHBCtrlStartTimeValidator implements
      MOValueValidationListener {

    public void validate(MOValueValidationEvent validationEvent) {
      Variable newValue = validationEvent.getNewValue();
      OctetString os = (OctetString) newValue;
      if (!(((os.length() >= 8) && (os.length() <= 8)) ||
            ((os.length() >= 11) && (os.length() <= 11)))) {
        validationEvent.setValidationStatus(SnmpConstants.
                                            SNMP_ERROR_WRONG_LENGTH);
        return;
      }
      //--AgentGen BEGIN=snmp4jAgentHBCtrlStartTime::validate
      //--AgentGen END
    }
  }

  /**
   * The <code>Snmp4jAgentHBCtrlDelayValidator</code> implements the value
   * validation for <code>Snmp4jAgentHBCtrlDelay</code>.
   */
  static class Snmp4jAgentHBCtrlDelayValidator implements
      MOValueValidationListener {

    public void validate(MOValueValidationEvent validationEvent) {
      Variable newValue = validationEvent.getNewValue();
      //--AgentGen BEGIN=snmp4jAgentHBCtrlDelay::validate
      //--AgentGen END
    }
  }

  /**
   * The <code>Snmp4jAgentHBCtrlPeriodValidator</code> implements the value
   * validation for <code>Snmp4jAgentHBCtrlPeriod</code>.
   */
  static class Snmp4jAgentHBCtrlPeriodValidator implements
      MOValueValidationListener {

    public void validate(MOValueValidationEvent validationEvent) {
      Variable newValue = validationEvent.getNewValue();
      //--AgentGen BEGIN=snmp4jAgentHBCtrlPeriod::validate
      //--AgentGen END
    }
  }

  // Rows and Factories

  public class Snmp4jAgentHBCtrlEntryRow extends DefaultMOMutableRow2PC {
    public Snmp4jAgentHBCtrlEntryRow(OID index, Variable[] values) {
      super(index, values);
    }

    public OctetString getSnmp4jAgentHBCtrlStartTime() {
      return (OctetString) getValue(idxSnmp4jAgentHBCtrlStartTime);
    }

    public void setSnmp4jAgentHBCtrlStartTime(OctetString newValue) {
      setValue(idxSnmp4jAgentHBCtrlStartTime, newValue);
    }

    public UnsignedInteger32 getSnmp4jAgentHBCtrlDelay() {
      return (UnsignedInteger32) getValue(idxSnmp4jAgentHBCtrlDelay);
    }

    public void setSnmp4jAgentHBCtrlDelay(UnsignedInteger32 newValue) {
      setValue(idxSnmp4jAgentHBCtrlDelay, newValue);
    }

    public UnsignedInteger32 getSnmp4jAgentHBCtrlPeriod() {
      return (UnsignedInteger32) getValue(idxSnmp4jAgentHBCtrlPeriod);
    }

    public void setSnmp4jAgentHBCtrlPeriod(UnsignedInteger32 newValue) {
      setValue(idxSnmp4jAgentHBCtrlPeriod, newValue);
    }

    public UnsignedInteger32 getSnmp4jAgentHBCtrlMaxEvents() {
      return (UnsignedInteger32) getValue(idxSnmp4jAgentHBCtrlMaxEvents);
    }

    public void setSnmp4jAgentHBCtrlMaxEvents(UnsignedInteger32 newValue) {
      setValue(idxSnmp4jAgentHBCtrlMaxEvents, newValue);
    }

    public Counter64 getSnmp4jAgentHBCtrlEvents() {
      return (Counter64) getValue(idxSnmp4jAgentHBCtrlEvents);
    }

    public void setSnmp4jAgentHBCtrlEvents(Counter64 newValue) {
      setValue(idxSnmp4jAgentHBCtrlEvents, newValue);
    }

    public TimeTicks getSnmp4jAgentHBCtrlLastChange() {
      return (TimeTicks) getValue(idxSnmp4jAgentHBCtrlLastChange);
    }

    public void setSnmp4jAgentHBCtrlLastChange(TimeTicks newValue) {
      setValue(idxSnmp4jAgentHBCtrlLastChange, newValue);
    }

    public Integer32 getSnmp4jAgentHBCtrlStorageType() {
      return (Integer32) getValue(idxSnmp4jAgentHBCtrlStorageType);
    }

    public void setSnmp4jAgentHBCtrlStorageType(Integer32 newValue) {
      setValue(idxSnmp4jAgentHBCtrlStorageType, newValue);
    }

    public Integer32 getSnmp4jAgentHBCtrlRowStatus() {
      return (Integer32) getValue(idxSnmp4jAgentHBCtrlRowStatus);
    }

    public void setSnmp4jAgentHBCtrlRowStatus(Integer32 newValue) {
      setValue(idxSnmp4jAgentHBCtrlRowStatus, newValue);
    }

    //--AgentGen BEGIN=snmp4jAgentHBCtrlEntry::Row
    //--AgentGen END
  }

  class Snmp4jAgentHBCtrlEntryRowFactory extends DefaultMOMutableRow2PCFactory {
    public synchronized MOTableRow createRow(OID index, Variable[] values) throws
        UnsupportedOperationException {
      Snmp4jAgentHBCtrlEntryRow row = new Snmp4jAgentHBCtrlEntryRow(index,
          values);
      //--AgentGen BEGIN=snmp4jAgentHBCtrlEntry::createRow
      row.setSnmp4jAgentHBCtrlLastChange(sysUpTime.get());
      row.setSnmp4jAgentHBCtrlEvents(new Counter64(0));
      //--AgentGen END
      return row;
    }

    public synchronized void freeRow(MOTableRow row) {
      //--AgentGen BEGIN=snmp4jAgentHBCtrlEntry::freeRow
      //--AgentGen END
    }

    //--AgentGen BEGIN=snmp4jAgentHBCtrlEntry::RowFactory
    //--AgentGen END
  }

//--AgentGen BEGIN=_METHODS
  public void rowStatusChanged(RowStatusEvent event) {
    if (event.isDeniable()) {
      if (event.isRowActivated()) {
        // check column interdependent consistency
        Snmp4jAgentHBCtrlEntryRow row =
            (Snmp4jAgentHBCtrlEntryRow) event.getRow();
        if ((row.getSnmp4jAgentHBCtrlDelay().getValue() == 0) &&
            ((row.getSnmp4jAgentHBCtrlStartTime() == null) ||
             (DateAndTime.makeCalendar(
                 row.getSnmp4jAgentHBCtrlStartTime()).getTimeInMillis()
              <= System.currentTimeMillis()))) {
          event.setDenyReason(PDU.inconsistentValue);
        }
      }
    }
    else if (event.isRowActivated()) {
      Snmp4jAgentHBCtrlEntryRow row =
          (Snmp4jAgentHBCtrlEntryRow) event.getRow();
      HeartbeatTask task = new HeartbeatTask(row);
      if (row.getSnmp4jAgentHBCtrlDelay().getValue() == 0) {
        long startTime = DateAndTime.makeCalendar(
                 row.getSnmp4jAgentHBCtrlStartTime()).getTimeInMillis() -
            heartbeatOffset;
        heartbeatTimer.schedule(task,
                                new Date(startTime),
                                row.getSnmp4jAgentHBCtrlPeriod().getValue());
      }
      else {
        heartbeatTimer.schedule(task,
                                row.getSnmp4jAgentHBCtrlDelay().getValue(),
                                row.getSnmp4jAgentHBCtrlPeriod().getValue());
      }
      row.setUserObject(task);
    }
    else if (event.isRowDeactivated()) {
      Snmp4jAgentHBCtrlEntryRow row =
          (Snmp4jAgentHBCtrlEntryRow) event.getRow();
      HeartbeatTask task = (HeartbeatTask) row.getUserObject();
      if (task != null) {
        task.cancel();
      }
    }
  }

  public void rowChanged(MOTableRowEvent event) {
    if (event.getRow() != null) {
      Snmp4jAgentHBCtrlEntryRow row =
          (Snmp4jAgentHBCtrlEntryRow) event.getRow();
      if (row.getSnmp4jAgentHBCtrlLastChange() != null) {
        row.getSnmp4jAgentHBCtrlLastChange().setValue(sysUpTime.get().getValue());
      }
    }
  }

  //--AgentGen END

//--AgentGen BEGIN=_CLASSES

  class HeartbeatTask extends TimerTask {

    private Snmp4jAgentHBCtrlEntryRow configRow;

    public HeartbeatTask(Snmp4jAgentHBCtrlEntryRow configRow) {
      this.configRow = configRow;
    }

    public void run() {
      if (configRow.getSnmp4jAgentHBCtrlRowStatus().getValue() ==
          RowStatus.active) {
        long maxEvents = configRow.getSnmp4jAgentHBCtrlMaxEvents().getValue();
        if ((maxEvents > 0) &&
            (configRow.getSnmp4jAgentHBCtrlEvents().getValue() < maxEvents)) {
          configRow.getSnmp4jAgentHBCtrlEvents().increment();
          OID instanceOID =
              ((DefaultMOTable) snmp4jAgentHBCtrlEntry).
              getCellOID(configRow.getIndex(),
                         idxSnmp4jAgentHBCtrlEvents);
          VariableBinding eventVB = new VariableBinding(instanceOID,
              configRow.getSnmp4jAgentHBCtrlEvents());
          snmp4jAgentHBEvent(notificationOriginator, context,
                             new VariableBinding[] {eventVB});
        }
        else {
          cancel();
          configRow.getSnmp4jAgentHBCtrlRowStatus().setValue(RowStatus.notInService);
        }
      }
      else {
        cancel();
      }
    }
  }

//--AgentGen END

//--AgentGen BEGIN=_END
//--AgentGen END
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -