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

手机WAP编程

开发平台:

WINDOWS

  1. /* wsp_pdu.h - definitions for unpacked WTP protocol data units
  2.  *
  3.  * This file generates a structure definition and some function
  4.  * declarations from wtp_pdu.def, using preprocessor magic.
  5.  *
  6.  * Richard Braakman
  7.  */
  8. #ifndef WSP_PDU_H
  9. #define WSP_PDU_H
  10. #include "gwlib/gwlib.h"
  11. /* The Get and Post PDUs contain a "subtype" field.  Sometimes we
  12.  * have to reconstruct the full method number.  For methods encoded
  13.  * in Get PDUs, this is GET_METHODS + subtype.  For methods encoded
  14.  * in Post PDUs, this is POST_METHODS + subtype. */
  15. enum {
  16.     GET_METHODS = 0x40,
  17.     POST_METHODS = 0x60
  18. };
  19. /* Enumerate the symbolic names of the PDUs */
  20. enum wsp_pdu_types {
  21. #define PDU(name, docstring, fields, is_valid) name,
  22. #include "wsp_pdu.def"
  23. #undef PDU
  24. };
  25. struct wsp_pdu {
  26. int type;
  27. union {
  28. /* For each PDU, declare a structure with its fields, named after the PDU */
  29. #define PDU(name, docstring, fields, is_valid) struct name { fields } name;
  30. #define UINT(field, docstring, bits) unsigned long field;
  31. #define UINTVAR(field, docstring) unsigned long field;
  32. #define OCTSTR(field, docstring, lengthfield) Octstr *field;
  33. #define REST(field, docstring) Octstr *field;
  34. #define TYPE(bits, value)
  35. #define RESERVED(bits)
  36. #define TPI(confield)
  37. #include "wsp_pdu.def"
  38. #undef TPI
  39. #undef RESERVED
  40. #undef TYPE
  41. #undef REST
  42. #undef OCTSTR
  43. #undef UINTVAR
  44. #undef UINT
  45. #undef PDU
  46. } u;
  47. };
  48. typedef struct wsp_pdu WSP_PDU;
  49. WSP_PDU *wsp_pdu_create(int type);
  50. WSP_PDU *wsp_pdu_unpack(Octstr *data);
  51. Octstr *wsp_pdu_pack(WSP_PDU *pdu);
  52. void wsp_pdu_dump(WSP_PDU *pdu, int level);
  53. void wsp_pdu_destroy(WSP_PDU *pdu);
  54. #endif