/* * Copyright (c) 2003, Intracom S.A. - www.intracom.com * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * This package and its source code is available at www.jboss.org **/ package org.jboss.jmx.adaptor.snmp.agent; import javax.management.Notification; /** * <tt>NotificationWrapper</tt> is a "wide" read only interface * providing "unstructured" access to agent internals and paylod carried by * notifications. * * The alternatives were: * * 1. Precompile assumptions regarding the notification stucture and its * payload in the trap factory * 2. Use introspection but with a potential large execution overhead. * * The use of delegated wrappers stands somewhere in the middle. Trap * factory can be extended with the definition and use of new wpappers * that will be able to cope with any kind of notfications. Run time overhead * is minimal as wrappers can be instantiated only once. * * Tags used to locate attributes in the notification fixed (i.e. excluding * user defined fields) payload are defined. Implementations should not use * these tags in any of the notification payload. To avoid conflicts the * following convention is proposed: standard notification payload is qualified * by the "n:" prefix. Agent properties are qualified by the "a:" prefix. User * defined payload can be qualified with e.g. the "u:" prefix * * @version $Revision: 44604 $ * * @author <a href="mailto:spol@intracom.gr">Spyros Pollatos</a> * @author <a href="mailto:dimitris@jboss.org">Dimitris Andreadis</a> **/ public interface NotificationWrapper { // Notification content public static final String MESSAGE_TAG = "n:message"; public static final String SEQNO_TAG = "n:sequenceNumber"; public static final String TSTAMP_TAG = "n:timeStamp"; public static final String TYPE_TAG = "n:type"; public static final String ALL_TAG = "n:all"; public static final String CLASS_TAG = "n:class"; // Agent properties public static final String STARTTIME_TAG = "a:startTime"; public static final String UPTIME_TAG = "a:uptime"; public static final String TRAPCOUNT_TAG = "a:trapCount"; /** * Sets the uptime clock and trap counter **/ public void set(Clock uptime, Counter count); /** * Sets notification to be used as the data source * * @param n the notification to be used as a data source at subsequent calls * of method get **/ public void prime(Notification n); /** * Defines the communication protocol between the caller and the data * source (notification). Implementations are expected to map the provided * attribute name to some aspect of the notification payload. The later is * defined by method prime. * * @param attrTag the tag of the attribute the value of which is required * @return the content attrTag maps to * @throws MappingFailedException if for any reason the requested attribute * can not be found **/ public Object get(String attrTag) throws MappingFailedException; } // interface NotificationWrapper