📄 datasm.java
字号:
/* * Copyright (c) 1996-2001 * Logica Mobile Networks Limited * All rights reserved. * * This software is distributed under Logica Open Source License Version 1.0 * ("Licence Agreement"). You shall use it and distribute only in accordance * with the terms of the License Agreement. * */package com.logica.smpp.pdu;import com.logica.smpp.Data;import com.logica.smpp.pdu.tlv.TLVByte;import com.logica.smpp.pdu.tlv.TLVEmpty;import com.logica.smpp.pdu.tlv.TLVInt;import com.logica.smpp.pdu.tlv.TLVOctets;import com.logica.smpp.pdu.tlv.TLVShort;import com.logica.smpp.pdu.tlv.TLVString;import com.logica.smpp.pdu.tlv.TLVUByte;import com.logica.smpp.pdu.tlv.WrongLengthException;import com.logica.smpp.util.ByteBuffer;import com.logica.smpp.util.NotEnoughDataInByteBufferException;import com.logica.smpp.util.TerminatingZeroNotFoundException;/** * @author Logica Mobile Networks SMPP Open Source Team * @version 1.2, 31 Oct 2001 *//* 10-10-01 ticp@logica.com max address lengths fixed according smpp spec 31-10-01 ticp@logica.com SAR fields now correctly return values > 127*/public class DataSM extends Request{ // mandatory parameters private String serviceType = Data.DFLT_SRVTYPE; private Address sourceAddr = new Address(Data.SM_DATA_ADDR_LEN); private Address destAddr = new Address(Data.SM_DATA_ADDR_LEN); private byte esmClass = Data.DFLT_ESM_CLASS; private byte registeredDelivery = Data.DFLT_REG_DELIVERY; private byte dataCoding = Data.DFLT_DATA_CODING; // optional parameters private TLVShort userMessageReference = new TLVShort(Data.OPT_PAR_USER_MSG_REF); private TLVShort sourcePort = new TLVShort(Data.OPT_PAR_SRC_PORT); private TLVByte sourceAddrSubunit = new TLVByte(Data.OPT_PAR_SRC_ADDR_SUBUNIT); private TLVByte sourceNetworkType = new TLVByte(Data.OPT_PAR_SRC_NW_TYPE); private TLVByte sourceBearerType = new TLVByte(Data.OPT_PAR_SRC_BEAR_TYPE); private TLVByte sourceTelematicsId = new TLVByte(Data.OPT_PAR_SRC_TELE_ID); private TLVShort destinationPort = new TLVShort(Data.OPT_PAR_DST_PORT); private TLVByte destAddrSubunit = new TLVByte(Data.OPT_PAR_DST_ADDR_SUBUNIT); private TLVByte destNetworkType = new TLVByte(Data.OPT_PAR_DST_NW_TYPE); private TLVByte destBearerType = new TLVByte(Data.OPT_PAR_DST_BEAR_TYPE); private TLVShort destTelematicsId = new TLVShort(Data.OPT_PAR_DST_TELE_ID); private TLVShort sarMsgRefNum = new TLVShort(Data.OPT_PAR_SAR_MSG_REF_NUM); private TLVUByte sarTotalSegments = new TLVUByte(Data.OPT_PAR_SAR_TOT_SEG); private TLVUByte sarSegmentSeqnum = new TLVUByte(Data.OPT_PAR_SAR_SEG_SNUM); private TLVByte moreMsgsToSend = new TLVByte(Data.OPT_PAR_MORE_MSGS); private TLVInt qosTimeToLive = new TLVInt(Data.OPT_PAR_QOS_TIME_TO_LIVE); private TLVByte payloadType = new TLVByte(Data.OPT_PAR_PAYLOAD_TYPE); private TLVOctets messagePayload = new TLVOctets(Data.OPT_PAR_MSG_PAYLOAD,Data.OPT_PAR_MSG_PAYLOAD_MIN,Data.OPT_PAR_MSG_PAYLOAD_MAX); private TLVByte setDpf = new TLVByte(Data.OPT_PAR_SET_DPF); private TLVString receiptedMessageId = new TLVString(Data.OPT_PAR_RECP_MSG_ID, Data.OPT_PAR_RECP_MSG_ID_MIN, Data.OPT_PAR_RECP_MSG_ID_MAX); // 1- private TLVByte messageState = new TLVByte(Data.OPT_PAR_MSG_STATE); private TLVOctets networkErrorCode = new TLVOctets(Data.OPT_PAR_NW_ERR_CODE, Data.OPT_PAR_NW_ERR_CODE_MIN, Data.OPT_PAR_NW_ERR_CODE_MAX); // exactly 3 private TLVByte privacyIndicator = new TLVByte(Data.OPT_PAR_PRIV_IND); private TLVOctets callbackNum = new TLVOctets(Data.OPT_PAR_CALLBACK_NUM,Data.OPT_PAR_CALLBACK_NUM_MIN,Data.OPT_PAR_CALLBACK_NUM_MAX); // 4-19 private TLVByte callbackNumPresInd = new TLVByte(Data.OPT_PAR_CALLBACK_NUM_PRES_IND); private TLVOctets callbackNumAtag = new TLVOctets(Data.OPT_PAR_CALLBACK_NUM_ATAG,Data.OPT_PAR_CALLBACK_NUM_ATAG_MIN,Data.OPT_PAR_CALLBACK_NUM_ATAG_MAX); // 1-65 private TLVOctets sourceSubaddress = new TLVOctets(Data.OPT_PAR_SRC_SUBADDR,Data.OPT_PAR_SRC_SUBADDR_MIN,Data.OPT_PAR_SRC_SUBADDR_MAX); // 2-23 private TLVOctets destSubaddress = new TLVOctets(Data.OPT_PAR_DEST_SUBADDR,Data.OPT_PAR_DEST_SUBADDR_MIN,Data.OPT_PAR_DEST_SUBADDR_MAX); private TLVByte userResponseCode = new TLVByte(Data.OPT_PAR_USER_RESP_CODE); private TLVByte displayTime = new TLVByte(Data.OPT_PAR_DISPLAY_TIME); private TLVShort smsSignal = new TLVShort(Data.OPT_PAR_SMS_SIGNAL); private TLVByte msValidity = new TLVByte(Data.OPT_PAR_MS_VALIDITY); private TLVByte msMsgWaitFacilities = new TLVByte(Data.OPT_PAR_MSG_WAIT); // bit mask private TLVByte numberOfMessages = new TLVByte(Data.OPT_PAR_NUM_MSGS); private TLVEmpty alertOnMsgDelivery = new TLVEmpty(Data.OPT_PAR_ALERT_ON_MSG_DELIVERY); private TLVByte languageIndicator = new TLVByte(Data.OPT_PAR_LANG_IND); private TLVByte itsReplyType = new TLVByte(Data.OPT_PAR_ITS_REPLY_TYPE); private TLVShort itsSessionInfo = new TLVShort(Data.OPT_PAR_ITS_SESSION_INFO); public DataSM() { super(Data.DATA_SM); registerOptional(userMessageReference); registerOptional(sourcePort); registerOptional(sourceAddrSubunit); registerOptional(sourceNetworkType); registerOptional(sourceBearerType); registerOptional(sourceTelematicsId); registerOptional(destinationPort); registerOptional(destAddrSubunit); registerOptional(destNetworkType); registerOptional(destBearerType); registerOptional(destTelematicsId); registerOptional(sarMsgRefNum); registerOptional(sarTotalSegments); registerOptional(sarSegmentSeqnum); registerOptional(moreMsgsToSend); registerOptional(qosTimeToLive); registerOptional(payloadType); registerOptional(messagePayload); registerOptional(setDpf); registerOptional(receiptedMessageId); registerOptional(messageState); registerOptional(networkErrorCode); registerOptional(privacyIndicator); registerOptional(callbackNum); registerOptional(callbackNumPresInd); registerOptional(callbackNumAtag); registerOptional(sourceSubaddress); registerOptional(destSubaddress); registerOptional(userResponseCode); registerOptional(displayTime); registerOptional(smsSignal); registerOptional(msValidity); registerOptional(msMsgWaitFacilities); registerOptional(numberOfMessages); registerOptional(alertOnMsgDelivery); registerOptional(languageIndicator); registerOptional(itsReplyType); registerOptional(itsSessionInfo);} protected Response createResponse() { return new DataSMResp(); } public void setBody(ByteBuffer buffer) throws NotEnoughDataInByteBufferException, TerminatingZeroNotFoundException, PDUException { setServiceType(buffer.removeCString()); sourceAddr.setData(buffer); destAddr.setData(buffer); setEsmClass(buffer.removeByte()); setRegisteredDelivery(buffer.removeByte()); setDataCoding(buffer.removeByte()); } public ByteBuffer getBody() { ByteBuffer buffer = new ByteBuffer(); buffer.appendCString(getServiceType()); buffer.appendBuffer(getSourceAddr().getData()); buffer.appendBuffer(getDestAddr().getData()); buffer.appendByte(getEsmClass()); buffer.appendByte(getRegisteredDelivery()); buffer.appendByte(getDataCoding()); return buffer; } public void setServiceType(String value) throws WrongLengthOfStringException { checkCString(value, Data.SM_SRVTYPE_LEN); serviceType = value; } public void setSourceAddr(Address value) { sourceAddr = value; } public void setSourceAddr(String address) throws WrongLengthOfStringException { setSourceAddr(new Address(address)); } public void setSourceAddr(byte ton, byte npi, String address) throws WrongLengthOfStringException { setSourceAddr(new Address(ton, npi, address)); } public void setDestAddr(Address value) { destAddr = value; } public void setDestAddr(String address) throws WrongLengthOfStringException { setDestAddr(new Address(address)); } public void setDestAddr(byte ton, byte npi, String address) throws WrongLengthOfStringException { setDestAddr(new Address(ton, npi, address)); } public void setEsmClass(byte value) { esmClass = value; } public void setRegisteredDelivery(byte value) { registeredDelivery = value; } public void setDataCoding(byte value) { dataCoding = value; } public String getServiceType() { return serviceType; } public Address getSourceAddr() { return sourceAddr; } public Address getDestAddr() { return destAddr; } public byte getEsmClass() { return esmClass; } public byte getRegisteredDelivery() { return registeredDelivery; } public byte getDataCoding() { return dataCoding; } public boolean hasUserMessageReference() { return userMessageReference.hasValue(); } public boolean hasSourcePort() { return sourcePort.hasValue(); } public boolean hasSourceAddrSubunit() { return sourceAddrSubunit.hasValue(); } public boolean hasSourceNetworkType() { return sourceNetworkType.hasValue(); } public boolean hasSourceBearerType() { return sourceBearerType.hasValue(); } public boolean hasSourceTelematicsId() { return sourceTelematicsId.hasValue(); } public boolean hasDestinationPort() { return destinationPort.hasValue(); } public boolean hasDestAddrSubunit() { return destAddrSubunit.hasValue(); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -