wap_push_ppg.h
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:4k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * Push PPG main module header
  3.  *
  4.  * This module implements following Wapforum specifications:
  5.  *      WAP-151-PPGService-19990816-a (called afterwards ppg),
  6.  *      WAP-164-PAP-19991108-a (pap),
  7.  *      WAP-164_100-PAP-20000218-a (pap implementation note).
  8.  * 
  9.  * We refer following Wapforum specifications:
  10.  *      WAP-145-PushMessage-19990816-a (push message)
  11.  *      WAP-200-WDP-20001212-a (wdp)
  12.  *      WAP-203-WSP-20000504-a (wsp)
  13.  *      WAP-189-PushOTA-20000217-a (ota).
  14.  *
  15.  * In addition, rfcs 1521, 2045 and 2617 are referred.
  16.  *
  17.  * By Aarno Syv鋘en for Wapit Ltd and for Wiral Ltd.
  18.  */
  19. #ifndef WAP_PUSH_PPG_H
  20. #define WAP_PUSH_PPG_H
  21. #include "wap/wap_events.h"
  22. #include "wap/wap.h"
  23. #include "wap/wap_addr.h"
  24. #include "gwlib/gwlib.h"
  25. typedef struct PPGSessionMachine PPGSessionMachine;
  26. typedef struct PPGPushMachine PPGPushMachine;
  27. /*
  28.  * Enumerations used by PPG main module for PAP attribute, see PPG Services, 
  29.  * Chapter 6.
  30.  *
  31.  * Message state
  32.  */
  33. enum {
  34.     PAP_UNDELIVERABLE,         /* general message status */
  35.     PAP_UNDELIVERABLE1,        /* transformation failure */
  36.     PAP_UNDELIVERABLE2,        /* no bearer support */
  37.     PAP_PENDING,
  38.     PAP_EXPIRED,
  39.     PAP_DELIVERED,             /* general message status */
  40.     PAP_DELIVERED1,            /* for unconfirmed push, PPG internal */
  41.     PAP_DELIVERED2,            /* for confirmed push, PPG internal  */
  42.     PAP_ABORTED,
  43.     PAP_TIMEOUT,
  44.     PAP_CANCELLED
  45. };
  46. /*
  47.  * PAP protocol status codes used by PPG main module. See Push Access Protocol,
  48.  * 9.13 and 9.14. 
  49.  */
  50. enum {
  51.     PAP_OK = 1000,
  52.     PAP_ACCEPTED_FOR_PROCESSING = 1001,
  53.     PAP_BAD_REQUEST = 2000, 
  54.     PAP_FORBIDDEN = 2001,
  55.     PAP_ADDRESS_ERROR = 2002,
  56.     PAP_CAPABILITIES_MISMATCH = 2005,
  57.     PAP_DUPLICATE_PUSH_ID = 2007,
  58.     PAP_INTERNAL_SERVER_ERROR = 3000,
  59.     PAP_TRANSFORMATION_FAILURE = 3006,
  60.     PAP_REQUIRED_BEARER_NOT_AVAILABLE = 3010,
  61.     PAP_SERVICE_FAILURE = 4000,
  62.     PAP_CLIENT_ABORTED = 5000,
  63.     PAP_ABORT_USERPND = 5028
  64. };
  65. /*
  66.  * Values for last attribute (it is, is this message last using this bearer).
  67.  */
  68. enum {
  69.     NOT_LAST,
  70.     LAST
  71. };
  72. /*
  73.  * Enumerations used by PAP message fields, see Push Access Protocol, Chapter
  74.  * 9. Default values are the first ones (ones having value 0)
  75.  *
  76.  * Simple answer to question is something required or not
  77.  */
  78. enum {
  79.     PAP_FALSE,
  80.     PAP_TRUE
  81. };
  82. /*
  83.  * Priority
  84.  */
  85. enum {
  86.     PAP_MEDIUM,
  87.     PAP_HIGH,
  88.     PAP_LOW
  89. };
  90. /*
  91.  * Delivery method
  92.  */
  93. enum {
  94.     PAP_NOT_SPECIFIED = 0,
  95.     PAP_PREFERCONFIRMED = 1,
  96.     PAP_UNCONFIRMED = 2,
  97.     PAP_CONFIRMED = 3
  98. };
  99. /*
  100.  * Port number definitions
  101.  */
  102. enum {
  103.     CONNECTIONLESS_PUSH_CLIPORT = 2948,
  104.     CONNECTIONLESS_SERVPORT = 9200,
  105.     CONNECTED_CLIPORT = 9209,
  106.     CONNECTED_SERVPORT = 9201
  107. };
  108. struct PPGSessionMachine {
  109.     #define OCTSTR(name) Octstr *name;
  110.     #define ADDRTUPLE(name) WAPAddrTuple *name;
  111.     #define INTEGER(name) long name;
  112.     #define PUSHMACHINES(name) List *name;
  113.     #define CAPABILITIES(name) List *name;
  114.     #define MACHINE(fields) fields
  115.     #include "wap_ppg_session_machine.def"
  116. };
  117. struct PPGPushMachine {
  118.     #define OCTSTR(name) Octstr *name;
  119.     #define OPTIONAL_OCTSTR(name) Octstr *name;
  120.     #define INTEGER(name) long name;
  121.     #define ADDRTUPLE(name) WAPAddrTuple *name;
  122.     #define HTTPHEADER(name) List *name;
  123.     #define CAPABILITIES(name) List *name;
  124.     #define MACHINE(fields) fields
  125.     #include "wap_ppg_push_machine.def"
  126. };
  127. void wap_push_ppg_init(wap_dispatch_func_t *ota_dispatch,
  128.                        wap_dispatch_func_t *appl_dispatch, Cfg *cfg);
  129. void wap_push_ppg_shutdown(void);
  130. void wap_push_ppg_dispatch_event(WAPEvent *e);
  131. /*
  132.  * Check do we have established a session with an initiator for this push.
  133.  * Initiators are identified by their address tuple (ppg main module does not
  134.  * know wsp sessions until told. 
  135.  */
  136. PPGSessionMachine *wap_push_ppg_have_push_session_for(WAPAddrTuple *tuple);
  137. /*
  138.  * Now iniator are identified by their session id. This function is used after
  139.  * the session is established.
  140.  */
  141. PPGSessionMachine *wap_push_ppg_have_push_session_for_sid(long sid);
  142. #endif