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

📄 smpppacket.java

📁 开放源码的smpp协议开发包
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * Java SMPP API * Copyright (C) 1998 - 2002 by Oran Kelly *  * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. *  * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. *  * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA *  * A copy of the LGPL can be viewed at http://www.gnu.org/copyleft/lesser.html * Java SMPP API author: orank@users.sf.net * Java SMPP API Homepage: http://smppapi.sourceforge.net/ * $Id: SMPPPacket.java,v 1.35 2005/05/09 21:04:46 orank Exp $ */package ie.omk.smpp.message;import ie.omk.smpp.Address;import ie.omk.smpp.message.tlv.TLVTable;import ie.omk.smpp.message.tlv.Tag;import ie.omk.smpp.util.AlphabetEncoding;import ie.omk.smpp.util.AlphabetFactory;import ie.omk.smpp.util.BinaryEncoding;import ie.omk.smpp.util.MessageEncoding;import ie.omk.smpp.util.SMPPDate;import ie.omk.smpp.util.SMPPIO;import ie.omk.smpp.version.SMPPVersion;import java.io.OutputStream;import java.util.Date;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/** * This is the abstract class that all SMPP messages are inherited from. *  * @author Oran Kelly * @version 1.0 */public abstract class SMPPPacket {    protected static final Log logger = LogFactory.getLog(SMPPPacket.class);    /** Command Id: Negative Acknowledgement */    public static final int GENERIC_NACK = 0x80000000;    /** Command Id: Bind Receiver */    public static final int BIND_RECEIVER = 0x00000001;    /** Command Id: Bind Receiver Response */    public static final int BIND_RECEIVER_RESP = 0x80000001;    /** Command Id: Bind transmitter */    public static final int BIND_TRANSMITTER = 0x00000002;    /** Command Id: Bind transmitter response */    public static final int BIND_TRANSMITTER_RESP = 0x80000002;    /** Command Id: Query message */    public static final int QUERY_SM = 0x00000003;    /** Command Id: Query message response */    public static final int QUERY_SM_RESP = 0x80000003;    /** Command Id: Submit message */    public static final int SUBMIT_SM = 0x00000004;    /** Command Id: Submit message response */    public static final int SUBMIT_SM_RESP = 0x80000004;    /** Command Id: Deliver Short message */    public static final int DELIVER_SM = 0x00000005;    /** Command Id: Deliver message response */    public static final int DELIVER_SM_RESP = 0x80000005;    /** Command Id: Unbind */    public static final int UNBIND = 0x00000006;    /** Command Id: Unbind response */    public static final int UNBIND_RESP = 0x80000006;    /** Command Id: Replace message */    public static final int REPLACE_SM = 0x00000007;    /** Command Id: replace message response */    public static final int REPLACE_SM_RESP = 0x80000007;    /** Command Id: Cancel message */    public static final int CANCEL_SM = 0x00000008;    /** Command Id: Cancel message response */    public static final int CANCEL_SM_RESP = 0x80000008;    /** Command Id: Bind transceiver */    public static final int BIND_TRANSCEIVER = 0x00000009;    /** Command Id: Bind transceiever response. */    public static final int BIND_TRANSCEIVER_RESP = 0x80000009;    /** Command Id: Outbind. */    public static final int OUTBIND = 0x0000000b;    /** Command Id: Enquire Link */    public static final int ENQUIRE_LINK = 0x00000015;    /** Command Id: Enquire link respinse */    public static final int ENQUIRE_LINK_RESP = 0x80000015;    /** Command Id: Submit multiple messages */    public static final int SUBMIT_MULTI = 0x00000021;    /** Command Id: Submit multi response */    public static final int SUBMIT_MULTI_RESP = 0x80000021;    /** Command Id: Parameter retrieve */    public static final int PARAM_RETRIEVE = 0x00000022;    /** Command Id: Paramater retrieve response */    public static final int PARAM_RETRIEVE_RESP = 0x80000022;    /** Command Id: Query last messages */    public static final int QUERY_LAST_MSGS = 0x00000023;    /** Command Id: Query last messages response */    public static final int QUERY_LAST_MSGS_RESP = 0x80000023;    /** Command Id: Query message details */    public static final int QUERY_MSG_DETAILS = 0x00000024;    /** Command Id: Query message details response */    public static final int QUERY_MSG_DETAILS_RESP = 0x80000024;    /** Command Id: alert notification. */    public static final int ALERT_NOTIFICATION = 0x00000102;    /** Command Id: Data message. */    public static final int DATA_SM = 0x00000103;    /** Command Id: Data message response. */    public static final int DATA_SM_RESP = 0x80000103;    /** Message state at Smsc: En route */    public static final int SM_STATE_EN_ROUTE = 1;    /** Message state at Smsc: Delivered (final) */    public static final int SM_STATE_DELIVERED = 2;    /** Message state at Smsc: Expired (final) */    public static final int SM_STATE_EXPIRED = 3;    /** Message state at Smsc: Deleted (final) */    public static final int SM_STATE_DELETED = 4;    /** Message state at Smsc: Undeliverable (final) */    public static final int SM_STATE_UNDELIVERABLE = 5;    /** Message state at Smsc: Accepted */    public static final int SM_STATE_ACCEPTED = 6;    /** Message state at Smsc: Invalid message (final) */    public static final int SM_STATE_INVALID = 7;    /** Esm class: Mobile Terminated; Normal delivery, no address swapping */    public static final int SMC_MT = 1;    /** Esm class: Mobile originated */    public static final int SMC_MO = 2;    /** Esm class: Mobile Originated / Terminated */    public static final int SMC_MOMT = 3;    /** Esm class: Delivery receipt, no address swapping */    public static final int SMC_RECEIPT = 4;    /** Esm class: Predefined message */    public static final int SMC_DEFMSG = 8;    /** Esm class: Normal delivery , address swapping on */    public static final int SMC_LOOPBACK_RECEIPT = 16;    /** Esm class: Delivery receipt, address swapping on */    public static final int SMC_RECEIPT_SWAP = 20;    /** Esm class: Store message, do not send to Kernel */    public static final int SMC_STORE = 32;    /** Esm class: Store message and send to kernel */    public static final int SMC_STORE_FORWARD = 36;    /** Esm class: Distribution submission */    public static final int SMC_DLIST = 64;    /** Esm class: Multiple recipient submission */    public static final int SMC_MULTI = 128;    /** Esm class: Distribution list and multiple recipient submission */    public static final int SMC_CAS_DL = 256;    /** Esm class: Escalated message FFU */    public static final int SMC_ESCALATED = 512;    /** Esm class: Submit with replace message */    public static final int SMC_SUBMIT_REPLACE = 1024;    /** Esm class: Memory capacity error */    public static final int SMC_MCE = 2048;    /** Esme error code: No error */    public static final int ESME_ROK = 0;    /**     * Version of this packet. This object controls valid settings for field     * values.     */    protected SMPPVersion version = SMPPVersion.getDefaultVersion();    /** Command ID. */    protected int commandId = 0;    /** Command status. */    protected int commandStatus = 0;    /** Packet sequence number. */    protected int sequenceNum = 0;    /*     * Almost all packets use one or more of these. These attributes were all     * stuck in here for easier maintenance... instead of altering 5 different     * packets, just alter it here!! Special cases like SubmitMulti and     * QueryMsgDetailsResp maintain their own destination tables. Any packets     * that wish to use these attribs should override the appropriate methods     * defined below to be public and just call super.method()     */    /** Source address */    protected Address source = null;    /** Destination address */    protected Address destination = null;    /** The short message data */    protected byte[] message = null;    /** Service type for this msg */    protected String serviceType = null;    /** Scheduled delivery time */    protected SMPPDate deliveryTime = null;    /** Scheduled expiry time */    protected SMPPDate expiryTime = null;    /** Date of reaching final state */    protected SMPPDate finalDate = null;    /** Smsc allocated message Id */    protected String messageId = null;    /** Status of message */    protected int messageStatus = 0;    /** Error associated with message */    protected int errorCode = 0;    /** Message priority. */    protected int priority = 0;    /** Registered delivery. */    protected int registered = 0;    /** Replace if present. */    protected int replaceIfPresent = 0;    /** ESM class. */    protected int esmClass = 0;    /** GSM protocol ID. */    protected int protocolID = 0;    /** Alphabet to use to encode this message's text. */    private MessageEncoding encoding = AlphabetFactory.getDefaultAlphabet();    /** GSM data coding (see GSM 03.38). */    protected int dataCoding = encoding.getDataCoding();    /** Default message number. */    protected int defaultMsg = 0;    /** Optional parameter table. */    protected TLVTable tlvTable = new TLVTable();    /**     * Create a new SMPPPacket with specified Id.     *      * @param id     *            Command Id value     */    protected SMPPPacket(int id) {        this(id, 0);    }    /**     * Create a new SMPPPacket with specified Id and sequence number.     *      * @param id     *            Command Id value     * @param seqNum     *            Command Sequence number     */    protected SMPPPacket(int id, int seqNum) {        this.commandId = id;        this.sequenceNum = seqNum;    }    protected SMPPPacket(int id, SMPPVersion version) {        this.commandId = id;        this.version = version;    }    protected SMPPPacket(int id, int seqNum, SMPPVersion version) {        this.commandId = id;        this.sequenceNum = seqNum;        this.version = version;    }    /**     * Get the version handler in use for this packet.     *      * @see ie.omk.smpp.version.SMPPVersion     */    public SMPPVersion getVersion() {        return (version);    }    /**     * Set the version handler for this packet. If <code>null</code> is passed     * in as the version, the default version will be used.     *      * @param version     *            the version handler to use.     * @see ie.omk.smpp.version.SMPPVersion#getDefaultVersion     */    public void setVersion(SMPPVersion version) {        if (version == null)            this.version = SMPPVersion.getDefaultVersion();        else            this.version = version;    }    /**     * Return the number of bytes this packet would be encoded as to an     * OutputStream.     *      * @return The size in bytes of the packet     * @deprecated     */    public final int getCommandLen() {        // stop overriding this deprecated method.        return (getLength());    }    /**     * Get the number of bytes this packet would be encoded as. This returns the     * sum of the size of the header (always 16), the packet's body and all     * optional parameters.     *      * @return the number of bytes this packet would encode as.     */    public final int getLength() {        return (16 + getBodyLength() + tlvTable.getLength());    }    /**     * Get the number of bytes the body of this packet would encode as. This     * method should only return the number of bytes the fields in the mandatory     * parameters section of the packet would encode as. The total size of the     * packet then is 16 (header length) + getBodyLength() + SUM(foreach     * optionalParameter: getLength()).     */    public abstract int getBodyLength();    /**     * Get the Command Id of this SMPP packet.     *      * @return The Command Id of this packet     */    public int getCommandId() {        return (commandId);    }    /**     * Get the status of this packet.     *      * @return The error status of this packet (only relevent to Response     *         packets)     */    public int getCommandStatus() {        return (this.commandStatus);    }    /**     * Get the sequence number of this packet.     *      * @return The sequence number of this SMPP packet     */    public int getSequenceNum() {        return (this.sequenceNum);    }    /**     * Set the sequence number of this packet.     */    public void setSequenceNum(int sequenceNum) {        this.sequenceNum = sequenceNum;    }    /**     * Set the source address. Not used by all SMPP Packet types.     *      * @see ie.omk.smpp.message.SubmitSM     * @see ie.omk.smpp.message.DeliverSM XXX Add other packets.     */    public void setSource(Address s) throws InvalidParameterValueException {        if (s != null) {            if (version.validateAddress(s))                this.source = s;            else                throw new InvalidParameterValueException("Bad source address.",                        s);        } else {            this.source = null;        }    }    /**     * Get the source address. Not used by all SMPP Packet types.     *      * @return The source address or null if it is not set.     */    public Address getSource() {        return (source);    }    /**     * Set the destination address. Not used by all SMPP Packet types.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -