Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

wap_events.h File Reference

#include "gwlib/gwlib.h"
#include "wap_addr.h"
#include "wap_events.def"

Include dependency graph for wap_events.h:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Data Structures

struct  WAPEvent

Defines

#define WAPEVENT(name, prettyname, fields)   name,
#define WAPEVENT(name, prettyname, fields)   struct name { fields } name;
#define OCTSTR(name)   Octstr *name;
#define OPTIONAL_OCTSTR(name)   Octstr *name;
#define INTEGER(name)   long name;
#define HTTPHEADER(name)   List *name;
#define WTLSPDUS(name)   List *name;
#define ADDRTUPLE(name)   WAPAddrTuple *name;
#define CAPABILITIES(name)   List *name;
#define wap_event_create(type)   gw_claim_area(wap_event_create_real((type), __FILE__, __LINE__, __func__))

Typedefs

typedef WAPEvent WAPEvent

Enumerations

enum  WAPEventName {
  name, prettyname, T_Unitdata_Ind, ind,
  SEC_Create_Ind, ind, SEC_Create_Request_Req, req,
  SEC_Terminate_Req, req, SEC_Exception_Req, req,
  SEC_Create_Res, res, SEC_Exchange_Req, req,
  SEC_Commit_Req, req, SEC_Unitdata_Req, req,
  T_DUnitdata_Req, req, T_DUnitdata_Ind, ind,
  TR_Invoke_Req, req, TR_Invoke_Ind, ind,
  TR_Invoke_Res, res, TR_Invoke_Cnf, cnf,
  TR_Result_Req, req, TR_Result_Cnf, cnf,
  TR_Abort_Req, req, TR_Abort_Ind, ind,
  S_Connect_Ind, ind, S_Connect_Res, res,
  S_Suspend_Ind, ind, S_Resume_Ind, ind,
  S_Resume_Res, res, S_Connect_Req, req,
  S_Suspend_Req, req, S_Resume_Req, req,
  S_Resume_Cnf, cnf, S_Disconnect_Req, req,
  S_Disconnect_Ind, ind, Disconnect_Event, Disconnect,
  Suspend_Event, Suspend, Release_Event, Release,
  Abort_Event, Abort, S_MethodInvoke_Ind, ind,
  S_MethodInvoke_Res, res, S_MethodResult_Req, req,
  S_MethodResult_Cnf, cnf, S_MethodInvoke_Req, req,
  S_MethodInvoke_Cnf, cnf, S_MethodResult_Ind, ind,
  S_MethodResult_Res, res, S_MethodAbort_Req, req,
  S_MethodAbort_Ind, ind, S_Push_Req, req,
  S_Push_Ind, ind, S_ConfirmedPush_Req, req,
  S_ConfirmedPush_Ind, ind, S_ConfirmedPush_Res, res,
  S_ConfirmedPush_Cnf, cnf, S_PushAbort_Ind, ind,
  S_PushAbort_Req, req, Push_Abort, abort,
  RcvInvoke, RcvInvoke, RcvSegInvoke, RcvSegInvoke,
  RcvResult, RcvResult, RcvAbort, RcvAbort,
  RcvAck, RcvAck, RcvNegativeAck, RcvNack,
  TimerTO_A, A, TimerTO_R, R,
  TimerTO_W, W, RcvErrorPDU, RcvErrorPDU,
  S_Unit_MethodInvoke_Req, req, S_Unit_MethodInvoke_Ind, ind,
  S_Unit_MethodResult_Req, req, S_Unit_MethodResult_Ind, ind,
  S_Unit_Push_Req, req, S_Unit_Push_Ind, ind,
  Pom_SessionRequest_Req, req, Pom_Connect_Ind, ind,
  Pom_Connect_Res, res, Pom_Disconnect_Ind, ind,
  Pom_Suspend_Ind, ind, Pom_Resume_Ind, ind,
  Po_Push_Req, req, Po_ConfirmedPush_Req, req,
  Po_ConfirmedPush_Cnf, Cnf, Po_Unit_Push_Req, req,
  Po_PushAbort_Req, req, Po_PushAbort_Ind, ind,
  Push_Message, message, Push_Response, response,
  Progress_Note, note, Bad_Message_Response, response,
  WAPEventNameCount
}

Functions

WAPEventwap_event_create_real (WAPEventName type, const char *file, long line, const char *func)
void wap_event_destroy (WAPEvent *event)
void wap_event_destroy_item (void *event)
WAPEventwap_event_duplicate (WAPEvent *event)
const char * wap_event_name (WAPEventName type)
void wap_event_dump (WAPEvent *event)
void wap_event_assert (WAPEvent *event)


Define Documentation

#define ADDRTUPLE name   )     WAPAddrTuple *name;
 

Definition at line 97 of file wap_events.h.

#define CAPABILITIES name   )     List *name;
 

Definition at line 98 of file wap_events.h.

#define HTTPHEADER name   )     List *name;
 

Definition at line 95 of file wap_events.h.

#define INTEGER name   )     long name;
 

Definition at line 94 of file wap_events.h.

#define OCTSTR name   )     Octstr *name;
 

Definition at line 92 of file wap_events.h.

#define OPTIONAL_OCTSTR name   )     Octstr *name;
 

Definition at line 93 of file wap_events.h.

#define wap_event_create type   )     gw_claim_area(wap_event_create_real((type), __FILE__, __LINE__, __func__))
 

Definition at line 107 of file wap_events.h.

Referenced by abort_methods(), abort_push(), abort_pushes(), confirm_push(), create_session(), create_tr_abort_ind(), create_tr_invoke_cnf(), create_tr_invoke_ind(), create_tr_result_cnf(), disconnect_other_sessions(), indicate_confirmedpush(), indicate_disconnect(), indicate_method_abort(), indicate_push_abort(), indicate_push_connection(), indicate_push_disconnect(), indicate_push_resume(), indicate_push_suspend(), indicate_pushabort(), indicate_resume(), indicate_suspend(), main(), main_thread(), make_abort(), make_confirmed_push_request(), make_push_request(), make_session_request(), make_unit_push_request(), method_abort(), pack_error(), pack_into_push_datagram(), pack_into_result_datagram(), release_holding_methods(), request_confirmed_push(), request_push(), request_unit_push(), response_confirmedpush(), response_push_connection(), response_push_message(), response_responder_invoke(), return_session_reply(), return_unit_reply(), send_abort_to_responder(), send_invoke(), start_initiator_timer_R(), start_timer_A(), start_timer_R(), start_timer_W(), unpack_abort(), unpack_ack(), unpack_datagram(), unpack_invoke(), unpack_negative_ack(), unpack_result(), unpack_segmented_invoke(), wap_event_accept_or_create(), wdp_msg2event(), wtp_pack_abort(), wtp_pack_ack(), wtp_pack_invoke(), wtp_pack_result(), wtp_pack_sar_ack(), and wtp_pack_sar_result().

#define WAPEVENT name,
prettyname,
fields   )     struct name { fields } name;
 

Definition at line 91 of file wap_events.h.

#define WAPEVENT name,
prettyname,
fields   )     name,
 

Definition at line 91 of file wap_events.h.

#define WTLSPDUS name   )     List *name;
 

Definition at line 96 of file wap_events.h.


Typedef Documentation

typedef struct WAPEvent WAPEvent
 

Definition at line 72 of file wap_events.h.


Enumeration Type Documentation

enum WAPEventName
 

Enumeration values:
name 
prettyname 
T_Unitdata_Ind 
ind 
SEC_Create_Ind 
ind 
SEC_Create_Request_Req 
req 
SEC_Terminate_Req 
req 
SEC_Exception_Req 
req 
SEC_Create_Res 
res 
SEC_Exchange_Req 
req 
SEC_Commit_Req 
req 
SEC_Unitdata_Req 
req 
T_DUnitdata_Req 
req 
T_DUnitdata_Ind 
ind 
TR_Invoke_Req 
req 
TR_Invoke_Ind 
ind 
TR_Invoke_Res 
res 
TR_Invoke_Cnf 
cnf 
TR_Result_Req 
req 
TR_Result_Cnf 
cnf 
TR_Abort_Req 
req 
TR_Abort_Ind 
ind 
S_Connect_Ind 
ind 
S_Connect_Res 
res 
S_Suspend_Ind 
ind 
S_Resume_Ind 
ind 
S_Resume_Res 
res 
S_Connect_Req 
req 
S_Suspend_Req 
req 
S_Resume_Req 
req 
S_Resume_Cnf 
cnf 
S_Disconnect_Req 
req 
S_Disconnect_Ind 
ind 
Disconnect_Event 
Disconnect 
Suspend_Event 
Suspend 
Release_Event 
Release 
Abort_Event 
Abort 
S_MethodInvoke_Ind 
ind 
S_MethodInvoke_Res 
res 
S_MethodResult_Req 
req 
S_MethodResult_Cnf 
cnf 
S_MethodInvoke_Req 
req 
S_MethodInvoke_Cnf 
cnf 
S_MethodResult_Ind 
ind 
S_MethodResult_Res 
res 
S_MethodAbort_Req 
req 
S_MethodAbort_Ind 
ind 
S_Push_Req 
req 
S_Push_Ind 
ind 
S_ConfirmedPush_Req 
req 
S_ConfirmedPush_Ind 
ind 
S_ConfirmedPush_Res 
res 
S_ConfirmedPush_Cnf 
cnf 
S_PushAbort_Ind 
ind 
S_PushAbort_Req 
req 
Push_Abort 
abort 
RcvInvoke 
RcvInvoke 
RcvSegInvoke 
RcvSegInvoke 
RcvResult 
RcvResult 
RcvAbort 
RcvAbort 
RcvAck 
RcvAck 
RcvNegativeAck 
RcvNack 
TimerTO_A 
A 
TimerTO_R 
R 
TimerTO_W 
W 
RcvErrorPDU 
RcvErrorPDU 
S_Unit_MethodInvoke_Req 
req 
S_Unit_MethodInvoke_Ind 
ind 
S_Unit_MethodResult_Req 
req 
S_Unit_MethodResult_Ind 
ind 
S_Unit_Push_Req 
req 
S_Unit_Push_Ind 
ind 
Pom_SessionRequest_Req 
req 
Pom_Connect_Ind 
ind 
Pom_Connect_Res 
res 
Pom_Disconnect_Ind 
ind 
Pom_Suspend_Ind 
ind 
Pom_Resume_Ind 
ind 
Po_Push_Req 
req 
Po_ConfirmedPush_Req 
req 
Po_ConfirmedPush_Cnf 
Cnf 
Po_Unit_Push_Req 
req 
Po_PushAbort_Req 
req 
Po_PushAbort_Ind 
ind 
Push_Message 
message 
Push_Response 
response 
Progress_Note 
note 
Bad_Message_Response 
response 
WAPEventNameCount 

Definition at line 77 of file wap_events.h.

00077              {
00078     #define WAPEVENT(name, prettyname, fields) name,
00079     #include "wap_events.def"
00080     WAPEventNameCount
00081 } WAPEventName;


Function Documentation

void wap_event_assert WAPEvent event  ) 
 

Definition at line 217 of file wap_events.c.

References debug(), event, gw_assert, WAPEvent::type, and WAPEventNameCount.

Referenced by main_thread(), parse_document(), push_client_event_handle(), unpack_wdp_datagram_real(), wap_event_destroy(), wap_event_duplicate(), wsp_session_dispatch_event(), wsp_unit_dispatch_event(), and wtp_unpack_wdp_datagram().

00217                                        {
00218     gw_assert(event != NULL),
00219     gw_assert(event->type >= 0);
00220     gw_assert(event->type < WAPEventNameCount);
00221 
00222     switch (event->type) {
00223 #define WAPEVENT(name, prettyname, fields) \
00224     case name: \
00225     { struct name *p = &event->u.name; fields; p = NULL; break; }
00226 #define OCTSTR(name) \
00227     gw_assert(p->name != NULL); \
00228     /* This is a trick to make the Octstr module run its assertions */ \
00229     gw_assert(octstr_len(p->name) >= 0);
00230 #define OPTIONAL_OCTSTR(name) \
00231     gw_assert(p->name == NULL || octstr_len(p->name) >= 0);
00232 #define INTEGER(name)
00233 #define WTLSPDUS(name)
00234 #define HTTPHEADER(name)
00235 #define ADDRTUPLE(name) \
00236     gw_assert(p->name != NULL);
00237 #define CAPABILITIES(name)
00238 #include "wap_events.def"
00239     default:
00240         debug("wap.event", 0, "Unknown type");
00241     }
00242 }

Here is the call graph for this function:

WAPEvent* wap_event_create_real WAPEventName  type,
const char *  file,
long  line,
const char *  func
 

Definition at line 70 of file wap_events.c.

References event, file, gw_assert, panic, WAPEvent::type, type, and WAPEventNameCount.

00071                                                   {
00072     WAPEvent *event;
00073     
00074     gw_assert(type >= 0);
00075     gw_assert(type < WAPEventNameCount);
00076 
00077     event = gw_malloc_trace(sizeof(WAPEvent), file, line, func);
00078     event->type = type;
00079 
00080     switch (event->type) {
00081     #define WAPEVENT(name, prettyname, fields) \
00082         case name: \
00083             { struct name *p = &event->u.name; fields } \
00084             break;
00085     #define OCTSTR(name) p->name = NULL;
00086     #define OPTIONAL_OCTSTR(name) p->name = NULL;
00087     #define INTEGER(name) p->name = 0;
00088     #define WTLSPDUS(name) p->name = NULL;
00089     #define HTTPHEADER(name) p->name = NULL;
00090     #define ADDRTUPLE(name) p->name = NULL;
00091     #define CAPABILITIES(name) p->name = NULL;
00092     #include "wap_events.def"
00093     default:
00094         panic(0, "Unknown WAP event type %d", event->type);
00095     }
00096     
00097     return event;
00098 }

void wap_event_destroy WAPEvent event  ) 
 

Definition at line 101 of file wap_events.c.

References event, panic, WAPEvent::type, and wap_event_assert().

Referenced by abort_elapsed(), abort_methods(), abort_pushes(), continue_sar_result(), dispatch_datagram(), gwtimer_destroy(), gwtimer_start(), handle_init_event(), handle_internal_event(), handle_ota_event(), handle_push_message(), handle_session_event(), main(), main_thread(), pap_compile(), process_sar_transaction(), push_client_event_handle(), push_client_machine_find_or_create(), receive_push_reply(), release_holding_methods(), resp_event_handle(), return_replies_thread(), send_push_response(), start_fetch(), tell_fatal_error(), unpack_datagram(), unpack_wdp_datagram_real(), wap_dispatch_datagram(), wap_event_destroy_item(), wdp_event_dump(), wtp_event_dump(), and wtp_unpack_wdp_datagram().

00101                                         {
00102     if (event == NULL)
00103         return;
00104 
00105     wap_event_assert(event);
00106 
00107     switch (event->type) {
00108     #define WAPEVENT(name, prettyname, fields) \
00109         case name: \
00110             { struct name *p = &event->u.name; fields; } \
00111             break;
00112     #define OCTSTR(name) octstr_destroy(p->name);
00113     #define OPTIONAL_OCTSTR(name) octstr_destroy(p->name);
00114     #define INTEGER(name) p->name = 0;
00115     #define WTLSPDUS(name) debug("wap.events",0,"You need to create wtls_pdulist_destroy!");
00116     #define HTTPHEADER(name) http_destroy_headers(p->name);
00117     #define ADDRTUPLE(name) wap_addr_tuple_destroy(p->name);
00118     #define CAPABILITIES(name) wsp_cap_destroy_list(p->name);
00119     #include "wap_events.def"
00120     default:
00121         panic(0, "Unknown WAPEvent type %d", (int) event->type);
00122     }
00123     gw_free(event);
00124 }

Here is the call graph for this function:

void wap_event_destroy_item void *  event  ) 
 

Definition at line 127 of file wap_events.c.

References event, and wap_event_destroy().

Referenced by wap_appl_shutdown(), wap_push_ota_shutdown(), wap_push_ppg_shutdown(), wsp_push_client_shutdown(), wsp_session_shutdown(), wsp_unit_shutdown(), wtp_initiator_shutdown(), and wtp_resp_shutdown().

00127                                          {
00128     wap_event_destroy(event);
00129 }

Here is the call graph for this function:

void wap_event_dump WAPEvent event  ) 
 

Definition at line 178 of file wap_events.c.

References debug(), event, and wap_event_name().

Referenced by add_push_flag(), cant_handle_event(), dispatch_datagram(), find_session_machine(), handle_init_event(), handle_internal_event(), handle_method_event(), handle_ota_event(), handle_push_event(), init_machine_find_or_create(), main(), parse_pap_value(), push_client_event_handle(), push_client_machine_find_or_create(), resp_event_handle(), resp_machine_find_or_create(), truncated_datagram(), unpack_wdp_datagram_real(), wap_dispatch_datagram(), wdp_event_dump(), wtp_event_dump(), and wtp_event_is_for_responder().

00178                                      {
00179     debug("wap.event", 0, "Dumping WAPEvent %p", (void *) event);
00180     if (event != NULL) {
00181         debug("wap.event", 0, "  type = %s", 
00182             wap_event_name(event->type));
00183         switch (event->type) {
00184         #define WAPEVENT(name, prettyname, fields) \
00185             case name: \
00186             { struct name *p = &event->u.name; fields; break; }
00187         #define OCTSTR(name) \
00188             debug("wap.event", 0, "%s =", #name); \
00189             octstr_dump(p->name, 1);
00190         #define OPTIONAL_OCTSTR(name) \
00191             if (p->name == NULL) \
00192                 debug("wap.event", 0, "%s = NULL", #name); \
00193             else { \
00194                 debug("wap.event", 0, "%s =", #name); \
00195                 octstr_dump(p->name, 1); \
00196             }
00197         #define INTEGER(name) \
00198             debug("wap.event", 0, "  %s = %ld", #name, p->name);
00199         #define WTLSPDUS(name) \
00200             debug("wap.event",0,"You need to implement wtls_payloadlist_dump!");
00201         #define HTTPHEADER(name) \
00202             if (p->name == NULL) \
00203                 debug("wap.event", 0, "%s = NULL", #name); \
00204             else \
00205                 http_header_dump(p->name);
00206         #define ADDRTUPLE(name)     wap_addr_tuple_dump(p->name);
00207         #define CAPABILITIES(name)  wsp_cap_dump_list(p->name);
00208         #include "wap_events.def"
00209         default:
00210             debug("wap.event", 0, "Unknown type");
00211         }
00212     }
00213     debug("wap.event", 0, "WAPEvent dump ends.");
00214 }

Here is the call graph for this function:

WAPEvent* wap_event_duplicate WAPEvent event  ) 
 

Definition at line 132 of file wap_events.c.

References event, panic, WAPEvent::type, and wap_event_assert().

Referenced by assembly_sar_event(), begin_sar_result(), continue_sar_result(), elapse_timer(), process_sar_transaction(), and wtp_unpack_wdp_datagram().

00132                                                {
00133     WAPEvent *new;
00134     
00135     if (event == NULL)
00136         return NULL;
00137 
00138     wap_event_assert(event);
00139 
00140     new = gw_malloc(sizeof(WAPEvent));
00141     new->type = event->type;
00142 
00143     switch (event->type) {
00144     #define WAPEVENT(name, prettyname, fields) \
00145         case name: \
00146             { struct name *p = &new->u.name; \
00147               struct name *q = &event->u.name; \
00148               fields } \
00149             break;
00150     #define OCTSTR(name) p->name = octstr_duplicate(q->name);
00151     #define OPTIONAL_OCTSTR(name) p->name = octstr_duplicate(q->name);
00152     #define INTEGER(name) p->name = q->name;
00153     #define WTLSPDUS(name) debug("wap.events",0,"You need to implement wtls_pdulist_duplicate!");
00154     #define HTTPHEADER(name) p->name = http_header_duplicate(q->name);
00155     #define ADDRTUPLE(name) p->name = wap_addr_tuple_duplicate(q->name);
00156     #define CAPABILITIES(name) p->name = wsp_cap_duplicate_list(q->name);
00157     #include "wap_events.def"
00158     default:
00159         panic(0, "Unknown WAP event type %d", event->type);
00160     }
00161     
00162     return new;
00163 }

Here is the call graph for this function:

const char* wap_event_name WAPEventName  type  ) 
 

Definition at line 166 of file wap_events.c.

References panic, and type.

Referenced by abort_elapsed(), elapse_timer(), find_session_machine(), handle_init_event(), handle_method_event(), handle_push_event(), handle_session_event(), main_thread(), push_client_event_handle(), push_client_machine_find_or_create(), resp_event_handle(), wap_event_dump(), and wtp_event_dump().

00166                                               {
00167     switch (type) {
00168     #define WAPEVENT(name, prettyname, fields) \
00169         case name: return prettyname;
00170     #include "wap_events.def"
00171     default:
00172         panic(0, "Unknown WAPEvent type %d", (int) type);
00173         return "unknown WAPEventName";
00174     }
00175 }

See file LICENSE for details about the license agreement for using, modifying, copying or deriving work from this software.