?? messengerservice.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 + -