Kannel: Open Source WAP and SMS gateway  svn-r5335
wtp_resp_machine.def
Go to the documentation of this file.
1 /* ====================================================================
2  * The Kannel Software License, Version 1.0
3  *
4  * Copyright (c) 2001-2018 Kannel Group
5  * Copyright (c) 1998-2001 WapIT Ltd.
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. The end-user documentation included with the redistribution,
21  * if any, must include the following acknowledgment:
22  * "This product includes software developed by the
23  * Kannel Group (http://www.kannel.org/)."
24  * Alternately, this acknowledgment may appear in the software itself,
25  * if and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "Kannel" and "Kannel Group" must not be used to
28  * endorse or promote products derived from this software without
29  * prior written permission. For written permission, please
30  * contact org@kannel.org.
31  *
32  * 5. Products derived from this software may not be called "Kannel",
33  * nor may "Kannel" appear in their name, without prior written
34  * permission of the Kannel Group.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  * DISCLAIMED. IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS
40  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
41  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
42  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
43  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
44  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
45  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
46  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47  * ====================================================================
48  *
49  * This software consists of voluntary contributions made by many
50  * individuals on behalf of the Kannel Group. For more information on
51  * the Kannel Group, please see <http://www.kannel.org/>.
52  *
53  * Portions of this software are based upon software originally written at
54  * WapIT Ltd., Helsinki, Finland for the Kannel project.
55  */
56 
57 
58 /*
59  * wtp_resp_machine.def - macro call for generating WTP responder statemachine.
60  * See the architecture document for guidance how to use and update it.
61  *
62  * By Aarno Syvänen for Wapit Ltd.
63  *
64  * WTPRespMachine data structure includes current state of WTP responder state
65  * machine for a specific transaction. This means all data needed to handle at
66  * least two incoming events of a certain transaction. Its fields can be
67  * grouped following way:
68  *
69  * General: wtp responder machine state
70  *
71  * Fields telling the service required:
72  * a) transaction class (is transaction confirmed or not)
73  * b) user acknowledgement flag (do we wait for response primit-
74  * ive of WTP user (for instance, WSP) or not)
75  *
76  * Machine identification: address four-tuple and transaction identifier
77  *
78  * Field required for tid verification:
79  * a) packed wsp invoke indication, which is required by the
80  * protocol
81  *
82  * Fields required for reliable transmission:
83  * a) pointer to the timer of this machine in the timers list
84  * b) counters for acknowledgement waiting periods and retrans-
85  * missions
86  * c) flag telling are we resending the result or not
87  * d) similar flag for acknowledgements
88  * e) packed result message, for greater effectivity
89  */
90 
91 #if !defined(MACHINE)
92  #error "Macro MACHINE is missing."
93 #elif !defined(INTEGER)
94  #error "Macro INTEGER is missing."
95 #elif !defined(ENUM)
96  #error "Macro ENUM is missing."
97 #elif !defined(TIMER)
98  #error "Macro TIMER is missing."
99 #elif !defined(EVENT)
100  #error "Macro EVENT is missing."
101 #elif !defined(LIST)
102  #error "Macro LIST is missing."
103 #elif !defined(SARDATA)
104  #error "Macro SARDATA is missing."
105 #elif !defined(ADDRTUPLE)
106  #error "Macro ADDRTUPLE is missing."
107 #endif
108 
109 MACHINE(ENUM(state)
110  INTEGER(tid) /* transaction identifier */
111  ADDRTUPLE(addr_tuple)
112  INTEGER(tcl) /* transaction class */
113  INTEGER(aec) /* counter telling how many timer periods
114  we have waited for acknowledgement */
115  INTEGER(rcr) /* retransmission counter */
116  INTEGER(u_ack) /* user acknowledgement flag (are user
117  acknowledgement required) */
118  INTEGER(rid) /* retransmission flag, telling are we
119  resending the result */
120  EVENT(result) /* packed result message - for resending */
121  INTEGER(ack_pdu_sent) /* are we resending the acknowledgement */
122  TIMER(timer) /* pointer to the timer of this machine timer
123  in the global timers list */
124  EVENT(invoke_indication) /* packed wsp invoke indication - for tid
125  verification */
126  EVENT(sar_invoke) /* initial invoke for SAR, accumulate user_data */
127  LIST(sar_info)
128  SARDATA(sar) /* ! NULL if were we asked for SAR */
129  )
130 
131 #undef MACHINE
132 #undef INTEGER
133 #undef ENUM
134 #undef TIMER
135 #undef EVENT
136 #undef LIST
137 #undef SARDATA
138 #undef ADDRTUPLE
See file LICENSE for details about the license agreement for using, modifying, copying or deriving work from this software.