📄 cwtpevent.java
字号:
/** * JWAP - A Java Implementation of the WAP Protocols * Copyright (C) 2001-2004 Niko Bender * * 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 */package net.sourceforge.jwap.wtp;import net.sourceforge.jwap.util.Logger;/** * * This class represents a service primitive used to communicate between WTP * layer and the layer above (e.g. WSP). Generally are four types of * service primitives: * <ul> * <li>req (upper -> WTP) - Anounce a request</li> * <li>ind (WTP -> upper) - Indicate a request by a remote stack</li> * <li>res (upper -> WTP) - Answer a indication</li> * <li>cnf (wtp -> upper) - Answer a request</li> * </ul> * The wireless transaction protocol provides the following services * according tp section 5.3 of the specification. * * <ul> * <li>TR-INVOKE - Used to initiate a new transaction (req, ind, res, cnf) </li> * <li>TR-RESULT - Used to send back a result of a previously initiated transaction</li> * <li>TR-ABORT - Used to abort an existing transaction.</li> * </ul> * TR-INVOKE and TR-RESULT are modeled by this class. TR-ABORT is a call of * <code>abort(abordCode)</code> on the corresponding transaction. * Service primitive can be processed by CWTPSocket, that implements the state * machine of the WTP layer or they are used to inform IWTPListeners by the WTP layer. */public class CWTPEvent { // use these constants to specify the service primitive type public static final byte TR_INVOKE_REQ = 0x00; public static final byte TR_INVOKE_IND = 0x01; public static final byte TR_INVOKE_RES = 0x02; public static final byte TR_INVOKE_CNF = 0x03; public static final byte TR_RESULT_REQ = 0x04; public static final byte TR_RESULT_IND = 0x05; public static final byte TR_RESULT_RES = 0x06; public static final byte TR_RESULT_CNF = 0x07; public static final byte TR_INVOKEDATA_REQ = 0x08; public static final byte TR_INVOKEDATA_IND = 0x09; public static final byte TR_INVOKEDATA_RES = 0x0A; public static final byte TR_INVOKEDATA_CNF = 0x0B; public static final byte TR_RESULTDATA_REQ = 0x0C; public static final byte TR_RESULTDATA_IND = 0x0D; public static final byte TR_RESULTDATA_RES = 0x0E; public static final byte TR_RESULTDATA_CNF = 0x0F; public static final String[] types = { "TR_INVOKE_REQ", "TR_INVOKE_IND", "TR_INVOKE_RES", "TR_INVOKE_CNF", "TR_RESULT_REQ", "TR_RESULT_IND", "TR_RESULT_RES", "TR_RESULT_CNF", "TR_INVOKEDATA_REQ", "TR_INVOKEDATA_IND", "TR_INVOKEDATA_RES", "TR_INVOKEDATA_CNF", "TR_RESULTDATA_REQ", "TR_RESULTDATA_IND", "TR_RESULTDATA_RES", "TR_RESULTDATA_CNF" }; static Logger logger = Logger.getLogger(CWTPEvent.class); /** * the service primitive type */ private byte type; //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX // Fields used in a TR-Invoke oder TR-Result according to the spec /** * Section 5.3.1.6 User Data<br> * The user data carried by the WTP protocol (payload). * WTP layer will submit this data to the destination without changing content. */ private byte[] userData; /** * Section 5.3.1.8 Exit Info<br> * additional user data to be sent to the originator on transaction completion. * moredata has to be false and classtype of transacition has to be 1. */ private byte[] exitInfo = new byte[0]; /** * Section 5.3.1.9 More Data<br> * Will there be more invocations of this primitive for the same transaction? * ext. segmentation and re-assambly has to be used! */ private boolean moreData; /** * Section 5.3.1.10 Frame Boundary<br> * Is this user data the beginning of a new user defined frame? * ext. segmentation and re-assambly has to be used! */ private boolean frameBoundary; private IWTPTransaction transaction; //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX /** * Constructor to construct tr-invoke and tr-result * <br>(construct Aborts by calling abort(code) on the transaction. * After this the transaction throws abortedExceptions on calling anything on it.) * * * @param userData Payload/bytes of the upper layer * @param exitInfo Will there be more invocations of this primitive for the * same transaction? (available if ext. segmentation and re-assambly used) * @param moreData Additional invocations for the same transaction follow * (available if ext. segmentation and re-assambly used) * @param frameBoundary specifies a new user defined data frame * (available if ext. segmentation and re-assambly used) * @param transaction the transaction the service primitive belongs to. * @param type the type of this service primitive * (use constants defined in the class) */ public CWTPEvent(byte[] userData, byte[] exitInfo, boolean moreData, boolean frameBoundary, byte type) { this.userData = userData; this.exitInfo = exitInfo; this.moreData = moreData; this.frameBoundary = frameBoundary; this.type = type; //logger.debug("" + types[type]); } /** * Constructor to construct tr-invoke and tr-result<br> * defaults: moreData = false, no exitInfo, frameBoundary = false * * @param userData Payload/bytes of the upper layer * @param transaction the transaction the service primitive belongs to. * @param type the type of this service primitive * (use constants defined in the class) */ public CWTPEvent(byte[] userData, byte type) { this.userData = userData; this.moreData = false; this.frameBoundary = false; this.type = type; //logger.debug("" + types[type]); } ///////////////////////////////////////////////////////////////////////////// //////////////////////////////// SET/GET //////////////////////////////////// public byte getType() { return type; } public void setType(byte type) { this.type = type; } public byte[] getUserData() { return userData; } public void setUserData(byte[] userData) { this.userData = userData; } public byte[] getExitInfo() { return exitInfo; } public void setExitInfo(byte[] data) { this.exitInfo = data; } public boolean getMoreData() { return moreData; } public void setMoreData(boolean moreData) { this.moreData = moreData; } public boolean getFrameBoundary() { return frameBoundary; } public void setFrameBoundary(boolean boundary) { this.frameBoundary = boundary; } public IWTPTransaction getTransaction() { return transaction; } public void setTransaction(IWTPTransaction transaction) { this.transaction = transaction; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -