📄 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 + -