// Home | Go Back //

/*
 * Copyright (c) 2002-2003 iReasoning Inc. All Rights Reserved.
 * 
 * This SOURCE CODE FILE, which has been provided by iReasoning Inc. as part
 * of an iReasoning Software product for use ONLY by licensed users of the product,
 * includes CONFIDENTIAL and PROPRIETARY information of iReasoning Inc.  
 *
 * USE OF THIS SOFTWARE IS GOVERNED BY THE TERMS AND CONDITIONS 
 * OF THE LICENSE STATEMENT AND LIMITED WARRANTY FURNISHED WITH
 * THE PRODUCT.
 *
 * IN PARTICULAR, YOU WILL INDEMNIFY AND HOLD IREASONING SOFTWARE, ITS
 * RELATED COMPANIES AND ITS SUPPLIERS, HARMLESS FROM AND AGAINST ANY
 * CLAIMS OR LIABILITIES ARISING OUT OF THE USE, REPRODUCTION, OR
 * DISTRIBUTION OF YOUR PROGRAMS, INCLUDING ANY CLAIMS OR LIABILITIES
 * ARISING OUT OF OR RESULTING FROM THE USE, MODIFICATION, OR
 * DISTRIBUTION OF PROGRAMS OR FILES CREATED FROM, BASED ON, AND/OR
 * DERIVED FROM THIS SOURCE CODE FILE.
 */

package agent.ifmib;
import java.io.*;
import java.util.*;
import com.ireasoning.util.*;
import com.ireasoning.protocol.snmp.*;
import javax.management.*;


/**
 * Agent main class
 */
public class Agent extends SnmpBaseAgent
{
    /**
     * Constructor
     * @param port the server port number agent uses
     * @param configFileName Agent's config file name. If absolute path is not specified, the file will be assumed located under ./config directory or current directory
     */
    public Agent(String configFileName) throws Exception
    {
        super(configFileName);
    }
    
    /**
     * Constructor
     * @param server MBeanServer instance
     * @param port the server port number agent uses
     * @param configFileName Agent's config file name. If absolute path is not specified, the file will be assumed located under ./config directory or current directory
     */
    public Agent(MBeanServer server, int port, String configFileName) throws Exception
    {
        super(server, port, configFileName);
    }

    public static void main(String[] args)
    {
        try
        {
            //make sure only runs on Windows
            String os = System.getProperty("os.name").toUpperCase();
            if(os.indexOf("WINDOWS") < 0)
            {
                System.out.println( "The purpose of this demo is to demononstrate how to create a simple agent. To make it as simple as possible, it makes use of windows' \"ipconfig\" command to figure out interfaces instead of making native calls, so it can only run correctly on Windows, although snmpagent.jar itself is platform independent.");
                return;
            }
            // use SnmpAgent.xml on ./config directory
            String configFile = "SnmpAgent.xml";
            Agent agent = new Agent(configFile);
        }
        catch(Exception e)
        {
            Logger.error(e);
            System.exit(1);
        }
    }
    
    /**
     * Sets the MIB tree data structure. This method gets called by base class
     */
    protected void setOIDTree()
    {
        _root = OIDTree.getTree();
    }
    
    /**
     * Register necessary MBeans
     */
    protected void registerMBeans() throws SnmpException
    {
        AgentMib.registerMBeans(_mbeanServer, _root);
    }
    
}