?? submitsm.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 java.io.UnsupportedEncodingException;import com.logica.smpp.Data;import com.logica.smpp.util.*;import com.logica.smpp.pdu.Request;import com.logica.smpp.pdu.ValueNotSetException;import com.logica.smpp.pdu.tlv.*;/** * @author Logica Mobile Networks SMPP Open Source Team * @version 1.1, 19 Nov 2001 *//* 31-10-01 ticp@logica.com message length now stored and returned as short to accomodate the lengths > 127 (they're stored as negative values in byte vars) 31-10-01 ticp@logica.com SAR fields now correctly return values > 127 19-11-01 ticp@logica.com added support for multibyte string encoding for short message*/public class SubmitSM extends Request{ // mandatory parameters private String serviceType = Data.DFLT_SRVTYPE; private Address sourceAddr = new Address(); private Address destAddr = new Address(); private byte esmClass = Data.DFLT_ESM_CLASS; private byte protocolId = Data.DFLT_PROTOCOLID; private byte priorityFlag = Data.DFLT_PRIORITY_FLAG; private String scheduleDeliveryTime = Data.DFLT_SCHEDULE; private String validityPeriod = Data.DFLT_VALIDITY; private byte registeredDelivery = Data.DFLT_REG_DELIVERY; private byte replaceIfPresentFlag = Data.DFTL_REPLACE_IFP; private byte dataCoding = Data.DFLT_DATA_CODING; private byte smDefaultMsgId = Data.DFLT_DFLTMSGID; private short smLength = Data.DFLT_MSG_LEN; private ShortMessage shortMessage = new ShortMessage(Data.SM_MSG_LEN); // 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 TLVShort destinationPort = new TLVShort(Data.OPT_PAR_DST_PORT); private TLVByte destAddrSubunit = new TLVByte(Data.OPT_PAR_DST_ADDR_SUBUNIT); 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 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 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); private TLVByte ussdServiceOp = new TLVByte(Data.OPT_PAR_USSD_SER_OP); public SubmitSM() { super(Data.SUBMIT_SM); registerOptional(userMessageReference); registerOptional(sourcePort); registerOptional(sourceAddrSubunit); registerOptional(destinationPort); registerOptional(destAddrSubunit); registerOptional(sarMsgRefNum); registerOptional(sarTotalSegments); registerOptional(sarSegmentSeqnum); registerOptional(moreMsgsToSend); registerOptional(payloadType); registerOptional(messagePayload); 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); registerOptional(ussdServiceOp); } protected Response createResponse() { return new SubmitSMResp(); } public void setBody(ByteBuffer buffer) throws NotEnoughDataInByteBufferException, TerminatingZeroNotFoundException, PDUException { setServiceType(buffer.removeCString()); sourceAddr.setData(buffer); // ? destAddr.setData(buffer); // ? setEsmClass(buffer.removeByte()); setProtocolId(buffer.removeByte()); setPriorityFlag(buffer.removeByte()); setScheduleDeliveryTime(buffer.removeCString()); setValidityPeriod(buffer.removeCString()); setRegisteredDelivery(buffer.removeByte()); setReplaceIfPresentFlag(buffer.removeByte()); setDataCoding(buffer.removeByte()); setSmDefaultMsgId(buffer.removeByte()); setSmLength(decodeUnsigned(buffer.removeByte())); shortMessage.setData(buffer.removeBuffer(getSmLength())); } public ByteBuffer getBody() { ByteBuffer buffer = new ByteBuffer(); buffer.appendCString(getServiceType()); buffer.appendBuffer(getSourceAddr().getData()); buffer.appendBuffer(getDestAddr().getData()); buffer.appendByte(getEsmClass()); buffer.appendByte(getProtocolId()); buffer.appendByte(getPriorityFlag()); buffer.appendCString(getScheduleDeliveryTime()); buffer.appendCString(getValidityPeriod()); buffer.appendByte(getRegisteredDelivery()); buffer.appendByte(getReplaceIfPresentFlag()); buffer.appendByte(getDataCoding()); buffer.appendByte(getSmDefaultMsgId()); buffer.appendByte(encodeUnsigned(getSmLength())); buffer.appendBuffer(shortMessage.getData()); return buffer; } public void setServiceType(String value) throws WrongLengthOfStringException { checkCString(value, Data.SM_SRVTYPE_LEN); serviceType = value; } public void setScheduleDeliveryTime(String value) throws WrongDateFormatException { checkDate(value); scheduleDeliveryTime = value; } public void setValidityPeriod(String value) throws WrongDateFormatException { checkDate(value); validityPeriod = value; } public void setShortMessage(String value) throws WrongLengthOfStringException { shortMessage.setMessage(value); setSmLength((short)shortMessage.getLength()); } public void setShortMessage(String value, String encoding) throws WrongLengthOfStringException, UnsupportedEncodingException { shortMessage.setMessage(value,encoding); setSmLength((short)shortMessage.getLength()); } public void setSourceAddr(Address value) { sourceAddr = value; } public void setSourceAddr(String address) throws WrongLengthOfStringException { setSourceAddr(new Address(address)); }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -