Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

82 rindas
5.2KB

  1. #ifndef _sip_uac_h_
  2. #define _sip_uac_h_
  3. #include "cstring.h"
  4. #include "sip-agent.h"
  5. #if defined(__cplusplus)
  6. extern "C" {
  7. #endif
  8. struct sip_transport_t;
  9. struct sip_uac_transaction_t;
  10. /// call sip_uac_ack on 2xx only
  11. /// @param[out] session user-defined session-id(only code=2xx)
  12. /// @return 0-ok, other-error
  13. typedef int (*sip_uac_oninvite)(void* param, const struct sip_message_t* reply, struct sip_uac_transaction_t* t, struct sip_dialog_t* dialog, int code, void** session);
  14. /// @param[out] session user-defined session-id(only code=2xx)
  15. /// @return 0-ok, other-error
  16. typedef int (*sip_uac_onsubscribe)(void* param, const struct sip_message_t* reply, struct sip_uac_transaction_t* t, struct sip_subscribe_t* subscribe, int code, void** session);
  17. /// @return 0-ok, other-error
  18. typedef int (*sip_uac_onreply)(void* param, const struct sip_message_t* reply, struct sip_uac_transaction_t* t, int code);
  19. /// @return <0-error, 0-udp, 1-tcp, other-reserved
  20. //typedef int (*sip_uac_onsend)(void* param, const char* url, const void* data, int bytes);
  21. /// @param[in] name such as: "Alice <sip:alice@atlanta.com>"
  22. /// @param[in] registrar register server, such as sip:registrar.biloxi.com. can be null.
  23. /// @param[in] seconds expires seconds
  24. struct sip_uac_transaction_t* sip_uac_register(struct sip_agent_t* sip, const char* name, const char* registrar, int seconds, sip_uac_onreply onregister, void* param);
  25. struct sip_uac_transaction_t* sip_uac_options(struct sip_agent_t* sip, const char* from, const char* to, sip_uac_onreply onoptions, void* param);
  26. struct sip_uac_transaction_t* sip_uac_invite(struct sip_agent_t* sip, const char* name, const char* to, sip_uac_oninvite oninvite, void* param);
  27. struct sip_uac_transaction_t* sip_uac_cancel(struct sip_agent_t* sip, struct sip_uac_transaction_t* invite, sip_uac_onreply oncancel, void* param);
  28. struct sip_uac_transaction_t* sip_uac_bye(struct sip_agent_t* sip, struct sip_dialog_t* dialog, sip_uac_onreply onbye, void* param);
  29. struct sip_uac_transaction_t* sip_uac_reinvite(struct sip_agent_t* sip, struct sip_dialog_t* dialog, sip_uac_oninvite oninvite, void* param);
  30. /// @param[in] req100rel sip 180/183 response with Require: 100rel
  31. struct sip_uac_transaction_t* sip_uac_prack(struct sip_agent_t* sip, const struct sip_message_t* req100rel, struct sip_dialog_t* dialog, sip_uac_onreply onreply, void* param);
  32. struct sip_uac_transaction_t* sip_uac_update(struct sip_agent_t* sip, struct sip_dialog_t* dialog, sip_uac_onreply onreply, void* param);
  33. /// @param[in] dialog exist dialog(by invite), if dialog is not null, ignore from/to parameter
  34. struct sip_uac_transaction_t* sip_uac_info(struct sip_agent_t* sip, struct sip_dialog_t* dialog, const char* package, sip_uac_onreply oninfo, void* param);
  35. /// @param[in] from valid only dialog is null
  36. /// @param[in] to valid only dialog is null
  37. /// @param[in] event subscribe event type
  38. /// @param[in] expires subscribe duration in sec, 0-unsubscribe
  39. struct sip_uac_transaction_t* sip_uac_subscribe(struct sip_agent_t* sip, const char* from, const char* to, const char* event, int expires, sip_uac_onsubscribe onsubscribe, void* param);
  40. struct sip_uac_transaction_t* sip_uac_notify(struct sip_agent_t* sip, struct sip_subscribe_t* subscribe, const char* state, sip_uac_onreply onnotify, void* param);
  41. /// @param[in] expires subscribe duration in ms, 0-unsubscribe
  42. struct sip_uac_transaction_t* sip_uac_resubscribe(struct sip_agent_t* sip, struct sip_subscribe_t* subscribe, int expires, sip_uac_onsubscribe onsubscribe, void* param);
  43. struct sip_uac_transaction_t* sip_uac_publish(struct sip_agent_t* sip, const char* from, const char* to, const char* event, sip_uac_onreply onreply, void* param);
  44. struct sip_uac_transaction_t* sip_uac_refer(struct sip_agent_t* sip, const char* from, const char* to, sip_uac_onreply onreply, void* param);
  45. struct sip_uac_transaction_t* sip_uac_message(struct sip_agent_t* sip, const char* from, const char* to, sip_uac_onreply onmsg, void* param);
  46. int sip_uac_transaction_ondestroy(struct sip_uac_transaction_t* t, sip_transaction_ondestroy ondestroy, void* param);
  47. int sip_uac_add_header(struct sip_uac_transaction_t* t, const char* name, const char* value);
  48. int sip_uac_add_header_int(struct sip_uac_transaction_t* t, const char* name, int value);
  49. /// @param[in] t sip uac transaction, create by sip_uac_invite/sip_uac_register/...
  50. /// @param[in] data message payload(such as SDP), maybe NULL if don't need send anything
  51. /// @param[in] bytes data length in byte, >=0 only
  52. /// @param[in] transport udp/tcp transport, must be valid until on callback(maybe call many times)
  53. /// @param[in] param transport parameter
  54. /// @return 0-ok, other-error
  55. int sip_uac_send(struct sip_uac_transaction_t* t, const void* data, int bytes, struct sip_transport_t* transport, void* param);
  56. /// sip_uac_ack for sip_uac_oninvite 2xx only
  57. /// @param[in] invite uac transaction, create by sip_uac_invite
  58. /// @param[in] data message payload(such as SDP), maybe NULL if don't need send anything
  59. /// @param[in] bytes data length in byte, >=0 only
  60. /// @return 0-ok, other-error
  61. int sip_uac_ack(struct sip_uac_transaction_t* invite, const void* data, int bytes);
  62. int sip_uac_transaction_addref(struct sip_uac_transaction_t* t);
  63. int sip_uac_transaction_release(struct sip_uac_transaction_t* t);
  64. #if defined(__cplusplus)
  65. }
  66. #endif
  67. #endif /* !_sip_uac_h_ */