?? presenceprotocol.java
字號:
package connex.core.Presence;
import java.io.*;
import net.jxta.document.*;
import net.jxta.endpoint.*;
public class PresenceProtocol {
protected static String version = "1.0";
/* status */
protected static String ONLINE = "online";
protected static String OFFLINE = "offline";
protected static String BUSY = "busy";
/* Message types*/
protected static String presenceRequest = "presenceReq";
protected static String presenceResponse = "presencefResp";
protected static String presenceUpdate = "presenceUpdate";
protected static String ping = "ping";
protected static String statusUpdate = "statusUpdate";
protected static String serviceRequest = "serviceReq";
protected static String serviceResponse = "serviceResp";
protected static String pictureRequest = "picReq";
protected static String pictureUpdate = "picUpdate";
protected static String pictureResponse = "picResp";
/*
* PresenceService also defines it own protocol. Requests arrive as a JXTA
* Message with the following elements:
*/
//Protocol header
protected static String nameSpace = "ConneXPresence";
protected static String versionTag = "version";
protected static final String membIDTag = "MemberID";
protected static final String backDoorTag = "backDoorID";
protected static final String typeTag = "type";
//protocol data
public static final String statusTag = "status";
public static final String profileTag = "ProfileAdv";
public static final String peerTag = "peerAdv";
public static final String serviceTag = "serviceID";
public static final String servicePipeTag = "PipeID";
public static final String pictureTag = "picture";
/**
* creates a ProfileMessage
* @param type String
* @return Message
*/
protected static Message createPresenceMessage(String type) {
Message msg = createMessage(type);
/* status */
msg.addMessageElement(PresenceProtocol.nameSpace,
new
StringMessageElement(PresenceProtocol.
statusTag,
PresenceProtocol.ONLINE, null));
/*profilAdv*/
msg.addMessageElement(PresenceProtocol.nameSpace,
new TextDocumentMessageElement(
PresenceProtocol.
profileTag,
(XMLDocument) PresenceService.
getInstance().
getmOwnPprofileAdv().
getDocument(MimeMediaType.XMLUTF8), null));
/* peerAdv*/
msg.addMessageElement(PresenceProtocol.nameSpace,
new TextDocumentMessageElement(
PresenceProtocol.
peerTag,
(XMLDocument) PresenceService.
getInstance().
getmOwnPeerAdv().
getDocument(MimeMediaType.XMLUTF8), null));
return msg;
}
/**
* creates PictureResponseMessage
* @return Message
*/
protected static Message createPictureResponseMessage() {
Message msg = PresenceProtocol.createMessage(PresenceProtocol.pictureResponse);
int buffSize = 24 * 1024;
int length = 0;
byte[] buff = new byte[buffSize];
try {
FileInputStream in = new FileInputStream(System.getProperty(
"JXTA_HOME") + File.separator +
"MyImg.jpg");
length = in.read(buff);
in.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
//xxx file not found? send a noPic message.
return null;
}
msg.addMessageElement(PresenceProtocol.nameSpace,
new ByteArrayMessageElement(PresenceProtocol.
pictureTag,
MimeMediaType.AOS, buff, 0, length, null));
return msg;
}
/**
* creates a new Message with header
* @return Message
* @param type String
* @return Message
*/
protected static Message createMessage(String type) {
Message msg = new Message();
/* version */
msg.addMessageElement(PresenceProtocol.nameSpace,
new
StringMessageElement(PresenceProtocol.
versionTag,
PresenceProtocol.version, null));
/* MemberID*/
msg.addMessageElement(PresenceProtocol.nameSpace,
new
StringMessageElement(PresenceProtocol.
membIDTag,
PresenceService.getInstance().getmOwnPeerAdv().getPeerID().
toString(), null));
/* backDoorID*/
msg.addMessageElement(PresenceProtocol.nameSpace,
new
StringMessageElement(PresenceProtocol.
backDoorTag,
PresenceService.getInstance().getOwnBackDoorID(), null));
/* type */
msg.addMessageElement(PresenceProtocol.nameSpace,
new
StringMessageElement(PresenceProtocol.typeTag,
type, null));
return msg;
}
/**
* creates PictureUpdateMessage
* @return Message
*/
protected static Message createPictureUpdateMessage() {
Message msg = PresenceProtocol.createMessage(PresenceProtocol.pictureUpdate);
/* status */
msg.addMessageElement(PresenceProtocol.nameSpace,
new
StringMessageElement(PresenceProtocol.
statusTag,
PresenceProtocol.ONLINE, null));
return msg;
}
/**
* createStatusUpdateMessage
*
* @param status String
* @return Message
*/
protected static Message createStatusUpdateMessage(String status) {
Message msg = PresenceProtocol.createMessage(PresenceProtocol.statusUpdate);
/* status */
msg.addMessageElement(PresenceProtocol.nameSpace,
new
StringMessageElement(PresenceProtocol.
statusTag,
status, null));
return msg;
}
/**
* createServiceReqMessage
*
* @param serviceID String
* @return Message
*/
protected static Message createServiceReqMessage(String serviceID) {
Message msg = PresenceProtocol.createMessage(PresenceProtocol.serviceRequest);
msg.addMessageElement(PresenceProtocol.nameSpace,
new
StringMessageElement(PresenceProtocol.serviceTag
,
serviceID, null));
return msg;
}
/**
* createServiceResMessage
* @param serviceID String
* @param pipeID String
* @return Message
*/
protected static Message createServiceResMessage(String serviceID, String pipeID) {
Message msg = PresenceProtocol.createMessage(PresenceProtocol.serviceResponse);
msg.addMessageElement(PresenceProtocol.nameSpace,
new
StringMessageElement(PresenceProtocol.serviceTag
,
serviceID, null));
msg.addMessageElement(PresenceProtocol.nameSpace,
new
StringMessageElement(PresenceProtocol.
servicePipeTag
,
pipeID, null));
return msg;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -