Kannel: Open Source WAP and SMS gateway  $Revision: 5037 $
wtp_init_machine.def
Go to the documentation of this file.
1 /* ====================================================================
2  * The Kannel Software License, Version 1.0
3  *
4  * Copyright (c) 2001-2016 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  * wtp_init_machine.def: macro call for generating WTP initiator state
59  * machine. See the architecture document for guidance how to use and update
60  * 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: a) wtp initiator machine state
70  * b) tidnew flag, telling whether tid is wrapped up
71  *
72  * Fields telling the service required:
73  * a) transaction class (is transaction confirmed or not)
74  * b) user acknowledgement flag (do we wait for response
75  * primitive of WTP user (for instance, WSP) or not)
76  *
77  * Machine identification: address four-tuple and transaction identifier
78  *
79  * Fields required for reliable transmission:
80  * a) pointer to the timer of this machine in the timers list
81  * b) counter for retransmissions
82  * c) flag telling are we resending ack pdu doing tid verifica-
83  * tion or not
84  * d) packed invoke message, for greater effectivity
85  */
86 
87 
88 #if !defined(MACHINE)
89  #error "Macro MACHINE is missing."
90 #elif !defined(INTEGER)
91  #error "Macro INTEGER is missing."
92 #elif !defined(ENUM)
93  #error "Macro ENUM is missing."
94 #elif !defined(EVENT)
95  #error "Macro EVENT is missing."
96 #elif !defined(TIMER)
97  #error "Macro TIMER is missing."
98 #elif !defined(ADDRTUPLE)
99  #error "Macro ADDRTUPLE is missing."
100 #endif
101 
102 MACHINE(ENUM(state)
103  INTEGER(tid) /* transaction identifier */
104  ADDRTUPLE(addr_tuple)
105  INTEGER(tidnew) /* tidnew flag */
106  INTEGER(u_ack) /* user acknowledgement flag */
107  EVENT(invoke) /* invoke datagram for resending */
108  TIMER(timer)
109  INTEGER(rcr) /* retransmission counter */
110  INTEGER(tidok_sent) /* are we resending tid verification */
111  INTEGER(rid) /* are we resending invoke */
112  )
113 
114 #undef MACHINE
115 #undef ENUM
116 #undef EVENT
117 #undef INTEGER
118 #undef ADDRTUPLE
119 #undef TIMER
See file LICENSE for details about the license agreement for using, modifying, copying or deriving work from this software.