📄 sip_inv.h
字号:
* * @param endpt If tdata is not NULL, application needs to specify * how to create the response. Either dlg or endpt * argument MUST be specified, with dlg argument takes * precedence when both are specified. * * @param tdata If this argument is not NULL, this function will * create the appropriate non-2xx final response message * when the verification fails. * * @return If everything has been negotiated successfully, * the function will return PJ_SUCCESS. Otherwise it * will return the reason of the failure as the return * code. * * This function is capable to create the appropriate * response message when the verification has failed. * If tdata is specified, then a non-2xx final response * will be created and put in this argument upon return, * when the verification has failed. * * If a dialog has been created prior to calling this * function, then it MUST be specified in dlg argument. * Otherwise application MUST specify the endpt argument * (this is useful e.g. when application wants to send * the response statelessly). */PJ_DECL(pj_status_t) pjsip_inv_verify_request( pjsip_rx_data *rdata, unsigned *options, const pjmedia_sdp_session *sdp, pjsip_dialog *dlg, pjsip_endpoint *endpt, pjsip_tx_data **tdata);/** * Create UAS invite session for the specified dialog in dlg. Application * SHOULD call the verification function before calling this function, * to ensure that it can create the session successfully. * * @param dlg The dialog to be used. * @param rdata Application MUST specify the received INVITE request * in rdata. The invite session needs to inspect the * received request to see if the request contains * features that it supports. * @param local_sdp If application has determined its media capability, * it can specify this capability in this argument. * If SDP is received in the initial INVITE, the UAS * capability specified in this argument doesn't have to * match the received offer; the SDP negotiator is able * to rearrange the media lines in the answer so that it * matches the offer. * @param options The options argument is bitmask combination of SIP * features in pjsip_inv_options enumeration. * @param p_inv Pointer to receive the newly created invite session. * * @return On successful, the invite session will be put in * p_inv argument and the function will return PJ_SUCCESS. * Otherwise the appropriate error status will be returned * on failure. */PJ_DECL(pj_status_t) pjsip_inv_create_uas(pjsip_dialog *dlg, pjsip_rx_data *rdata, const pjmedia_sdp_session *local_sdp, unsigned options, pjsip_inv_session **p_inv);/** * Forcefully terminate and destroy INVITE session, regardless of * the state of the session. Note that this function should only be used * when there is failure in the INVITE session creation. After the * invite session has been created and initialized, normally application * SHOULD use #pjsip_inv_end_session() to end the INVITE session instead. * * Note also that this function may terminate the underlying dialog, if * there are no other sessions in the dialog. * * @param inv The invite session. * @param st_code Status code for the reason of the termination. * @param notify If set to non-zero, then on_state_changed() * callback will be called. * * @return PJ_SUCCESS if the INVITE session has been * terminated. */PJ_DECL(pj_status_t) pjsip_inv_terminate( pjsip_inv_session *inv, int st_code, pj_bool_t notify );/** * Create the initial INVITE request for this session. This function can only * be called for UAC session. If local media capability is specified when * the invite session was created, then this function will put an SDP offer * in the outgoing INVITE request. Otherwise the outgoing request will not * contain SDP body. * * @param inv The UAC invite session. * @param p_tdata The initial INVITE request will be put in this * argument if it can be created successfully. * * @return PJ_SUCCESS if the INVITE request can be created. */PJ_DECL(pj_status_t) pjsip_inv_invite( pjsip_inv_session *inv, pjsip_tx_data **p_tdata );/** * Create the initial response message for the incoming INVITE request in * rdata with status code st_code and optional status text st_text. Use * #pjsip_answer() to create subsequent response message. */PJ_DECL(pj_status_t) pjsip_inv_initial_answer( pjsip_inv_session *inv, pjsip_rx_data *rdata, int st_code, const pj_str_t *st_text, const pjmedia_sdp_session *sdp, pjsip_tx_data **p_tdata);/** * Create a response message to the initial INVITE request. This function * can only be called for the initial INVITE request, as subsequent * re-INVITE request will be answered automatically. * * @param inv The UAS invite session. * @param st_code The st_code contains the status code to be sent, * which may be a provisional or final response. * @param st_text If custom status text is desired, application can * specify the text in st_text; otherwise if this * argument is NULL, default status text will be used. * @param local_sdp If application has specified its media capability * during creation of UAS invite session, the local_sdp * argument MUST be NULL. This is because application * can not perform more than one SDP offer/answer session * in a single INVITE transaction. * If application has not specified its media capability * during creation of UAS invite session, it MAY or MUST * specify its capability in local_sdp argument, * depending whether st_code indicates a 2xx final * response. * @param p_tdata Pointer to receive the response message created by * this function. * * @return PJ_SUCCESS if response message was created * successfully. */PJ_DECL(pj_status_t) pjsip_inv_answer( pjsip_inv_session *inv, int st_code, const pj_str_t *st_text, const pjmedia_sdp_session *local_sdp, pjsip_tx_data **p_tdata );/** * Set local answer to respond to remote SDP offer, to be carried by * subsequent response (or request). * * @param inv The invite session. * @param sdp The SDP description which will be set as answer * to remote. * * @return PJ_SUCCESS if local answer can be accepted by * SDP negotiator. */PJ_DECL(pj_status_t) pjsip_inv_set_sdp_answer(pjsip_inv_session *inv, const pjmedia_sdp_session *sdp );/** * Create a SIP message to initiate invite session termination. Depending on * the state of the session, this function may return CANCEL request, * a non-2xx final response, or a BYE request. If the session has not answered * the incoming INVITE, this function creates the non-2xx final response with * the specified status code in st_code and optional status text in st_text. * * @param inv The invite session. * @param st_code Status code to be used for terminating the session. * @param st_text Optional status text. * @param p_tdata Pointer to receive the message to be created. * * @return PJ_SUCCESS if termination message can be created. */PJ_DECL(pj_status_t) pjsip_inv_end_session( pjsip_inv_session *inv, int st_code, const pj_str_t *st_text, pjsip_tx_data **p_tdata );/** * Create a re-INVITE request. * * @param inv The invite session. * @param new_contact If application wants to update its local contact and * inform peer to perform target refresh with a new * contact, it can specify the new contact in this * argument; otherwise this argument must be NULL. * @param new_offer Application MAY initiate a new SDP offer/answer * session in the request when there is no pending * answer to be sent or received. It can detect this * condition by observing the state of the SDP * negotiator of the invite session. If new offer * should be sent to remote, the offer must be specified * in this argument, otherwise it must be NULL. * @param p_tdata Pointer to receive the re-INVITE request message to * be created. * * @return PJ_SUCCESS if a re-INVITE request with the specified * characteristics (e.g. to contain new offer) can be * created. */PJ_DECL(pj_status_t) pjsip_inv_reinvite(pjsip_inv_session *inv, const pj_str_t *new_contact, const pjmedia_sdp_session *new_offer, pjsip_tx_data **p_tdata );/** * Create an UPDATE request. * * @param inv The invite session. * @param new_contact If application wants to update its local contact * and inform peer to perform target refresh with a new * contact, it can specify the new contact in this * argument; otherwise this argument must be NULL. * @param new_offer Application MAY initiate a new SDP offer/answer * session in the request when there is no pending answer * to be sent or received. It can detect this condition * by observing the state of the SDP negotiator of the * invite session. If new offer should be sent to remote, * the offer must be specified in this argument; otherwise * this argument must be NULL. * @param p_tdata Pointer to receive the UPDATE request message to * be created. * * @return PJ_SUCCESS if a UPDATE request with the specified * characteristics (e.g. to contain new offer) can be * created. */PJ_DECL(pj_status_t) pjsip_inv_update ( pjsip_inv_session *inv, const pj_str_t *new_contact, const pjmedia_sdp_session *new_offer, pjsip_tx_data **p_tdata );/** * Send request or response message in tdata. * * @param inv The invite session. * @param tdata The message to be sent. * * @return PJ_SUCCESS if transaction can be initiated * successfully to send this message. Note that the * actual final state of the transaction itself will * be reported later, in on_tsx_state_changed() * callback. */PJ_DECL(pj_status_t) pjsip_inv_send_msg(pjsip_inv_session *inv, pjsip_tx_data *tdata);/** * Get the invite session for the dialog, if any. * * @param dlg The dialog which invite session is being queried. * * @return The invite session instance which has been * associated with this dialog, or NULL. */PJ_DECL(pjsip_inv_session*) pjsip_dlg_get_inv_session(pjsip_dialog *dlg);/** * Get the invite session instance associated with transaction tsx, if any. * * @param tsx The transaction, which invite session is being * queried. * * @return The invite session instance which has been * associated with this transaction, or NULL. */PJ_DECL(pjsip_inv_session*) pjsip_tsx_get_inv_session(pjsip_transaction *tsx);/** * Get state names for INVITE session state. * * @param state The invite state. * * @return String describing the state. */PJ_DECL(const char *) pjsip_inv_state_name(pjsip_inv_state state);/** * This is a utility function to create SIP body for SDP content. * * @param pool Pool to allocate memory. * @param sdp SDP session to be put in the SIP message body. * @param p_body Pointer to receive SIP message body containing * the SDP session. * * @return PJ_SUCCESS on success. */PJ_DECL(pj_status_t) pjsip_create_sdp_body(pj_pool_t *pool, pjmedia_sdp_session *sdp, pjsip_msg_body **p_body);PJ_END_DECL/** * @} */#endif /* __SIP_INVITE_SESSION_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -