⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rendezvouspropagatemessage.java

📁 jxme的一些相关程序,主要是手机上程序开发以及手机和计算机通信的一些程序资料,程序编译需要Ant支持
💻 JAVA
字号:
/*
 *  $Id: RendezVousPropagateMessage.java,v 1.8 2002/05/17 15:52:11 hamada Exp $
 *
 *  Copyright (c) 2001 Sun Microsystems, Inc.  All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, 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
 *  Sun Microsystems, Inc. for Project JXTA."
 *  Alternately, this acknowledgment may appear in the software itself,
 *  if and wherever such third-party acknowledgments normally appear.
 *
 *  4. The names "Sun", "Sun Microsystems, Inc.", "JXTA" and "Project JXTA"
 *  must not be used to endorse or promote products derived from this
 *  software without prior written permission. For written
 *  permission, please contact Project JXTA at http://www.jxta.org.
 *
 *  5. Products derived from this software may not be called "JXTA",
 *  nor may "JXTA" appear in their name, without prior written
 *  permission of Sun.
 *
 *  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 SUN MICROSYSTEMS OR
 *  ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 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 Project JXTA.  For more
 *  information on Project JXTA, please see
 *  <http://www.jxta.org/>.
 *
 *  This license is based on the BSD license adopted by the Apache Foundation.
 */

package net.jxta.impl.rendezvous;
import java.io.*;

import java.net.*;
import java.util.*;
import net.jxta.document.*;
import org.apache.log4j.Category; 
import org.apache.log4j.Priority;

/**
 *  This class defines the wire format of the Propagation header for messages.
 */

public class RendezVousPropagateMessage {
   
        /**
         *  Description of the Field
         */
        public final static String TTLTag = "TTL";
        /**
         *  Description of the Field
         */
        public final static String PathTag = "Path";
        public final static String DestSNameTag = "DestSName";
        public final static String DestSParamTag = "DestSParam";
        public static final String MsgIdTag = "MessageId";
	private MimeMediaType textXml = new MimeMediaType("text/xml");

        /**
         *  Description of the Field
         */
        public final static String Name = "RendezVousPropagate";

        private Vector path = null;
        private int TTL = 0;
        private String destSName = null;
        private String destSParam = null;
        private String msgId = null;


        /**
         *  Constructor for the RendezVousPropagateMessage object
         *
         *@since
         */
        public RendezVousPropagateMessage() {
                path = new Vector();
        }

        /**
         *  Constructor for the RendezVousPropagateMessage object
         *
         *@param  ip  Description of Parameter
         *@since
         */
        public RendezVousPropagateMessage( InputStream ip ) {

                StructuredDocument doc = createDoc( ip );

                Enumeration enum = null;
                Vector tmp = new Vector();
                TextElement e = null;

                enum = doc.getChildren();
                if ( ( enum == null ) || ( !enum.hasMoreElements() ) ) {
                        return;
                }

                while ( enum.hasMoreElements() ) {
                        e = (TextElement) enum.nextElement();
                        try {
                                if ( e.getName().equals( TTLTag ) ) {
                                        TTL = Integer.parseInt( e.getTextValue() );
                                        continue;
                                }

                                if ( e.getName().equals( PathTag ) ) {
                                        tmp.addElement( e.getTextValue() );
                                        continue;
                                }

                                if ( e.getName().equals( DestSNameTag ) ) {
				        destSName =  (String) e.getTextValue();
                                        continue;
                                }
                                if ( e.getName().equals( DestSParamTag ) ) {
				        destSParam =  (String) e.getTextValue();
                                        continue;
                                }

				if (e.getName().equals (MsgIdTag)) {
				    msgId = e.getTextValue();
				    continue;
				}

                        } catch ( Exception ee ) {
                        }
                }

                // build a smaller vector;
                path = new Vector( tmp.size() );
                for ( int i = 0; i < tmp.size(); ++i ) {
                        try {
                                path.addElement( tmp.elementAt( i ) );
                        } catch ( Exception ee ) {
                                continue;
                        }
                }
        }

        /**
         *  Sets the path attribute of the RendezVousPropagateMessage object
         *
         *@param  p  The new path value
         *@since
         */
        public void setPath( Vector p ) {
                path = p;
        }

        /**
         *  Sets the tTL attribute of the RendezVousPropagateMessage object
         *
         *@param  t  The new tTL value
         *@since
         */
        public void setTTL( int t ) {
                TTL = t;
        }


    public void setMsgId (String id) {
	msgId = new String (id);
    }

    public String getMsgId () {
	return msgId;
    }


    public String getDestSName () {
	return destSName;
    }

    public void setDestSName (String sName) {
	this.destSName = sName;
    }

    public String getDestSParam () {
	return destSParam;
    }

    public void setDestSParam (String sParam) {
	this.destSParam = sParam;
    }

        /**
         *  Gets the inputStream attribute of the RendezVousPropagateMessage
         *  object
         *
         *@return    The inputStream value
         *@since
         */
    public InputStream getInputStream() {
	
	StructuredDocument doc = createDoc();
	if ( doc == null ) {
	    return null;
	}
	Element e = null;
	
	e = doc.createElement( TTLTag, Integer.toString( TTL ) );
	doc.appendChild( e );

	e = doc.createElement( DestSNameTag, destSName );
	doc.appendChild( e );

	e = doc.createElement( DestSParamTag, destSParam );
	doc.appendChild( e );

	if ( path != null ) {
	    for ( int i = 0; i < path.size(); ++i ) {
		try {
		    e = doc.createElement( PathTag,
					   (String) path.elementAt( i ) );
		    doc.appendChild( e );
		} catch ( Exception ee ) {
		    continue;
		}
	    }
	}

	e = doc.createElement (MsgIdTag, msgId);
	doc.appendChild (e);

	try {
	    return doc.getStream();
	} catch ( Exception ee ) {
	    return null;
	}
    
}

    /**
     *  Gets the path attribute of the RendezVousPropagateMessage object
     *
     *@return    The path value
     *@since
     */
    public Vector getPath() {
	return path;
    }

    /**
     *  Gets the tTL attribute of the RendezVousPropagateMessage object
     *
     *@return    The tTL value
     *@since
     */
    public int getTTL() {
	return TTL;
    }

    /**
     *  Adds a feature to the ToPath attribute of the
     *  RendezVousPropagateMessage object
     *
     *@param  e  The feature to be added to the ToPath attribute
     *@since
     */
    public void addToPath( String e ) {
	path.addElement( e );
    }

    /**
     *  Description of the Method
     *
     *@param  e  Description of Parameter
     *@return    Description of the Returned Value
     *@since
     */
    public boolean hasInPath( String e ) {
	return path.contains( e );
    }

    /**
     *  Description of the Method
     *
     *@return    Description of the Returned Value
     *@since
     */
    private StructuredDocument createDoc() {
	try {
	    return StructuredDocumentFactory.newStructuredDocument(
			   textXml, "jxta:RendezVousPropagateMessage" );
	} catch ( Exception everything ) {
	    return null;
	}
    }

    /**
     *  Description of the Method
     *
     *@param  ip  Description of Parameter
     *@return     Description of the Returned Value
     *@since
     */
    private StructuredDocument createDoc( InputStream ip ) {
	try {
	    return StructuredDocumentFactory.newStructuredDocument(
				 textXml, ip );
	} catch ( Exception everything ) {
	    return null;
	}
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -