freeswitch/libs/sofia-sip/libsofia-sip-ua/soa/sofia-sip/soa.h

154 lines
5.1 KiB
C

/*
* This file is part of the Sofia-SIP package
*
* Copyright (C) 2005 Nokia Corporation.
*
* Contact: Pekka Pessi <pekka.pessi@nokia.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*
*/
#ifndef SOA_H
/** Defined when <sofia-sip/soa.h> has been included. */
#define SOA_H
/**@file sofia-sip/soa.h SDP Offer/Answer (RFC 3264) Interface.
*
* @author Pekka Pessi <Pekka.Pessi@nokia.com>
* @author Kai Vehmanen <Kai.Vehmanen@nokia.com>
*
* @date Created: Fri Jul 15 15:43:53 EEST 2005 ppessi
*/
#ifndef SU_WAIT_H
#include <sofia-sip/su_wait.h>
#endif
#ifndef SU_TAG_H
#include <sofia-sip/su_tag.h>
#endif
SOFIA_BEGIN_DECLS
typedef struct soa_session soa_session_t;
struct sdp_session_s;
#ifndef SOA_MAGIC_T
#define SOA_MAGIC_T void
#endif
typedef SOA_MAGIC_T soa_magic_t;
typedef int soa_callback_f(soa_magic_t *arg, soa_session_t *session);
SOFIAPUBFUN soa_session_t *soa_create(char const *name, su_root_t *, soa_magic_t *);
SOFIAPUBFUN soa_session_t *soa_clone(soa_session_t *, su_root_t *, soa_magic_t *);
SOFIAPUBFUN void soa_destroy(soa_session_t *);
SOFIAPUBFUN int soa_set_params(soa_session_t *ss,
tag_type_t tag, tag_value_t value, ...);
SOFIAPUBFUN int soa_get_params(soa_session_t const *ss,
tag_type_t tag, tag_value_t value, ...);
SOFIAPUBFUN tagi_t *soa_get_paramlist(soa_session_t const *ss,
tag_type_t tag, tag_value_t value, ...);
SOFIAPUBFUN int soa_error_as_sip_response(soa_session_t *soa,
char const **return_phrase);
SOFIAPUBFUN char const *soa_error_as_sip_reason(soa_session_t *soa);
SOFIAPUBFUN int soa_get_warning(soa_session_t *ss, char const **return_phrase);
SOFIAPUBFUN int soa_set_capability_sdp(soa_session_t *ss,
struct sdp_session_s const *sdp,
char const *str, issize_t len);
SOFIAPUBFUN int soa_get_capability_sdp(soa_session_t const *ss,
struct sdp_session_s const **return_sdp,
char const **return_sdp_str,
isize_t *return_len);
SOFIAPUBFUN int soa_set_remote_sdp(soa_session_t *ss,
struct sdp_session_s const *sdp,
char const *str, issize_t len);
SOFIAPUBFUN int soa_get_remote_sdp(soa_session_t const *ss,
struct sdp_session_s const **return_sdp,
char const **return_sdp_str,
isize_t *return_len);
SOFIAPUBFUN int soa_clear_remote_sdp(soa_session_t *ss);
SOFIAPUBFUN int soa_get_remote_version(soa_session_t const *ss);
SOFIAPUBFUN int soa_set_user_sdp(soa_session_t *ss,
struct sdp_session_s const *sdp,
char const *str, issize_t len);
SOFIAPUBFUN int soa_get_user_sdp(soa_session_t const *ss,
struct sdp_session_s const **return_sdp,
char const **return_sdp_str,
isize_t *return_len);
SOFIAPUBFUN int soa_get_user_version(soa_session_t const *ss);
SOFIAPUBFUN int soa_get_local_sdp(soa_session_t const *ss,
struct sdp_session_s const **return_sdp,
char const **return_sdp_str,
isize_t *return_len);
SOFIAPUBFUN char const * const * soa_sip_require(soa_session_t const *ss);
SOFIAPUBFUN char const * const * soa_sip_supported(soa_session_t const *ss);
SOFIAPUBFUN int soa_remote_sip_features(soa_session_t *ss,
char const * const * support,
char const * const * required);
SOFIAPUBFUN char **soa_media_features(soa_session_t *ss, int live, su_home_t *home);
SOFIAPUBFUN int soa_generate_offer(soa_session_t *, int always, soa_callback_f *);
SOFIAPUBFUN int soa_generate_answer(soa_session_t *, soa_callback_f *);
SOFIAPUBFUN int soa_process_answer(soa_session_t *, soa_callback_f *);
SOFIAPUBFUN int soa_process_reject(soa_session_t *, soa_callback_f *);
SOFIAPUBFUN int soa_activate(soa_session_t *, char const *option);
SOFIAPUBFUN int soa_deactivate(soa_session_t *, char const *option);
SOFIAPUBFUN void soa_terminate(soa_session_t *, char const *option);
SOFIAPUBFUN int soa_is_complete(soa_session_t const *ss);
SOFIAPUBFUN int soa_init_offer_answer(soa_session_t *ss);
SOFIAPUBFUN int soa_is_audio_active(soa_session_t const *ss);
SOFIAPUBFUN int soa_is_video_active(soa_session_t const *ss);
SOFIAPUBFUN int soa_is_image_active(soa_session_t const *ss);
SOFIAPUBFUN int soa_is_chat_active(soa_session_t const *ss);
SOFIAPUBFUN int soa_is_remote_audio_active(soa_session_t const *ss);
SOFIAPUBFUN int soa_is_remote_video_active(soa_session_t const *ss);
SOFIAPUBFUN int soa_is_remote_image_active(soa_session_t const *ss);
SOFIAPUBFUN int soa_is_remote_chat_active(soa_session_t const *ss);
SOFIAPUBFUN int soa_tag_filter(tagi_t const *f, tagi_t const *t);
SOFIA_END_DECLS
#endif