1 /*_############################################################################ 2 _## 3 _## SNMP4J - MessageLengthDecoder.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 22 package org.snmp4j.transport; 23 24 import java.nio.ByteBuffer; 25 import java.io.IOException; 26 27 /** 28 * The <code>MessageLengthDecoder</code> needs to be implemented for connection 29 * oriented transport mappings, because those transport mappings have no message 30 * boundaries. To determine the message length, the message header is decoded 31 * in a protocol specific way. 32 * 33 * @author Frank Fock 34 * @version 1.7 35 * @since 1.7 36 */ 37 public interface MessageLengthDecoder { 38 39 /** 40 * Returns the minimum length of the header to be decoded. Typically this 41 * is a constant value. 42 * @return 43 * the minimum length in bytes. 44 */ 45 int getMinHeaderLength(); 46 47 /** 48 * Returns the total message length to read (including header) and 49 * the actual header length. 50 * @param buf 51 * a ByteBuffer with a minimum of {@link #getMinHeaderLength()}. 52 * @return 53 * the total message length in bytes and the actual header length in bytes. 54 * @throws IOException 55 * if the header cannot be decoded. 56 */ 57 MessageLength getMessageLength(ByteBuffer buf) throws IOException; 58 59 } 60