/**
* @copyright 2013 Computer Science Department, Recursive InterNetworking Architecture (RINA) laboratory, Boston University.
* All rights reserved. Permission to use, copy, modify, and distribute this software and its documentation
* for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all
* copies and that both the copyright notice and this permission notice appear in supporting documentation.
* The RINA laboratory of the Computer Science Department at Boston University makes no
* representations about the suitability of this software for any purpose.
*/
package rina.message;
/**
* @author Yuefeng Wang and Flavio Esposito. Computer Science Department, Boston University
*
*/
public class CDAPMessageGenerator {
/**
* version of the abstract syntax
*/
private static final int ABSTRACT_SYNTAX_VERSION = 0x0073;
/**
* version of the CDAP protocol
*/
private static final int CDAP_VERSION = 0x0001;
/**
* dummy Constructor
*/
public CDAPMessageGenerator(){}
/**
* generate M_CONNECT
* @param authMech
* @param authValue
* @param destAEInst
* @param destAEName
* @param destApInst
* @param destApName
* @param invokeID
* @param srcAEInst
* @param srcAEName
* @param srcApInst
* @param srcApName
* @return CDAPMessage
*/
public static CDAP.CDAPMessage generateM_CONNECT(
CDAP.authTypes_t authMech,
CDAP.authValue_t authValue,
String destAEInst,
String destAEName,
String destApInst,
String destApName,
int invokeID,
String srcAEInst,
String srcAEName,
String srcApInst,
String srcApName
)
{
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setAbsSyntax(ABSTRACT_SYNTAX_VERSION);
cdapMessage.setAuthMech(authMech);
cdapMessage.setAuthValue(authValue);
cdapMessage.setDestAEInst(destAEInst);
cdapMessage.setDestAEName(destAEName);
cdapMessage.setDestApInst(destApInst);
cdapMessage.setDestApName(destApName);
cdapMessage.setInvokeID(invokeID);
cdapMessage.setOpCode(CDAP.opCode_t.M_CONNECT);
cdapMessage.setSrcAEInst(srcAEInst);
cdapMessage.setSrcAEName(srcAEName);
cdapMessage.setSrcApInst(srcApInst);
cdapMessage.setSrcApName(srcApName);
cdapMessage.setVersion(CDAP_VERSION);
return cdapMessage.buildPartial();
}
/**
*
* @param destAEInst
* @param destAEName
* @param destApInst
* @param destApName
* @param srcAEInst
* @param srcAEName
* @param srcApInst
* @param srcApName
* @return
*/
public static CDAP.CDAPMessage generateM_CONNECT(
String destAEInst,
String destAEName,
String destApInst,
String destApName,
int invokeID,
String srcAEInst,
String srcAEName,
String srcApInst,
String srcApName
)
{
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setAbsSyntax(0x0072);
cdapMessage.setAuthMech(CDAP.authTypes_t.AUTH_NONE);
cdapMessage.setDestAEInst(destAEInst);
cdapMessage.setDestAEName(destAEName);
cdapMessage.setDestApInst(destApInst);
cdapMessage.setDestApName(destApName);
cdapMessage.setInvokeID(invokeID);
cdapMessage.setOpCode(CDAP.opCode_t.M_CONNECT);
cdapMessage.setSrcAEInst(srcAEInst);
cdapMessage.setSrcAEName(srcAEName);
cdapMessage.setSrcApInst(srcApInst);
cdapMessage.setSrcApName(srcApName);
cdapMessage.setVersion(0x0001);
return cdapMessage.buildPartial();
}
/**
* generate M_CONNECT_R
* @param resultValue
* @param destAEInst
* @param destAEName
* @param destApInst
* @param destApName
* @param invokeID
* @param srcAEInst
* @param srcAEName
* @param srcApInst
* @param srcApName
* @return CDAPMessage
*/
public static CDAP.CDAPMessage generateM_CONNECT_R(
int resultValue,
String destAEInst,
String destAEName,
String destApInst,
String destApName,
int invokeID,
String srcAEInst,
String srcAEName,
String srcApInst,
String srcApName
)
{
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setAbsSyntax(ABSTRACT_SYNTAX_VERSION);
cdapMessage.setResult(resultValue);
cdapMessage.setDestAEInst(destAEInst);
cdapMessage.setDestAEName(destAEName);
cdapMessage.setDestApInst(destApInst);
cdapMessage.setDestApInst(destApInst);
cdapMessage.setDestApName(destApName);
cdapMessage.setInvokeID(invokeID);
cdapMessage.setOpCode(CDAP.opCode_t.M_CONNECT_R);
cdapMessage.setSrcAEInst(srcAEInst);
cdapMessage.setSrcAEName(srcAEName);
cdapMessage.setSrcApInst(srcApInst);
cdapMessage.setSrcApName(srcApName);
cdapMessage.setVersion(CDAP_VERSION);
return cdapMessage.build();
}
public static CDAP.CDAPMessage generateM_CONNECT_R(
int absSyntax,
int resultValue,
CDAP.authTypes_t authMech,
String destAEInst,
String destAEName,
String destApInst,
String destApName,
int invokeID,
String srcAEInst,
String srcAEName,
String srcApInst,
String srcApName,
long version
)
{
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setAbsSyntax(absSyntax);
cdapMessage.setResult(resultValue);
cdapMessage.setDestAEInst(destAEInst);
cdapMessage.setDestAEName(destAEName);
cdapMessage.setDestApInst(destApInst);
cdapMessage.setDestApInst(destApInst);
cdapMessage.setDestApName(destApName);
cdapMessage.setInvokeID(invokeID);
cdapMessage.setOpCode(CDAP.opCode_t.M_CONNECT_R);
cdapMessage.setSrcAEInst(srcAEInst);
cdapMessage.setSrcAEName(srcAEName);
cdapMessage.setSrcApInst(srcApInst);
cdapMessage.setSrcApName(srcApName);
cdapMessage.setVersion(version);
return cdapMessage.build();
}
/**
*
* @param ObjClass
* @param ObjName
* @param objValue
* @param invokeID
* @return
*/
public static CDAP.CDAPMessage generateM_CREATE(
String ObjClass,
String ObjName,
CDAP.objVal_t objValue,
int invokeID
) {
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setObjClass(ObjClass);
cdapMessage.setObjName(ObjName);
cdapMessage.setObjValue(objValue);
cdapMessage.setOpCode(CDAP.opCode_t.M_CREATE);
cdapMessage.setInvokeID(invokeID);
return cdapMessage.buildPartial();
}
/**
* This one might be used for DDF
* @param ObjClass
* @param ObjName
* @param invokeID
* @return
*/
public static CDAP.CDAPMessage generateM_CREATE(
String ObjClass,
String ObjName,
int invokeID
) {
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setObjClass(ObjClass);
cdapMessage.setObjName(ObjName);
cdapMessage.setOpCode(CDAP.opCode_t.M_CREATE);
cdapMessage.setInvokeID(invokeID);
return cdapMessage.buildPartial();
}
public static CDAP.CDAPMessage generateM_CREATE_R(
int result,
String ObjClass,
String ObjName,
CDAP.objVal_t objValue,
int invokeID
) {
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setResult(result);
cdapMessage.setObjClass(ObjClass);
cdapMessage.setObjName(ObjName);
cdapMessage.setObjValue(objValue);
cdapMessage.setOpCode(CDAP.opCode_t.M_CREATE_R);
cdapMessage.setInvokeID(invokeID);
return cdapMessage.buildPartial();
}
public static CDAP.CDAPMessage generateM_CREATE_R(
int result,
String ObjClass,
String ObjName,
int invokeID
) {
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setResult(result);
cdapMessage.setObjClass(ObjClass);
cdapMessage.setObjName(ObjName);
cdapMessage.setOpCode(CDAP.opCode_t.M_CREATE_R);
cdapMessage.setInvokeID(invokeID);
return cdapMessage.buildPartial();
}
public static CDAP.CDAPMessage generateM_START(
String objClass,
String objName,
CDAP.objVal_t objValue,
int invokeID
)
{
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setObjClass(objClass);//required from CDAP specs 0.7.2
cdapMessage.setObjName(objName); //required from CDAP specs 0.7.2
cdapMessage.setObjValue(objValue);
cdapMessage.setInvokeID(invokeID);
cdapMessage.setOpCode(CDAP.opCode_t.M_START);
cdapMessage.setVersion(0x0001);
return cdapMessage.buildPartial();
}
public static CDAP.CDAPMessage generateM_START(
String objClass,
String objName,
int invokeID
)
{
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setObjClass(objClass);//required from CDAP specs 0.7.2
cdapMessage.setObjName(objName); //required from CDAP specs 0.7.2
cdapMessage.setInvokeID(invokeID);
cdapMessage.setOpCode(CDAP.opCode_t.M_START);
return cdapMessage.buildPartial();
}
public static CDAP.CDAPMessage generateM_STOP_R(
int result,
String objClass,
int invokeID) {
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setObjClass(objClass);//required from CDAP specs 0.7.2
cdapMessage.setResult(result);
cdapMessage.setInvokeID(invokeID);
cdapMessage.setOpCode(CDAP.opCode_t.M_STOP_R);
cdapMessage.setVersion(CDAP_VERSION);
return cdapMessage.buildPartial();
}
public static CDAP.CDAPMessage generateM_READ_R(
String ObjClass,
String ObjName,
int invokeID
) {
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setObjClass(ObjClass);
cdapMessage.setObjName(ObjName);
cdapMessage.setInvokeID(invokeID);
cdapMessage.setOpCode(CDAP.opCode_t.M_READ_R); //Mandatory
return cdapMessage.buildPartial();
}
public static CDAP.CDAPMessage generateM_CONNECT_R(
int absSyntax,
int resultValue,
CDAP.authTypes_t authMech,
String objClass,
String objName,
String destAEInst,
String destAEName,
String destApInst,
String destApName,
int invokeID,
String srcAEInst,
String srcAEName,
String srcApInst,
String srcApName,
long version
)
{
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setAbsSyntax(absSyntax);
cdapMessage.setResult(resultValue);
cdapMessage.setDestAEInst(destAEInst);
cdapMessage.setDestAEName(destAEName);
cdapMessage.setDestApInst(destApInst);
cdapMessage.setDestApInst(destApInst);
cdapMessage.setDestApName(destApName);
cdapMessage.setInvokeID(invokeID);
cdapMessage.setOpCode(CDAP.opCode_t.M_CONNECT_R);
cdapMessage.setSrcAEInst(srcAEInst);
cdapMessage.setSrcAEName(srcAEName);
cdapMessage.setSrcApInst(srcApInst);
cdapMessage.setSrcApName(srcApName);
cdapMessage.setVersion(version);
return cdapMessage.build();
}
public static CDAP.CDAPMessage generateM_START_R(
int result,
String objClass,
String objName,
CDAP.objVal_t objValue,
int invokeID)
{
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setResult(result);
cdapMessage.setObjClass(objClass);//required from CDAP specs 0.7.2
cdapMessage.setObjName(objName); //required from CDAP specs 0.7.2
cdapMessage.setObjValue(objValue);
cdapMessage.setInvokeID(invokeID);
cdapMessage.setOpCode(CDAP.opCode_t.M_START_R);
return cdapMessage.buildPartial();
}
public static CDAP.CDAPMessage generateM_STOP(
String objClass,
String objName,
CDAP.objVal_t objValue,
int invokeID
) {
CDAP.CDAPMessage.Builder cdapMessage = CDAP.CDAPMessage.newBuilder();
cdapMessage.setObjClass(objClass);//required from CDAP specs 0.7.2
cdapMessage.setObjName(objName); //required from CDAP specs 0.7.2
cdapMessage.setObjValue(objValue);
cdapMessage.setInvokeID(invokeID);
cdapMessage.setOpCode(CDAP.opCode_t.M_STOP);
return cdapMessage.buildPartial();
}
/**
* encode CDAPMessage to byte array
* @param msg
* @return data
*/
public static byte[] encodeCDAPMessage(CDAP.CDAPMessage msg)
{
byte[] data = msg.toByteArray();
return data;
}
}