📄 submitmessage.java
字号:
package com.gctech.sms.sp.cms.msg;
import java.util.*;
import com.gctech.sms.sp.cms.util.*;
public class SubmitMessage extends Message
{
public String spId ;
public String serviceId;
public String content;
public String[] destTermIds = new String[0];
public Date validTime = null;
public Date atTime=null;
public String chargeTermId;
public String srcId;
public int destCount ;
//用来记录发送时间的,跟协议无关
public Date sendDate = null;
public SubmitMessage(String spId,String serviceId,String content,String[] destTermIds, String chargeTermId,String srcId)
{
this.commandId = Message.SUBMIT_REQ;
this.sequenceId = Message.nextSeqId() ;
this.spId = spId;
this.serviceId = serviceId;
this.content = content;
this.destTermIds = destTermIds;
this.chargeTermId = chargeTermId;
this.srcId = srcId;
destCount = destTermIds.length;
sendDate=new Date();
checkValid();
}
public SubmitMessage(String spId,String serviceId,String content,
String destTermId,String chargeTermId,String srcId)
{
this(spId,serviceId,content,new String[]
{destTermId},chargeTermId,srcId);
}
public SubmitMessage()
{
}
public static SubmitMessage createMessage(byte[] bs)
{
SubmitMessage msg = new SubmitMessage();
ProtocolBuffer pb = ProtocolBuffer.create(bs);
msg.commandId=pb.readInt();
msg.commandStatus = pb.readInt();
msg.sequenceId = pb.readInt();
msg.spId = pb.readString(20);
msg.serviceId = pb.readString(20);
// msg.validTime = pb.readDateString();
// msg.atTime = pb.readDateString();
pb.readBytes(17);
pb.readBytes(17);
msg.chargeTermId = pb.readString(21);
msg.srcId = pb.readString(21);
msg.destCount = pb.readByte();
String[] dests = new String[msg.destCount];
for(int i=0;i<msg.destCount;i++)
{
dests[i] = pb.readString(21);
}
msg.destTermIds = dests;
int msgLength = pb.readByte();
if(msgLength<0)
{
msgLength = msgLength+256;
}
msg.content = pb.readString(msgLength);
return msg;
}
public void setValidTime(Date d)
{
this.validTime = d;
}
public void setAtTime(Date d)
{
this.atTime = d;
}
public byte[] toBytes()
{
ProtocolBuffer pb = ProtocolBuffer.create(totalLength);
pb.appendInt(this.totalLength);
pb.appendInt(this.commandId);
pb.appendInt(0);
pb.appendInt(sequenceId);
pb.appendString(this.spId,20);
pb.appendString(this.serviceId,20);
if(this.validTime!=null)
{
pb.appendStringDate(validTime);
}
else
{
pb.appendBynary0(17);
}
if(this.atTime!=null)
{
pb.appendStringDate(atTime);
}
else
{
pb.appendBynary0(17);
}
pb.appendString(this.chargeTermId,21);
pb.appendString(srcId,21);
pb.appendByte((byte)this.destTermIds.length);
for(int i=0;i<destTermIds.length;i++)
{
pb.appendString(destTermIds[i],21);
}
pb.appendByte((byte)content.getBytes().length);
pb.appendString(content);
//test
return pb.toBytes();
}
private void checkValid()
{
if(content.length()>254) throw new IllegalArgumentException("内容长度过长");
if(destTermIds.length>100) throw new IllegalArgumentException("destTermIds larger that 100");
this.totalLength = 112+21+destTermIds.length *21+1+content.getBytes().length;
}
public static void main(String[] args)
{
// SubmitMessage submitMessage1 = new SubmitMessage();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -