workspacediscovery.java

来自「基于jxta的P2P框架的系统」· Java 代码 · 共 90 行

JAVA
90
字号
package connex.core.WS;

import net.jxta.peergroup.*;
import net.jxta.discovery.*;
import net.jxta.protocol.*;
import java.util.*;
import net.jxta.document.*;

public class WorkspaceDiscovery extends Thread implements DiscoveryListener{

    private DiscoveryService discovery;

 //
    /**
     * @directed
     */
    private WorkspaceSearchListener dlistener;
    private String peerid = null;
    private int type = DiscoveryService.GROUP;
    private String attribute = null;
    private String value = null;
    private PeerGroup peerGroup;
    private int max = 0;
    private boolean b = true;
    private int myQueryID;
    public WorkspaceDiscovery(WorkspaceSearchListener dlistener) {
        this.dlistener = dlistener;

        this.discovery = Boot.netPeerGroup.getDiscoveryService();

    }

    public void activateDicovery(String value){
        this.value = value;
        this.start();

    }
    protected void deactivatediscovery(WorkspaceSearchListener dlistener){
        discovery.removeDiscoveryListener(this);
    }

    public void run() {

        try {
            // Add ourselves as a DiscoveryListener for DiscoveryResponse events
            discovery.addDiscoveryListener(this);

            System.out.println("Discovery Service started...");
            while (max < 5) {
                // wait a bit before sending a discovery message
                max++;

                System.out.println("Sending a Discovery Message");
                // look for any peergroup

                myQueryID = discovery.getRemoteAdvertisements(
                        null,
                        DiscoveryService.GROUP ,
                         "Name",
                        "ConneX: "+value+ "*",
                        20);
                try {
                    Thread.sleep(5 * 1000); //5 sec
                } catch (Exception e) {
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void discoveryEvent(DiscoveryEvent ev) {
           DiscoveryResponseMsg msg = ev.getResponse();
           int advCount = msg.getResponseCount();

           System.out.println(advCount + " Workspaces found");
           Enumeration enumer = msg.getAdvertisements();

           while (enumer.hasMoreElements()) {

               Object obj = enumer.nextElement();

               PeerGroupAdvertisement adv = (PeerGroupAdvertisement) obj;
               System.out.println("Workspace found: " + adv.getName() );
             dlistener.receiveWorkspace(new Workspace(adv)) ;
           }

    }

}

⌨️ 快捷键说明

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