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

📄 startnetpeergroup.java

📁 jxta_src_2.41b jxta 2.41b 最新版源码 from www.jxta.org
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * 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. * * $Id: StartNetPeerGroup.java,v 1.46 2006/06/21 19:42:19 bondolo Exp $ */package net.jxta.impl.peergroup;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Enumeration;import java.util.Hashtable;import java.util.Vector;import net.jxta.id.ID;import net.jxta.protocol.ModuleImplAdvertisement;import net.jxta.protocol.PeerAdvertisement;import net.jxta.protocol.PeerGroupAdvertisement;import net.jxta.discovery.DiscoveryService;import net.jxta.peergroup.PeerGroup;import net.jxta.peergroup.PeerGroupFactory;import net.jxta.document.Advertisement;import net.jxta.document.AdvertisementFactory;import net.jxta.platform.Application;import net.jxta.exception.PeerGroupException;/** * This code is responsible for configuring and starting the NetPeerGroup. * * <p/>Right now it starts an standard peergroup. * *  @deprecated The World Peer Group behaviour which starts the net peer group *  when the startApp() method has long been deprecated and hard to access given *  how PeerGroupFactory is commonly used. The StartNetPeerGroup behaviour will *  be removed in a future release. */public class StartNetPeerGroup implements Application {    PeerGroup pg;    ID assignedID;    Advertisement impl;    /**     *  {@inheritDoc}     */    public void stopApp() {}                                                                private synchronized void delay() {        try {            wait(2000);        } catch (Exception e) {}    }    /**     *  {@inheritDoc}     */    public void init(PeerGroup pg, ID assignedID, Advertisement impl)    throws PeerGroupException {        this.pg = pg;        this.assignedID = assignedID;        this.impl = impl;    }    /**     *  {@inheritDoc}     */    public int startApp(String[] arg) {        try {            // Attempt the recover the NetPeerGroup from a saved adv.            PeerGroupAdvertisement npgAdv = null;            // Look for the NetPeerGroup ADV on the net. In theory, there            // should be some authoritative source for it. That is, whatever            // advertisement named "NetPeerGroup" that you find, should describe            // the same group with the same GID. In practice, for now, anyone            // is an authoritative source, so there might be competing versions            // seeded by different people who did not find any instance around            // at some point in time and decided to seed it.            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));            // Offer the newbie mode; others know what to do.            // That is, race against the boot to type "D<enter>"            // before we run that code below...            boolean doDisco = false;            String answer = "";            try {                if (in.ready()) {                    answer = in.readLine();                    if (answer.equals("D")) {                        doDisco = true;                    }                }            } catch (Exception e) {}            // If the user typed "D", we'll do discovery anyhow.            // otherwise, we'll try to be smart; if there ever was            // a NetPeerGroup other than the default instantiated            // here, we'll assume that the user uses discovery for the            // netPeerGroup. Otherwise, we'll assume that the user            // just always uses the hardwired default.            boolean beSmart = false;            Hashtable advs = new Hashtable();            boolean first = true;            DiscoveryService disco = null;            disco = pg.getDiscoveryService();            // Until we find something or the user decides to make a choice.            try {                while (in.ready()) in.readLine();            } catch (Exception e) {}            int loop = 0;            while (true) {                try {                    if (in.ready()) {                        break;                    }                } catch (Exception e) {                    break;                }                if (first) {                    System.out.println("Looking for NetPeerGroup advertisements.");                    if (doDisco) {                        System.out.println("Press <enter> to stop looking and "                                           + "choose.");                    }                }                Enumeration ae = null;                try {                    if (first) {                        ae = disco.getLocalAdvertisements(DiscoveryService.GROUP                                                          , "Name"                                                          , "NetPeerGroup");                    } else {                        if (loop++ % 5 == 0)                            disco.getRemoteAdvertisements(null                                                          , DiscoveryService.GROUP                                                          , "Name"                                                          , "NetPeerGroup",10);                        delay();                        ae = disco.getLocalAdvertisements(DiscoveryService.GROUP                                                          , "Name"                                                          , "NetPeerGroup");                    }                } catch (IOException e) {                    // found nothing!  move on                }                first = false;                while (ae != null && ae.hasMoreElements()) {                    PeerGroupAdvertisement a =                        (PeerGroupAdvertisement) ae.nextElement();                    if (a.getName().equals("NetPeerGroup")) {                        String kw = a.getDescription();                        if (kw == null) kw = "";                        if (! advs.containsKey(kw+a.getPeerGroupID().toString())) {                            String self = " ";                            // Do a quick lookup for a past local instantiation.                            // May not find anything if we do not publish padvs                            // in the parent grp.                            Enumeration paEnum = (new Vector()).elements();

⌨️ 快捷键说明

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