wsp_push_client_states.def
资源名称:gateway-1.2.1 [点击查看]
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:3k
源码类别:
手机WAP编程
开发平台:
WINDOWS
- /*
- * wsp_push_client_states.def: Macros defining wsp push client state table
- * rows.
- * See documentation for guidance how to use and update these.
- * 1 means an unconditional action, {} an ignored event.
- *
- * By Aarno Syv鋘en for Wapit Ltd.
- */
- PUSH_CLIENT_STATE_NAME(PUSH_CLIENT_NULL_STATE)
- PUSH_CLIENT_STATE_NAME(PUSH_CLIENT_RECEIVING)
- ROW(PUSH_CLIENT_NULL_STATE,
- TR_Invoke_Ind,
- e->u.TR_Invoke_Ind.tcl == 1 && pdu->type == ConfirmedPush,
- {
- Octstr *push_body;
- List *push_headers;
- if (pdu->u.ConfirmedPush.headers_len > 0)
- push_headers = wsp_headers_unpack(pdu->u.ConfirmedPush.headers, 0);
- else
- push_headers = NULL;
- http_remove_hop_headers(push_headers);
- http_header_pack(push_headers);
- gw_assert(push_headers);
- cpm->push_headers = http_header_duplicate(push_headers);
- push_body = octstr_duplicate(pdu->u.ConfirmedPush.data);
- http_destroy_headers(push_headers);
- /*
- * For debugging: just tell about the push OTA event, and destroy it here -
- * handle_event does not do it.
- */
- indicate_confirmedpush(cpm, push_body);
- octstr_destroy(push_body);
- /*
- * For debugging: create S_ConfirmedPush_Res by ourselves and send it to
- * ourselves.
- */
- response_confirmedpush(cpm);
- },
- PUSH_CLIENT_RECEIVING)
- ROW(PUSH_CLIENT_RECEIVING,
- S_ConfirmedPush_Res,
- 1,
- {
- response_responder_invoke(cpm);
- },
- PUSH_CLIENT_NULL_STATE)
- ROW(PUSH_CLIENT_RECEIVING,
- S_PushAbort_Req,
- 1,
- {
- send_abort_to_responder(cpm, e->u.S_PushAbort_Req.reason);
- indicate_pushabort(cpm, e->u.S_PushAbort_Req.reason);
- },
- PUSH_CLIENT_NULL_STATE)
- ROW(PUSH_CLIENT_RECEIVING,
- Abort_Event,
- 1,
- {
- send_abort_to_responder(cpm, e->u.S_PushAbort_Req.reason);
- indicate_pushabort(cpm, WSP_ABORT_USERREQ);
- },
- PUSH_CLIENT_NULL_STATE)
- ROW(PUSH_CLIENT_RECEIVING,
- TR_Abort_Ind,
- e->u.TR_Abort_Ind.abort_code == WSP_ABORT_DISCONNECT,
- {
- WAPEvent *wsp_event;
- wsp_event = wap_event_create(Disconnect_Event);
- wsp_event->u.Disconnect_Event.session_handle = cpm->client_push_id;
- list_append(push_client_queue, wsp_event);
- },
- PUSH_CLIENT_NULL_STATE)
- ROW(PUSH_CLIENT_RECEIVING,
- TR_Abort_Ind,
- e->u.TR_Abort_Ind.abort_code == WSP_ABORT_SUSPEND,
- {
- WAPEvent *wsp_event;
- wsp_event = wap_event_create(Suspend_Event);
- wsp_event->u.Suspend_Event.session_handle = cpm->client_push_id;
- list_append(push_client_queue, wsp_event);
- },
- PUSH_CLIENT_NULL_STATE)
- ROW(PUSH_CLIENT_RECEIVING,
- TR_Abort_Ind,
- e->u.TR_Abort_Ind.abort_code != WSP_ABORT_DISCONNECT &&
- e->u.TR_Abort_Ind.abort_code != WSP_ABORT_SUSPEND,
- {
- indicate_pushabort(cpm, e->u.S_PushAbort_Req.reason);
- },
- PUSH_CLIENT_NULL_STATE)
- #undef PUSH_CLIENT_STATE_NAME
- #undef ROW