?? messageprocessor.java
字號:
}
protected synchronized void sendPicUpdate() {
Message msg = PresenceProtocol.createPictureUpdateMessage();
ses.send(msg);
if (LOG.isEnabledFor(Level.INFO)) {
LOG.info(" picUpdateMessage sent");
}
}
protected synchronized void sendServiceReq(String backID, String serviceID) {
Message msg = PresenceProtocol.createServiceReqMessage(serviceID);
try {
ses.sendToBackDoor(backID, msg); // send with back door pipe
if (LOG.isEnabledFor(Level.INFO)) {
LOG.info(" ServiceRequestMessage sent");
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
protected synchronized void sendServiceRes(String backID, String serviceID) {
Message msg = PresenceProtocol.createServiceResMessage(serviceID,
services.get(serviceID).getPipe());
try {
ses.sendToBackDoor(backID, msg); // send with back door pipe
if (LOG.isEnabledFor(Level.INFO)) {
LOG.info(" ServiceResponseMessage sent");
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
/*************************************************************************
Processing
/*************************************************************************/
/**
* processes statusUpdate messages.
* @param id String
* @param status String
* @param backID String
*/
protected void processStatusUpdate(String id, String status,
String backID) {
if (!PresenceService.getInstance().getMemberCollection().
containsKey(id)) {
sendPresenceReq(backID);
} else {
this.updateMember(id, status, null, null, backID);
}
}
/**
* processes presenceRequest messages.
* @param id String
* @param status String
* @param profAdv ProfileAdv
* @param peerAdv PeerAdvertisement
* @param backID String
*/
protected void processpresenceReq(String id, String status,
ProfileAdv profAdv,
PeerAdvertisement peerAdv,
String backID) {
// rigesterMember(id, status, profAdv, peerAdv, backID);
if (!rigesterMember(id, status, profAdv, peerAdv, backID)) {
updateMember(id, status, profAdv, peerAdv, backID);
}
sendPresenceRes(backID);
}
/**
* processes presenceresponce messages.
* @param id String
* @param status String
* @param profAdv ProfileAdv
* @param peerAdv PeerAdvertisement
* @param backID String
*/
protected void processpresenceRes(String id, String status,
ProfileAdv profAdv,
PeerAdvertisement peerAdv,
String backID) {
rigesterMember(id, status, profAdv, peerAdv, backID);
}
/**
* processes presenceUpdate messages.
* @param id String
* @param status String
* @param profAdv ProfileAdv
* @param peerAdv PeerAdvertisement
* @param backID String
*/
protected void processpresenceUpdate(String id, String status,
ProfileAdv profAdv,
PeerAdvertisement peerAdv,
String backID) {
if (!rigesterMember(id, status, profAdv, peerAdv, backID)) {
updateMember(id, status, profAdv, peerAdv, backID);
}
}
/**
*
* @param backId String
* @param serviceID String
*/
protected void processServiceReq(String backId, String serviceID) {
if (services.containsKey(serviceID)) {
this.sendServiceRes(backId, serviceID);
} else {
if (LOG.isEnabledFor(Level.INFO)) {
LOG.info(" unknown ServiceRequest:" + serviceID);
//TODO: option to start or to download the Service.
}
}
}
/**
*
* @param membID String
* @param serviceID String
* @param pipeID String
*/
protected void processServiceRes(String membID, String serviceID,
String pipeID) {
Member memb = PresenceService.getInstance().getMemberCollection().
get(membID);
memb.setService(serviceID, pipeID);
if(services.containsKey(serviceID)){
services.get(serviceID).receivePipe(memb.getName(), membID, pipeID);
}
}
/**
*
* @param backID String
*/
protected void processPicReq(String backID) {
sendPicRes(backID);
}
/**
*
* @param id String
* @param buf byte[]
*/
protected void processPicRes(String id, byte[] buf) {
// ImageIcon img = new ImageIcon(buf);
Member memb = PresenceService.getInstance().getMemberCollection().
get(id);
File file = new File(memb.getPicture());
if (file.exists()) {
file.delete();
}
try {
FileOutputStream out = new FileOutputStream(
PresenceService.getInstance().getPicsFolder() +
File.separator + id.substring(46) + buf.length + ".jpg");
out.write(buf);
//doc.sendToStream(out);
out.flush();
out.close();
} catch (Exception ex) {
System.out.print("Picture not saved: " + ex.getMessage());
}
memb.setPicture(
PresenceService.getInstance().getPicsFolder() +
File.separator + id.substring(46) + buf.length + ".jpg");
}
/**
*
* @param id String
* @param status String
* @param backID String
*/
protected void processPicUpdate(String id, String status,
String backID) {
//rigesterMember(id, status, null, null, backID);
if (!PresenceService.getInstance().getMemberCollection().
containsKey(id)) {
sendPresenceReq(backID);
}else{
PresenceService.getInstance().getMemberCollection().
get(id).pictureUpdated();
}
}
/**
* regesteration of new Members
* @param id String
* @param status String
* @param pAdv ProfileAdv
* @param peerAdv PeerAdvertisement
* @param backID String
* @return boolean
*/
protected boolean rigesterMember(String id, String status,
ProfileAdv pAdv,
PeerAdvertisement peerAdv,
String backID) {
if (!PresenceService.getInstance().getMemberCollection().
containsKey(id)) {
Member memb = new Member();
memb.setID(id);
memb.setStatus(status);
memb.setPresenceBackDoorID(backID);
if (pAdv != null) {
memb.setProfilAdv(pAdv);
}
if (peerAdv != null) {
memb.setPeerAdv(peerAdv);
}
if (memb.getProfileAdv() == null) {
sendPresenceReq(backID);
}
if (LOG.isEnabledFor(Level.INFO)) {
LOG.info(" new Member name: " + memb.getName() + "Status: " +
status);
}
PresenceService.getInstance().getMemberCollection().put(id,
memb);
PresenceEvent e = new PresenceEvent(status, memb.getName(),
id);
this.informNewMember(e); // event
return true;
}
return false;
}
protected void updateMember(String id, String status,
ProfileAdv pAdv,
PeerAdvertisement peerAdv,
String backID) {
Member memb = PresenceService.getInstance().getMemberCollection().
get(id);
memb.setID(id);
memb.setStatus(status);
memb.setPresenceBackDoorID(backID);
if (pAdv != null) {
memb.setProfilAdv(pAdv);
}
if (peerAdv != null) {
memb.setPeerAdv(peerAdv);
}
if (memb.getProfileAdv() == null) {
sendPresenceReq(backID);
}
if (LOG.isEnabledFor(Level.INFO)) {
LOG.info(" memberUpdated name: " + memb.getName() + " Status: " +
status);
}
PresenceEvent e = new PresenceEvent(status, memb.getName(),
id);
this.informUpdateMember(e); // event
}
/**
*
* @param presenceListener PresenceListener
*/
public void attach(PresenceListener presenceListener) {
presenceListenersVector.addElement(presenceListener);
}
/**
*
* @param presenceListener PresenceListener
*/
public void detach(PresenceListener presenceListener) {
presenceListenersVector.removeElement(presenceListener);
}
/**
*
* @param serviceId String
* @param serviceListener ServiceListener
*/
public void attachService(String serviceId, ServiceListener serviceListener) {
services.put(serviceId, serviceListener);
}
public void detachService(ServiceListener serviceListener) {
services.remove(serviceListener);
}
public void informNewMember(PresenceEvent e) {
java.util.Enumeration enumeration = presenceListeners();
while (enumeration.hasMoreElements()) {
((PresenceListener) enumeration.nextElement()).newMember(e);
}
}
public void informUpdateMember(PresenceEvent e) {
java.util.Enumeration enumeration = presenceListeners();
while (enumeration.hasMoreElements()) {
((PresenceListener) enumeration.nextElement()).updateMember(e);
}
}
/**
*
* @return Enumeration
*/
public Enumeration presenceListeners() {
return ((java.util.Vector) presenceListenersVector.clone()).
elements();
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -