1 /*_############################################################################ 2 _## 3 _## SNMP4J - BERSerializable.java 4 _## 5 _## Copyright 2003-2007 Frank Fock and Jochen Katz (SNMP4J.org) 6 _## 7 _## Licensed under the Apache License, Version 2.0 (the "License"); 8 _## you may not use this file except in compliance with the License. 9 _## You may obtain a copy of the License at 10 _## 11 _## http://www.apache.org/licenses/LICENSE-2.0 12 _## 13 _## Unless required by applicable law or agreed to in writing, software 14 _## distributed under the License is distributed on an "AS IS" BASIS, 15 _## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 _## See the License for the specific language governing permissions and 17 _## limitations under the License. 18 _## 19 _##########################################################################*/ 20 21 package org.snmp4j.asn1; 22 23 import java.io.*; 24 25 /** 26 * The interface <code>BERSerializable</code> has to be implemented by 27 * any data type class that needs to be serialized using the Basic Encoding 28 * Rules (BER) that provides enconding rules for ASN.1 data types. 29 * 30 * @author Jochen Katz & Frank Fock 31 * @version 1.0 32 */ 33 public interface BERSerializable /*extends Serializable*/ { 34 35 /** 36 * Returns the length of this <code>BERSerializable</code> object 37 * in bytes when encoded according to the Basic Encoding Rules (BER). 38 * @return 39 * the BER encoded length of this variable. 40 */ 41 int getBERLength(); 42 43 /** 44 * Returns the length of the payload of this <code>BERSerializable</code> object 45 * in bytes when encoded according to the Basic Encoding Rules (BER). 46 * @return 47 * the BER encoded length of this variable. 48 */ 49 int getBERPayloadLength(); 50 51 /** 52 * Decodes a <code>Variable</code> from an <code>InputStream</code>. 53 * @param inputStream 54 * an <code>InputStream</code> containing a BER encoded byte stream. 55 * @throws IOException 56 * if the stream could not be decoded by using BER rules. 57 */ 58 void decodeBER(BERInputStream inputStream) throws IOException; 59 60 /** 61 * Encodes a <code>Variable</code> to an <code>OutputStream</code>. 62 * @param outputStream 63 * an <code>OutputStream</code>. 64 * @throws IOException 65 * if an error occurs while writing to the stream. 66 */ 67 void encodeBER(OutputStream outputStream) throws IOException; 68 69 } 70