linphone-iphone/include/linphone/error_info.h
2018-03-07 16:43:13 +01:00

167 lines
5.7 KiB
C

/*
error_info.h
Copyright (C) 2016 Belledonne Communications SARL
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef LINPHONE_ERROR_INFO_H
#define LINPHONE_ERROR_INFO_H
#include "linphone/types.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @addtogroup misc
* @{
*/
/**
* Create an empty #LinphoneErrorInfo object.
* The #LinphoneErrorInfo object carries these fields:
* - a #LinphoneReason enum member giving overall signification of the error reported.
* - the "protocol" name in which the protocol reason code has meaning, for example SIP or Q.850
* - the "protocol code", an integer referencing the kind of error reported
* - the "phrase", a text phrase describing the error
* - the "warning", the content of warning headers if any
* - a sub "LinphoneErrorInfo" may be provided if a SIP response includes a Reason header (RFC3326).
**/
LINPHONE_PUBLIC LinphoneErrorInfo *linphone_error_info_new(void);
/**
* Increment refcount.
* @param[in] ei ErrorInfo object
**/
LINPHONE_PUBLIC LinphoneErrorInfo *linphone_error_info_ref(LinphoneErrorInfo *ei);
/**
* Decrement refcount and possibly free the object.
* @param[in] ei ErrorInfo object
**/
LINPHONE_PUBLIC void linphone_error_info_unref(LinphoneErrorInfo *ei);
/**
* Get reason code from the error info.
* @param[in] ei ErrorInfo object
* @return A #LinphoneReason
**/
LINPHONE_PUBLIC LinphoneReason linphone_error_info_get_reason(const LinphoneErrorInfo *ei);
/**
* Get pointer to chained #LinphoneErrorInfo set in sub_ei.
* It corresponds to a Reason header in a received SIP response.
* @param ei ErrorInfo object
* @return #LinphoneErrorInfo pointer defined in the ei object.
*/
LINPHONE_PUBLIC LinphoneErrorInfo* linphone_error_info_get_sub_error_info(const LinphoneErrorInfo *ei);
/**
* Get textual phrase from the error info.
* This is the text that is provided by the peer in the protocol (SIP).
* @param[in] ei ErrorInfo object
* @return The error phrase
**/
LINPHONE_PUBLIC const char * linphone_error_info_get_phrase(const LinphoneErrorInfo *ei);
/**
* Get protocol from the error info.
* @param[in] ei ErrorInfo object
* @return The protocol
*/
LINPHONE_PUBLIC const char *linphone_error_info_get_protocol(const LinphoneErrorInfo *ei);
/**
* Provides additional information regarding the failure.
* With SIP protocol, the content of "Warning" headers are returned.
* @param[in] ei ErrorInfo object
* @return More details about the failure
**/
LINPHONE_PUBLIC const char * linphone_error_info_get_warnings(const LinphoneErrorInfo *ei);
/**
* Get the status code from the low level protocol (ex a SIP status code).
* @param[in] ei ErrorInfo object
* @return The status code
**/
LINPHONE_PUBLIC int linphone_error_info_get_protocol_code(const LinphoneErrorInfo *ei);
/**
* Assign information to a #LinphoneErrorInfo object.
* @param[in] ei ErrorInfo object
* @param[in] protocol protocol name
* @param[in] reason reason from #LinphoneReason enum
* @param[in] code protocol code
* @param[in] status_string description of the reason
* @param[in] warning warning message
*/
LINPHONE_PUBLIC void linphone_error_info_set(LinphoneErrorInfo *ei, const char *protocol, LinphoneReason reason, int code, const char *status_string, const char *warning);
/**
* Set the sub_ei in #LinphoneErrorInfo to another LinphoneErrorInfo.
* Used when a reason header is to be added in a SIP response. The first level #LinphoneErrorInfo defines the SIP response code and phrase,
* the second (sub) #LinphoneErroInfo defining the content of the Reason header.
* @param[in] ei #LinphoneErrorInfo object to which the other #LinphoneErrorInfo will be appended as ei->sub_ei.
* @param[in] appended_ei #LinphoneErrorInfo to append
*/
LINPHONE_PUBLIC void linphone_error_info_set_sub_error_info(LinphoneErrorInfo *ei, LinphoneErrorInfo *appended_ei);
/**
* Assign reason #LinphoneReason to a #LinphoneErrorInfo object.
* @param[in] ei ErrorInfo object
* @param[in] reason reason from #LinphoneReason enum
*/
LINPHONE_PUBLIC void linphone_error_info_set_reason(LinphoneErrorInfo *ei, LinphoneReason reason);
/**
* Assign protocol name to a #LinphoneErrorInfo object.
* @param[in] ei ErrorInfo object
* @param[in] proto the protocol name
*/
LINPHONE_PUBLIC void linphone_error_info_set_protocol(LinphoneErrorInfo *ei, const char *proto);
/**
* Assign protocol code to a #LinphoneErrorInfo object.
* @param[in] ei ErrorInfo object
* @param[in] code the protocol code
*/
LINPHONE_PUBLIC void linphone_error_info_set_protocol_code(LinphoneErrorInfo *ei, int code);
/**
* Assign phrase to a #LinphoneErrorInfo object.
* @param[in] ei ErrorInfo object
* @param[in] phrase the phrase explaining the error
*/
LINPHONE_PUBLIC void linphone_error_info_set_phrase(LinphoneErrorInfo *ei, const char *phrase);
/**
* Assign warnings to a #LinphoneErrorInfo object.
* @param[in] ei ErrorInfo object
* @param[in] phrase the warnings
*/
LINPHONE_PUBLIC void linphone_error_info_set_warnings(LinphoneErrorInfo *ei, const char *warnings);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* LINPHONE_ERROR_INFO_H */