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

📄 messengerservice.java

📁 基于jxta的P2P框架的系统
💻 JAVA
字号:
/**
 * -- Copyright (C) 2006 Hisham Khalil. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 *
 * Author: Hisham Khalil <hishberlin@hotmail.com>
 */

package connex.plugins.Messenger;

import java.util.*;

import javax.swing.*;

import connex.core.Presence.*;
import connex.core.net.*;
import connex.session.plugin.*;
import org.apache.log4j.Logger;
import connex.core.WS.Workspace;
import org.apache.log4j.Level;

public class MessengerService
    implements Plugin, ConnectionServerListener, ServiceListener {
  private final static Logger LOG = org.apache.log4j.Logger.getLogger(
      MessengerService.class.getName());
  private static MessengerService instance = null;
  private Workspace ws=null;
  private ConnectionServer server;
  private boolean started = false;

  /**
   * @directed
   * @supplierCardinality 0..*
   * @clientCardinality 1
   */
  private MessengerSession mSession = null;


  /**
   * @directed
   * @supplierCardinality 0..*
   * @clientCardinality 1
   */


  private static Hashtable<String,
      MessengerSession> sessions = new Hashtable<String,
      MessengerSession> ();
  private Vector<String> requests=new Vector<String>();
  private String serviceID = "MessengerService_V_1.0";
  public MessengerService() {
    instance = this;
  }

  public void initPlugin(Object object) {
    LOG.setLevel(Level.INFO);
   this.ws= (Workspace)  object;
   if (LOG.isEnabledFor(Level.INFO)) {
     LOG.info("MessengerService init success...\n");
   }


  }

  public void startPlugin() {
    if (!started) {
      server = ConnectionFactory.newServer(ws,this);
      PresenceService.getInstance().registerService(this);
      started = true;
      if (LOG.isEnabledFor(Level.INFO)) {
     LOG.info("MessengerService started...\n");
   }

    }
  }

  public JPanel getMainUI() {
    return null;
  }

  public void stopPlugin() {

    if (started) {
      server.stopServer();
      server = null;
      PresenceService.getInstance().removeService(this);
      closeAllSessions();
      started = false;
      if (LOG.isEnabledFor(Level.INFO)) {
     LOG.info("MessengerService stoped...\n");
   }

    }

  }


  public String getID() {
    return serviceID;
  }

  public String getPipe() {
    return server.getPipeID();

  }

  public void createSession(String membId) {

    if (!sessions.containsKey(membId)) {
      // this will send a ServiceRequest Message
      PresenceService.getInstance().getServicePipe(membId,serviceID);
      requests.add(membId);

    }else{
       sessions.get(membId).showWindow();
    }

  }

  public void newConnection(MemberConnection socketSession) {
    //

    mSession = new MessengerSession(socketSession);
    System.out.print("new Messenger Session accepted from: " +
                     socketSession.getRemotPeerID());

  }

  protected void addSession(String ID, MessengerSession ses) {
    sessions.put(ID, ses);

  }

  protected void removeSession(String ID) {

    if (sessions.containsKey(ID)) {
      sessions.remove(ID);
      System.out.println("Removed ");

    }

  }

  public void receivePipe(String name, String membID, String pipeID) {
    LOG.info("new Messenger Session Pipe received from: "+name);

    if (!sessions.containsKey(membID)) {
      if(requests.contains(membID)){
        mSession = new MessengerSession(ws, name, membID, pipeID);
        requests.remove(membID);
      }
    }

  }

  /**
   * close all Sessions
   */
  private void closeAllSessions() {
    Enumeration num = sessions.elements(); ;
    MessengerSession s;
    while (null != num && num.hasMoreElements()) {
      s = ( (MessengerSession) num.nextElement());
      s.stop();
      sessions.remove(s);
    }

  }

  public static MessengerService getInstance() {
    if (instance == null) {
      instance = new connex.plugins.Messenger.MessengerService();
    }
    return instance;
  }



}

⌨️ 快捷键说明

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