01: /*_############################################################################
02: _##
03: _## SNMP4J - BERSerializable.java
04: _##
05: _## Copyright (C) 2003-2008 Frank Fock and Jochen Katz (SNMP4J.org)
06: _##
07: _## Licensed under the Apache License, Version 2.0 (the "License");
08: _## you may not use this file except in compliance with the License.
09: _## 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: }
|