📄 sip_msg.h
字号:
PJ_DECL(void*) pjsip_msg_find_remove_hdr( pjsip_msg *msg, pjsip_hdr_e hdr, void *start);/** * Add a header to the message, putting it last in the header list. * * @param msg The message. * @param hdr The header to add. * * @bug Once the header is put in a list (or message), it can not be put in * other list (or message). Otherwise Real Bad Thing will happen. */PJ_INLINE(void) pjsip_msg_add_hdr( pjsip_msg *msg, pjsip_hdr *hdr ){ pj_list_insert_before(&msg->hdr, hdr);}/** * Add header field to the message, putting it in the front of the header list. * * @param msg The message. * @param hdr The header to add. * * @bug Once the header is put in a list (or message), it can not be put in * other list (or message). Otherwise Real Bad Thing will happen. */PJ_INLINE(void) pjsip_msg_insert_first_hdr( pjsip_msg *msg, pjsip_hdr *hdr ){ pj_list_insert_after(&msg->hdr, hdr);}/** * Print the message to the specified buffer. * * @param msg The message to print. * @param buf The buffer * @param size The size of the buffer. * * @return The length of the printed characters (in bytes), or NEGATIVE * value if the message is too large for the specified buffer. */PJ_DECL(pj_ssize_t) pjsip_msg_print(const pjsip_msg *msg, char *buf, pj_size_t size);/* * Some usefull macros to find common headers. *//** * Find Call-ID header. * * @param msg The message. * @return Call-ID header instance. */#define PJSIP_MSG_CID_HDR(msg) \ ((pjsip_cid_hdr*)pjsip_msg_find_hdr(msg, PJSIP_H_CALL_ID, NULL))/** * Find CSeq header. * * @param msg The message. * @return CSeq header instance. */#define PJSIP_MSG_CSEQ_HDR(msg) \ ((pjsip_cseq_hdr*)pjsip_msg_find_hdr(msg, PJSIP_H_CSEQ, NULL))/** * Find From header. * * @param msg The message. * @return From header instance. */#define PJSIP_MSG_FROM_HDR(msg) \ ((pjsip_from_hdr*)pjsip_msg_find_hdr(msg, PJSIP_H_FROM, NULL))/** * Find To header. * * @param msg The message. * @return To header instance. */#define PJSIP_MSG_TO_HDR(msg) \ ((pjsip_to_hdr*)pjsip_msg_find_hdr(msg, PJSIP_H_TO, NULL))/** * @} *//* **************************************************************************//** * @addtogroup PJSIP_MSG_HDR * @{ *//** * Generic SIP header, which contains hname and a string hvalue. * Note that this header is not supposed to be used as 'base' class for headers. */typedef struct pjsip_generic_string_hdr{ /** Standard header field. */ PJSIP_DECL_HDR_MEMBER(struct pjsip_generic_string_hdr); /** hvalue */ pj_str_t hvalue;} pjsip_generic_string_hdr;/** * Create a new instance of generic header. A generic header can have an * arbitrary header name. * * @param pool The pool. * @param hname The header name to be assigned to the header, or NULL to * assign the header name with some string. * @param hvalue Optional string to be assigned as the value. * * @return The header, or THROW exception. */PJ_DECL(pjsip_generic_string_hdr*) pjsip_generic_string_hdr_create( pj_pool_t *pool, const pj_str_t *hname, const pj_str_t *hvalue);/** * Initialize a preallocated memory with the header structure. This function * should only be called when application uses its own memory allocation to * allocate memory block for the specified header (e.g. in C++, when the * header is allocated with "new" operator). * For normal applications, they should use pjsip_xxx_hdr_create() instead, * which allocates memory and initialize it in one go. * * @param pool Pool for additional memory allocation if required. * @param mem Pre-allocated memory to be initialized as the header. * @param hname The header name to be assigned to the header, or NULL to * assign the header name with some string later. * @param hvalue Optional string to be assigned as the value. * * @return The header instance, which points to the same memory * location as the mem argument. */PJ_DECL(pjsip_generic_string_hdr*) pjsip_generic_string_hdr_init( pj_pool_t *pool, void *mem, const pj_str_t *hname, const pj_str_t *hvalue);/** * Construct a generic string header without allocating memory from the pool. * This function is useful to create a temporary header which life-time is * very short (for example, creating the header in the stack to be passed * as argument to a function which will copy the header). * * @param h The header to be initialized. * @param hname The header name to be assigned to the header, or NULL to * assign the header name with some string. * @param hvalue Optional string to be assigned as the value. * * @return The header, or THROW exception. */PJ_DECL(void) pjsip_generic_string_hdr_init2(pjsip_generic_string_hdr *h, pj_str_t *hname, pj_str_t *hvalue);/* **************************************************************************//** * Generic SIP header, which contains hname and a string hvalue. */typedef struct pjsip_generic_int_hdr{ PJSIP_DECL_HDR_MEMBER(struct pjsip_generic_int_hdr); /**< Standard header field. */ pj_int32_t ivalue; /**< ivalue */} pjsip_generic_int_hdr;/** * Create a new instance of generic header. A generic header can have an * arbitrary header name. * * @param pool The pool. * @param hname The header name to be assigned to the header, or NULL to * assign the header name with some string. * @param hvalue The value to be assigned to the header. * * @return The header, or THROW exception. */PJ_DECL(pjsip_generic_int_hdr*) pjsip_generic_int_hdr_create( pj_pool_t *pool, const pj_str_t *hname, int hvalue );/** * Initialize a preallocated memory with the header structure. This function * should only be called when application uses its own memory allocation to * allocate memory block for the specified header (e.g. in C++, when the * header is allocated with "new" operator). * For normal applications, they should use pjsip_xxx_hdr_create() instead, * which allocates memory and initialize it in one go. * * @param pool Pool for additional memory allocation if required. * @param mem Pre-allocated memory to be initialized as the header. * @param hname The header name to be assigned to the header, or NULL to * assign the header name with some string later. * @param value Value to be assigned to the header. * * @return The header instance, which points to the same memory * location as the mem argument. */PJ_DECL(pjsip_generic_int_hdr*) pjsip_generic_int_hdr_init( pj_pool_t *pool, void *mem, const pj_str_t *hname, int value );/* **************************************************************************//** Maximum elements in the header array. */#define PJSIP_GENERIC_ARRAY_MAX_COUNT 32/** * Generic array of string header. */typedef struct pjsip_generic_array_hdr{ /** Standard header fields. */ PJSIP_DECL_HDR_MEMBER(struct pjsip_generic_array_hdr); /** Number of tags/elements. */ unsigned count; /**< Tags/elements. */ pj_str_t values[PJSIP_GENERIC_ARRAY_MAX_COUNT];} pjsip_generic_array_hdr;/** * Create generic array header. * * @param pool Pool to allocate memory from. * @param hname Header name. * * @return New generic array header. */PJ_DECL(pjsip_generic_array_hdr*) pjsip_generic_array_hdr_create(pj_pool_t *pool, const pj_str_t *hname);/** * Initialize a preallocated memory with the header structure. This function * should only be called when application uses its own memory allocation to * allocate memory block for the specified header (e.g. in C++, when the * header is allocated with "new" operator). * For normal applications, they should use pjsip_xxx_hdr_create() instead, * which allocates memory and initialize it in one go. * * @param pool Pool for additional memory allocation if required. * @param mem Pre-allocated memory to be initialized as the header. * @param hname The header name to be assigned to the header, or NULL to * assign the header name with some string later. * * @return The header instance, which points to the same memory * location as the mem argument. */PJ_DECL(pjsip_generic_array_hdr*) pjsip_generic_array_hdr_init(pj_pool_t *pool, void *mem, const pj_str_t *hname);/* **************************************************************************//** Accept header. */typedef pjsip_generic_array_hdr pjsip_accept_hdr;/** Maximum fields in Accept header. */#define PJSIP_MAX_ACCEPT_COUNT PJSIP_GENERIC_ARRAY_MAX_COUNT/** * Create new Accept header instance. * * @param pool The pool. * * @return New Accept header instance. */PJ_DECL(pjsip_accept_hdr*) pjsip_accept_hdr_create(pj_pool_t *pool);/** * Initialize a preallocated memory with the header structure. This function * should only be called when application uses its own memory allocation to * allocate memory block for the specified header (e.g. in C++, when the * header is allocated with "new" operator). * For normal applications, they should use pjsip_xxx_hdr_create() instead, * which allocates memory and initialize it in one go. * * @param pool Pool for additional memory allocation if required. * @param mem Pre-allocated memory to be initialized as the header. * * @return The header instance, which points to the same memory * location as the mem argument. */PJ_DECL(pjsip_accept_hdr*) pjsip_accept_hdr_init( pj_pool_t *pool, void *mem );/* **************************************************************************//** * Allow header. */typedef pjsip_generic_array_hdr pjsip_allow_hdr;/** * Create new Allow header instance. * * @param pool The pool. * * @return New Allow header instance. */PJ_DECL(pjsip_allow_hdr*) pjsip_allow_hdr_create(pj_pool_t *pool);/** * Initialize a preallocated memory with the header structure. This function * should only be called when application uses its own memory allocation to * allocate memory block for the specified header (e.g. in C++, when the * header is allocated with "new" operator). * For normal applications, they should use pjsip_xxx_hdr_create() instead, * which allocates memory and initialize it in one go. * * @param pool Pool for additional memory allocation if required. * @param mem Pre-allocated memory to be initialized as the header. * * @return The header instance, which points to the same memory * location as the mem argument. */PJ_DECL(pjsip_allow_hdr*) pjsip_allow_hdr_init( pj_pool_t *pool, void *mem );/* **************************************************************************//** * Call-ID header. */typedef struct pjsip_cid_hdr{ PJSIP_DECL_HDR_MEMBER(struct pjsip_cid_hdr); pj_str_t id; /**< Call-ID string. */} pjsip_cid_hdr;/** * Create new Call-ID header. * * @param pool The pool. * * @return new Call-ID header. */PJ_DECL(pjsip_cid_hdr*) pjsip_cid_hdr_create( pj_pool_t *pool );/** * Initialize a preallocated memory with the header structure. This function * should only be called when application uses its own memory allocation to * allocate memory block for the specified header (e.g. in C++, when the * header is allocated with "new" operator). * For normal applications, they should use pjsip_xxx_hdr_create() instead, * which allocates memory and initialize it in one go. * * @param pool Pool for additional memory allocation if required. * @param mem Pre-allocated memory to be initialized as the header. * * @return The header instance, which points to the same memory * location as the mem argument. */PJ_DECL(pjsip_cid_hdr*) pjsip_cid_hdr_init( pj_pool_t *pool, void *mem );/* **************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -