All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.snmp4j.agent.mo.ext.SimMOFactory Maven / Gradle / Ivy

There is a newer version: 3.8.1
Show newest version
/*_############################################################################
  _## 
  _##  SNMP4J-Agent 3 - SimMOFactory.java  
  _## 
  _##  Copyright (C) 2005-2018  Frank Fock (SNMP4J.org)
  _##  
  _##  Licensed under the Apache License, Version 2.0 (the "License");
  _##  you may not use this file except in compliance with the License.
  _##  You may obtain a copy of the License at
  _##  
  _##      http://www.apache.org/licenses/LICENSE-2.0
  _##  
  _##  Unless required by applicable law or agreed to in writing, software
  _##  distributed under the License is distributed on an "AS IS" BASIS,
  _##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  _##  See the License for the specific language governing permissions and
  _##  limitations under the License.
  _##  
  _##########################################################################*/

package org.snmp4j.agent.mo.ext;

import org.snmp4j.agent.mo.*;
import org.snmp4j.agent.MOAccess;
import java.util.Map;
import java.util.HashMap;

/**
 * A SimMOFactory object can be used to create non-default MOAccess
 * instances which support an agent simulation mode which allows the
 * modification of MIB objects at runtime via SNMP that are not writable in
 * normal operation but writable in a special config mode (see
 * AGENTPP-SIMULATION-MIB).
 * 

* By creating the ManagedObject instances for a MIB module based on this * factory the injected special MOAccess instances support changing the * operation mode for these instances from normal operation to simulation * mode. In simulation mode, an agent can be filled with data via SNMP * regardless whether the objects are defined as writable or not. Such a * simulation agent can be used for testing/developing management applications * when real agents are not (physically) available. * * @author Frank Fock * @version 1.0 */ public class SimMOFactory extends DefaultMOFactory { private Map accessModes = new HashMap(); private static boolean simulationModeEnabled; private static SimMOFactory instance; protected SimMOFactory() { } public synchronized static MOFactory getInstance() { if (instance == null) { instance = new SimMOFactory(); } return instance; } public static void setSimulationModeEnabled(boolean simulationMode) { simulationModeEnabled = simulationMode; } public static boolean isSimulationModeEnabled() { return simulationModeEnabled; } public synchronized MOAccess createAccess(int moAccess) { MOAccess accessObj = accessModes.get(moAccess); if (accessObj == null) { accessObj = new SimMOAccess(moAccess); accessModes.put(moAccess, accessObj); } return accessObj; } public class SimMOAccess extends MOAccessImpl { public SimMOAccess(int moAccess) { super(moAccess); } public boolean isAccessibleForCreate() { if (isSimulationModeEnabled()) { return true; } return super.isAccessibleForCreate(); } public boolean isAccessibleForWrite() { if (isSimulationModeEnabled()) { return true; } return super.isAccessibleForWrite(); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy