gobex-packet.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. *
  4. * OBEX library with GLib integration
  5. *
  6. * Copyright (C) 2011 Intel Corporation. All rights reserved.
  7. *
  8. */
  9. #ifndef __GOBEX_PACKET_H
  10. #define __GOBEX_PACKET_H
  11. #include <stdarg.h>
  12. #include <glib.h>
  13. #include "gobex/gobex-defs.h"
  14. #include "gobex/gobex-header.h"
  15. /* Request opcodes */
  16. #define G_OBEX_OP_CONNECT 0x00
  17. #define G_OBEX_OP_DISCONNECT 0x01
  18. #define G_OBEX_OP_PUT 0x02
  19. #define G_OBEX_OP_GET 0x03
  20. #define G_OBEX_OP_SETPATH 0x05
  21. #define G_OBEX_OP_ACTION 0x06
  22. #define G_OBEX_OP_SESSION 0x07
  23. #define G_OBEX_OP_ABORT 0x7f
  24. /* Response codes */
  25. #define G_OBEX_RSP_CONTINUE 0x10
  26. #define G_OBEX_RSP_SUCCESS 0x20
  27. #define G_OBEX_RSP_CREATED 0x21
  28. #define G_OBEX_RSP_ACCEPTED 0x22
  29. #define G_OBEX_RSP_NON_AUTHORITATIVE 0x23
  30. #define G_OBEX_RSP_NO_CONTENT 0x24
  31. #define G_OBEX_RSP_RESET_CONTENT 0x25
  32. #define G_OBEX_RSP_PARTIAL_CONTENT 0x26
  33. #define G_OBEX_RSP_MULTIPLE_CHOICES 0x30
  34. #define G_OBEX_RSP_MOVED_PERMANENTLY 0x31
  35. #define G_OBEX_RSP_MOVED_TEMPORARILY 0x32
  36. #define G_OBEX_RSP_SEE_OTHER 0x33
  37. #define G_OBEX_RSP_NOT_MODIFIED 0x34
  38. #define G_OBEX_RSP_USE_PROXY 0x35
  39. #define G_OBEX_RSP_BAD_REQUEST 0x40
  40. #define G_OBEX_RSP_UNAUTHORIZED 0x41
  41. #define G_OBEX_RSP_PAYMENT_REQUIRED 0x42
  42. #define G_OBEX_RSP_FORBIDDEN 0x43
  43. #define G_OBEX_RSP_NOT_FOUND 0x44
  44. #define G_OBEX_RSP_METHOD_NOT_ALLOWED 0x45
  45. #define G_OBEX_RSP_NOT_ACCEPTABLE 0x46
  46. #define G_OBEX_RSP_PROXY_AUTH_REQUIRED 0x47
  47. #define G_OBEX_RSP_REQUEST_TIME_OUT 0x48
  48. #define G_OBEX_RSP_CONFLICT 0x49
  49. #define G_OBEX_RSP_GONE 0x4a
  50. #define G_OBEX_RSP_LENGTH_REQUIRED 0x4b
  51. #define G_OBEX_RSP_PRECONDITION_FAILED 0x4c
  52. #define G_OBEX_RSP_REQ_ENTITY_TOO_LARGE 0x4d
  53. #define G_OBEX_RSP_REQ_URL_TOO_LARGE 0x4e
  54. #define G_OBEX_RSP_UNSUPPORTED_MEDIA_TYPE 0x4f
  55. #define G_OBEX_RSP_INTERNAL_SERVER_ERROR 0x50
  56. #define G_OBEX_RSP_NOT_IMPLEMENTED 0x51
  57. #define G_OBEX_RSP_BAD_GATEWAY 0x52
  58. #define G_OBEX_RSP_SERVICE_UNAVAILABLE 0x53
  59. #define G_OBEX_RSP_GATEWAY_TIMEOUT 0x54
  60. #define G_OBEX_RSP_VERSION_NOT_SUPPORTED 0x55
  61. #define G_OBEX_RSP_DATABASE_FULL 0x60
  62. #define G_OBEX_RSP_DATABASE_LOCKED 0x61
  63. typedef struct _GObexPacket GObexPacket;
  64. GObexHeader *g_obex_packet_get_header(GObexPacket *pkt, guint8 id);
  65. GObexHeader *g_obex_packet_get_body(GObexPacket *pkt);
  66. guint8 g_obex_packet_get_operation(GObexPacket *pkt, gboolean *final);
  67. gboolean g_obex_packet_prepend_header(GObexPacket *pkt, GObexHeader *header);
  68. gboolean g_obex_packet_add_header(GObexPacket *pkt, GObexHeader *header);
  69. gboolean g_obex_packet_add_body(GObexPacket *pkt, GObexDataProducer func,
  70. gpointer user_data);
  71. gboolean g_obex_packet_add_unicode(GObexPacket *pkt, guint8 id,
  72. const char *str);
  73. gboolean g_obex_packet_add_bytes(GObexPacket *pkt, guint8 id,
  74. const void *data, gsize len);
  75. gboolean g_obex_packet_add_uint8(GObexPacket *pkt, guint8 id, guint8 val);
  76. gboolean g_obex_packet_add_uint32(GObexPacket *pkt, guint8 id, guint32 val);
  77. gboolean g_obex_packet_set_data(GObexPacket *pkt, const void *data, gsize len,
  78. GObexDataPolicy data_policy);
  79. const void *g_obex_packet_get_data(GObexPacket *pkt, gsize *len);
  80. GObexPacket *g_obex_packet_new(guint8 opcode, gboolean final,
  81. guint first_hdr_id, ...);
  82. GObexPacket *g_obex_packet_new_valist(guint8 opcode, gboolean final,
  83. guint first_hdr_id, va_list args);
  84. void g_obex_packet_free(GObexPacket *pkt);
  85. GObexPacket *g_obex_packet_decode(const void *data, gsize len,
  86. gsize header_offset,
  87. GObexDataPolicy data_policy,
  88. GError **err);
  89. gssize g_obex_packet_encode(GObexPacket *pkt, guint8 *buf, gsize len);
  90. #endif /* __GOBEX_PACKET_H */