/* * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Sun designates this * particular file as subject to the "Classpath" exception as provided * by Sun in the LICENSE file that accompanied this code. * * This code 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 General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */ package com.sun.jmx.snmp.internal; import java.net.InetAddress; import com.sun.jmx.snmp.SnmpSecurityException; import com.sun.jmx.snmp.SnmpTooBigException; import com.sun.jmx.snmp.SnmpStatusException; import com.sun.jmx.snmp.SnmpPdu; import com.sun.jmx.snmp.SnmpMsg; import com.sun.jmx.snmp.internal.SnmpSecurityCache; import com.sun.jmx.snmp.SnmpUnknownSecModelException; import com.sun.jmx.snmp.SnmpBadSecurityLevelException; /** * <P> An <CODE>SnmpOutgoingRequest</CODE> handles the marshalling of the message to send.</P> * <p><b>This API is a Sun Microsystems internal API and is subject * to change without notice.</b></p> * @since 1.5 */ public interface SnmpOutgoingRequest { /** * Returns the cached security data used when marshalling the call as a secure one. * @return The cached data. */ public SnmpSecurityCache getSecurityCache(); /** * Encodes the message to send and puts the result in the specified byte array. * * @param outputBytes An array to receive the resulting encoding. * * @exception ArrayIndexOutOfBoundsException If the result does not fit * into the specified array. */ public int encodeMessage(byte[] outputBytes) throws SnmpStatusException, SnmpTooBigException, SnmpSecurityException, SnmpUnknownSecModelException, SnmpBadSecurityLevelException; /** * Initializes the message to send with the passed Pdu. * <P> * If the encoding length exceeds <CODE>maxDataLength</CODE>, * the method throws an exception.</P> * * @param p The PDU to be encoded. * @param maxDataLength The maximum length permitted for the data field. * * @exception SnmpStatusException If the specified PDU <CODE>p</CODE> is * not valid. * @exception SnmpTooBigException If the resulting encoding does not fit * into <CODE>maxDataLength</CODE> bytes. * @exception ArrayIndexOutOfBoundsException If the encoding exceeds * <CODE>maxDataLength</CODE>. */ public SnmpMsg encodeSnmpPdu(SnmpPdu p, int maxDataLength) throws SnmpStatusException, SnmpTooBigException; /** * Returns a stringified form of the message to send. * @return The message state string. */ public String printMessage(); }