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

📄 workspacesession.java

📁 基于jxta的局域网P2P文件共享,可以实现局域网中的文件p2p共享,实现文件快速传输及交流
💻 JAVA
字号:
package connex.session;

import connex.core.WS.Workspace;

import connex.core.WS.WorkspaceManager;
import connex.core.Presence.PresenceService;
import java.util.Enumeration;
import connex.session.desktop.Desktop;
import java.io.*;
import connex.session.desktop.BuddyList;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;


import javax.swing.ImageIcon;


import javax.swing.JToggleButton;

import connex.core.WS.RendezvousTracker;
import connex.core.WS.RdvListener;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import connex.session.plugin.PluginManager;
import connex.session.plugin.PluginDescriptor;
import connex.session.plugin.PluginAction;
import java.net.URL;
import java.net.*;
import java.awt.Image;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: FH-Dortmund</p>
 *
 * @author not attributable
 * @version 1.0
 */
public class WorkspaceSession implements RdvListener {
    //private Workspace ws = null;
    //private Desktop desktop = null;
    private boolean running = false;
    private Desktop desktop;
    private Workspace ws;
    private RendezvousStatus t;
    private RendezvousTracker rt;
    static final Logger LOG = Logger.getLogger(WorkspaceSession.class);

    public WorkspaceSession(Workspace ws) {
        this.ws = ws;
        ws.getPeerGroup().getRendezVousService().setAutoStart(true, 1000 * 60 * 2);

        LOG.setLevel(Level.INFO);
    }

    protected void start() {
        // WorkspaceSessionManager

        desktop = new Desktop();
        // desktop.pack();
       desktop.showDesktop();

        desktop.setTitle(ws.getPeerAdv().getName() + "@" + ws.getName() +
                         ": ConneX 1.0");

        desktop.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                this_windowClosing(e);
            }
        });
        BuddyList bl = new BuddyList("Workspace");
        desktop.setBuddyList(bl);

        try {
            PresenceService.getInstance().init(ws);
            PresenceService.getInstance().addListener(bl);
            PresenceService.getInstance().start();
        } catch (IOException ex) {
        }

        loadPlugins();
        rt = new RendezvousTracker(ws.getPeerGroup());
        rt.addListener(this);
        t = new RendezvousStatus();
        t.start();
        running = true;

    }


    protected void stop() {
        unloadPlugins();
        System.out.println(Runtime.getRuntime().totalMemory() + " : " +
                           Runtime.getRuntime().freeMemory()); ;

        PresenceService.getInstance().stop();
        WorkspaceManager.getInstance().leaveCurrentWorkspace();
        desktop.dispose();
        System.out.println(Runtime.getRuntime().totalMemory() + " : " +
                           Runtime.getRuntime().freeMemory());
        rt.removeListener(this);
        running = false;
        t.interrupt();

    }


    public boolean isRunning() {
        return running;
    }

    public Desktop getDesktop() {
        return desktop;
    }

    public Workspace getWorkspace() {
        return ws; }

    private void unloadPlugins() {

        try {
            PluginManager.getInstance().unloadPlugins();
        } catch (Exception ex) {
        }
        System.gc();
    }

    private void loadPlugins() {
        File f = new File("plugins");
        PluginManager.getInstance().loadPlugins(f.getAbsolutePath());

        JToggleButton bt = null;

        Enumeration pluginsnum = null;
        try {
            pluginsnum = (Enumeration) PluginManager.getInstance().getDescriptors().
                         iterator();

            while (pluginsnum.hasMoreElements()) {
                PluginDescriptor pd = (PluginDescriptor) pluginsnum.nextElement();

                bt = new JToggleButton(new PluginAction(this, pd));
                bt.setIcon(pd.getIcon());

                bt.setActionCommand(pd.getId());
                bt.setOpaque(false);
                bt.setToolTipText(pd.getName());
                desktop.getPluginContainer().add(bt);

            }
        } catch (Exception ex1) {
        }
    }


    public void this_windowClosing(WindowEvent e) {
        stop();

    }

    public void update(String e) {

        if (LOG.isEnabledFor(Level.INFO)) {
            LOG.info("RendezvousEvent :" + ws.getName() + " : " + e);
            LOG.info("RendezvousEvent :" + rt.getConnectedRdvID());
        }

    }

    private class RendezvousStatus extends Thread {
        public void run() {
            while (running) {
                desktop.statusBar.setText("isRendezvous : " +
                                          ws.getPeerGroup().isRendezvous());
                try {
                    Thread.sleep(1000 * 60);
                } catch (InterruptedException ex) {
                }
            }
        }
    }


}

⌨️ 快捷键说明

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