directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From wesmck...@apache.org
Subject svn commit: rev 6326 - incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber
Date Tue, 27 Jan 2004 21:08:06 GMT
Author: wesmckean
Date: Tue Jan 27 13:08:06 2004
New Revision: 6326

Added:
   incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/TLVHandler.java
Log:
Base TLV handler interface for ASN.1 tool.

Added: incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/TLVHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/TLVHandler.java
Tue Jan 27 13:08:06 2004
@@ -0,0 +1,117 @@
+/*
+
+ ============================================================================
+                   The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of  source code must  retain the above copyright  notice,
+    this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+    include  the following  acknowledgment:  "This product includes  software
+    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
+    Alternately, this  acknowledgment may  appear in the software itself,  if
+    and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Eve Directory Server", "Apache Directory Project", "Apache Eve" 
+    and "Apache Software Foundation"  must not be used to endorse or promote
+    products derived  from this  software without  prior written
+    permission. For written permission, please contact apache@apache.org.
+
+ 5. Products  derived from this software may not  be called "Apache", nor may
+    "Apache" appear  in their name,  without prior written permission  of the
+    Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
+ APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
+ ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
+ (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software  consists of voluntary contributions made  by many individuals
+ on  behalf of the Apache Software  Foundation. For more  information on the
+ Apache Software Foundation, please see <http://www.apache.org/>.
+
+*/
+package org.apache.snickers.ber;
+
+import org.apache.commons.codec.DecoderException;
+
+/**
+ * Basic interface for handling TLVs from the TLVParser.  The order of event firing
+ * will normally (always) consist of:
+ * 
+ *      beginTag, length, data, received, endTag
+ *
+ * @author <a href="mailto:wesmckean@apache.org">Wes McKean</a>
+ * @author $Author$
+ * @version $Rev$
+ */
+public interface TLVHandler {
+    /**
+     * Fired by the TLVParser to indicate that a new TLV is being decoded
+     * 
+     * @param typeClass a type class object representing one of the four ASN.1 type classes
+     * @param id The encoded structure id.  Not all encoded values will have an associated
id
+     * @param isPrimative a boolean indicating that this value is a primitive
+     * @throws DecoderException if an error occurs during handling
+     */
+    public void beginTag( TypeClass typeClass, int id, boolean isPrimative ) throws DecoderException;
+    
+    /**
+     * Fired by the TLVParser to indicate that the processing of the current TLV has been
completed
+     * 
+     * @param typeClass a type class object representing one of the four ASN.1 type classes
+     * @param id The encoded structure id.  Not all encoded values will have an associated
id
+     * @throws DecoderException if an error occurs during handling
+     */
+    public void endTag( TypeClass typeClass, int id ) throws DecoderException;
+
+    /**
+     * Fired by the TLVParser to indicate the length of the V portion of the TLV structure.
 Per the
+     * ASN.1 spec, there are three seperate encoding forms:  short, long, indefinite.  Please
note that
+     * the length will be zero if the form is indefinite.
+     * 
+     * @param typeClass a type class object representing one of the four ASN.1 type classes
+     * @param id The encoded structure id.  Not all encoded values will have an associated
id
+     * @param length the length of the V portion of the TLV structure
+     * @throws DecoderException if an error occurs during handling
+     */
+    public void length( TypeClass typeClass, int id, int length ) throws DecoderException;
+    
+    /**
+     * Fired by the TLVParser when data is received.  The data may be all of the required
length,
+     * or it may be coming over in chunks.  In other words, this event may be fired multiple
times.
+     * 
+     * @param typeClass a type class object representing one of the four ASN.1 type classes
+     * @param id The encoded structure id.  Not all encoded values will have an associated
id
+     * @param data the byte data associated with the value
+     * @throws DecoderException if an error occurs during handling
+     */
+    public void data( TypeClass typeClass, int id, byte[] data ) throws DecoderException;
+    
+    /**
+     * Fired by the TLVParser once the entire TLV packet has been received.  This method
may
+     * need to be removed if we think it is going to be too much of a memory hog.
+     * 
+     * @param typeClass a type class object representing one of the four ASN.1 type classes
+     * @param id The encoded structure id.  Not all encoded values will have an associated
id
+     * @param tlv the TLV object which has just finished being parsed.
+     * @throws DecoderException if an error occurs during handling
+     */
+    public void received( TypeClass typeClass, int id, TLV tlv ) throws DecoderException;
+}

Mime
View raw message