⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 submitmessage.java

📁 采用JAVA开发
💻 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 + -