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

手机WAP编程

开发平台:

WINDOWS

  1. /* wsp_caps.h - interface to WSP capability negotiation
  2.  *
  3.  * Richard Braakman
  4.  */
  5. #ifndef WSP_CAPS_H
  6. #define WSP_CAPS_H
  7. #include "gwlib/gwlib.h"
  8. struct capability {
  9. /* One or the other of these is set.  id is only meaningful
  10.  * if name is NULL.  (Unfortunately the WSP spec does not
  11.  * really assign names to the numeric ids, so we can't translate
  12.  * them all to text.) */
  13. int id;
  14. Octstr *name;
  15. /* Raw data for this capability.  Can be NULL if there is none. */
  16. Octstr *data;
  17. /* If data is NULL, this field determines if the request should
  18.  * be accepted or rejected. */
  19. int accept;
  20. };
  21. typedef struct capability Capability;
  22. /* See table 37 */
  23. enum known_caps {
  24. WSP_CAPS_CLIENT_SDU_SIZE = 0,
  25. WSP_CAPS_SERVER_SDU_SIZE = 1,
  26. WSP_CAPS_PROTOCOL_OPTIONS = 2,
  27. WSP_CAPS_METHOD_MOR = 3,
  28. WSP_CAPS_PUSH_MOR = 4,
  29. WSP_CAPS_EXTENDED_METHODS = 5,
  30. WSP_CAPS_HEADER_CODE_PAGES = 6,
  31. WSP_CAPS_ALIASES = 7,
  32. WSP_NUM_CAPS
  33. };
  34. /* Create a new Capability structure.  For numbered capabilities (which
  35.  * is all of the known ones), use NULL for the name.  The data may also
  36.  * be NULL. */
  37. Capability *wsp_cap_create(int id, Octstr *name, Octstr *data);
  38. void wsp_cap_destroy(Capability *cap);
  39. void wsp_cap_dump(Capability *cap);
  40. void wsp_cap_dump_list(List *caps_list);
  41. /* Destroy all Capabilities in a list, as well as the list itself. */
  42. void wsp_cap_destroy_list(List *caps_list);
  43. /* Duplicate a list of Capabilities */
  44. List *wsp_cap_duplicate_list(List *cap);
  45. Capability *wsp_cap_duplicate(Capability *cap);
  46. /* Return a list of Capability structures */
  47. List *wsp_cap_unpack_list(Octstr *caps);
  48. /* Encode a list of Capability structures according to the WSP spec */
  49. Octstr *wsp_cap_pack_list(List *caps_list);
  50. /* Access functions.  All of them return the number of requests that 
  51.  * match the capability being searched for, and if they have an output
  52.  * parameter, they set it to the value of the first such request. */
  53. int wsp_cap_count(List *caps_list, int id, Octstr *name);
  54. int wsp_cap_get_client_sdu(List *caps_list, unsigned long *sdu);
  55. int wsp_cap_get_server_sdu(List *caps_list, unsigned long *sdu);
  56. int wsp_cap_get_method_mor(List *caps_list, unsigned long *mor);
  57. int wsp_cap_get_push_mor(List *caps_list, unsigned long *mor);
  58. #endif