⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soa_session.h

📁 this is simple sip stack.
💻 H
字号:
/* * 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_SESSION_H#define SOA_SESSION_H/**@file sofia-sip/soa_session.h * * Internal API for SDP Offer/Answer Interface. * * @author Pekka Pessi <Pekka.Pessi@nokia.com> * * @date Created: Mon Aug 1 15:43:53 EEST 2005 ppessi */#ifndef SOA_H#include "sofia-sip/soa.h"#endif#ifndef SOA_TAG_H#include "sofia-sip/soa_tag.h"#endif#ifndef SDP_H#include <sofia-sip/sdp.h>#endif#ifndef SU_STRLST_H#include <sofia-sip/su_strlst.h>#endifSOFIA_BEGIN_DECLSstruct soa_session_actions{  int sizeof_soa_session_actions;  int sizeof_soa_session;  char const *soa_name;  int (*soa_init)(char const *name, soa_session_t *ss, soa_session_t *parent);  void (*soa_deinit)(soa_session_t *ss);  int (*soa_set_params)(soa_session_t *ss, tagi_t const *tags);  int (*soa_get_params)(soa_session_t const *ss, tagi_t *tags);  tagi_t *(*soa_get_paramlist)(soa_session_t const *ss, 			       tag_type_t, tag_value_t, ...);  char **(*soa_media_features)(soa_session_t *, int live, su_home_t *);  char const * const *(*soa_sip_require)(soa_session_t const *ss);  char const * const *(*soa_sip_supported)(soa_session_t const *ss);  int (*soa_remote_sip_features)(soa_session_t *ss,				 char const * const * support,				 char const * const * required);  int (*soa_set_capability_sdp)(soa_session_t *, sdp_session_t *,				char const *, int);  int (*soa_set_remote_sdp)(soa_session_t *, int new_version,			    sdp_session_t *, char const *, int);  int (*soa_set_user_sdp)(soa_session_t *, sdp_session_t *,			  char const *, int);  int (*soa_generate_offer)(soa_session_t *ss, soa_callback_f *completed);  int (*soa_generate_answer)(soa_session_t *ss, soa_callback_f *completed);  int (*soa_process_answer)(soa_session_t *ss, soa_callback_f *completed);  int (*soa_process_reject)(soa_session_t *ss, soa_callback_f *completed);  int (*soa_activate_session)(soa_session_t *ss, char const *option);  int (*soa_deactivate_session)(soa_session_t *ss, char const *option);  void (*soa_terminate_session)(soa_session_t *ss, char const *option);};SOFIAPUBFUN soa_session_t *soa_session_ref(soa_session_t *ss);SOFIAPUBFUN void soa_session_unref(soa_session_t *ss);SOFIAPUBFUN int soa_base_init(char const *name, soa_session_t *,			      soa_session_t *parent);SOFIAPUBFUN void soa_base_deinit(soa_session_t *ss);SOFIAPUBFUN int soa_base_set_params(soa_session_t *ss, tagi_t const *tags);SOFIAPUBFUN int soa_base_get_params(soa_session_t const *ss, tagi_t *tags);SOFIAPUBFUN tagi_t *soa_base_get_paramlist(soa_session_t const *ss,					   tag_type_t, tag_value_t, ...);SOFIAPUBFUN char **soa_base_media_features(soa_session_t *,					   int live, su_home_t *);SOFIAPUBFUN char const * const *soa_base_sip_require(soa_session_t const *ss);SOFIAPUBFUN char const * const *soa_base_sip_supported(soa_session_t const *ss);SOFIAPUBFUN int soa_base_remote_sip_features(soa_session_t *ss,					     char const * const *support,					     char const * const *required);SOFIAPUBFUN int soa_base_set_capability_sdp(soa_session_t *ss, 					    sdp_session_t *sdp,					    char const *, int);SOFIAPUBFUN int soa_base_set_remote_sdp(soa_session_t *ss, 					int new_version,					sdp_session_t *sdp, char const *, int);SOFIAPUBFUN int soa_base_set_user_sdp(soa_session_t *ss,				      sdp_session_t *sdp, char const *, int);SOFIAPUBFUN int soa_base_generate_offer(soa_session_t *ss,					soa_callback_f *completed);SOFIAPUBFUN int soa_base_generate_answer(soa_session_t *ss,					 soa_callback_f *completed);SOFIAPUBFUN int soa_base_process_answer(soa_session_t *ss,					soa_callback_f *completed);SOFIAPUBFUN int soa_base_process_reject(soa_session_t *ss,					soa_callback_f *completed);SOFIAPUBFUN int soa_base_activate(soa_session_t *ss, char const *option);SOFIAPUBFUN int soa_base_deactivate(soa_session_t *ss, char const *option);SOFIAPUBFUN void soa_base_terminate(soa_session_t *ss, char const *option);struct soa_description {  sdp_session_t  *ssd_sdp;	/**< Session description  */  char const     *ssd_unparsed;	/**< Original session description as string */  char const     *ssd_str;	/**< Session description as string */  sdp_printer_t  *ssd_printer;	/**< SDP printer object */};struct soa_session{  su_home_t ss_home[1];  struct soa_session_actions const *ss_actions;  char const *ss_name;		/**< Our name */  su_root_t *ss_root;  soa_magic_t *ss_magic;	/**< Application data */  soa_callback_f *ss_in_progress;/**< Operation in progress */  /** Incremented once each time session is terminated */  unsigned  ss_terminated;  unsigned  ss_active:1;	/**< Session has been activated */  /* Current Offer-Answer status */  unsigned  ss_complete:1;	/**< Completed SDP offer-answer */  unsigned  ss_unprocessed_remote:1; /**< We have received remote SDP */  unsigned  ss_offer_sent:2;	/**< We have offered SDP */  unsigned  ss_answer_recv:2;	/**< We have received SDP answer */  unsigned  ss_offer_recv:2;	/**< We have received an offer */  unsigned  ss_answer_sent:2;	/**< We have answered (reliably, if >1) */  unsigned  :0;			/* Pad */  unsigned  ss_oa_rounds;	/**< Number of O/A rounds completed */  struct soa_media_activity  {    int ma_audio:4; /**< Audio activity (send/recv) */    int ma_video:4; /**< Video activity (send/recv) */    int ma_image:4; /**< Image activity (send/recv) for JPIP */    int ma_chat:4;  /**< Chat activity (send/recv) */  } ss_local_activity[1], ss_remote_activity[1];  /** Capabilities as specified by application */  struct soa_description ss_caps[1];  /** Session description provided by user */  struct soa_description ss_user[1];  unsigned ss_user_version;  /**< Version incremented at each change */  /** Remote session description */  struct soa_description ss_remote[1];  unsigned ss_remote_version;  /**< Version incremented at each change */  /** Local session description */  struct soa_description ss_local[1];  unsigned ss_local_user_version, ss_local_remote_version;  char const *ss_hold_local;  /** Previous session description (return to this if offer is rejected) */  struct soa_description ss_previous[1];  unsigned ss_previous_user_version, ss_previous_remote_version;  char const *ss_hold_previous;  sdp_session_t *ss_rsession;	/**< Processed remote SDP */  /** SIP features required */  char const * const *ss_local_required;  /** SIP features supported */  char const * const *ss_local_support;  /** SIP features required by remote */  char const **ss_remote_required;  /** SIP features supported */  char const **ss_remote_support;  int             ss_status;	/**< Status from last media operation */  char const     *ss_phrase;	/**< Phrase from last media operation */  char           *ss_reason;	/**< Reason generated by media operation */    /* Media parameters */  char const     *ss_address;  enum soa_af     ss_af;  char const     *ss_hold;	/**< Media on hold locally */  char const     *ss_cname;  /* Codec handling during negotiation */  unsigned  ss_rtp_select:2;  unsigned  ss_rtp_sort:2;  unsigned  ss_rtp_mismatch:1;  unsigned ss_srtp_enable:1,    ss_srtp_confidentiality:1,    ss_srtp_integrity:1;  unsigned :0;			/* Pad */  int             ss_wcode;	/**< Warning code from last media operation */  char const     *ss_warning;	/**< Warnings text from last media operation */};/* ====================================================================== */SOFIAPUBFUN int soa_has_received_sdp(soa_session_t const *ss);SOFIAPUBFUN int soa_set_status(soa_session_t *ss,			       int status, char const *phrase);SOFIAPUBFUN void soa_set_activity(soa_session_t *ss, 				  sdp_media_t const *m, int remote);SOFIAPUBFUN int soa_set_user_sdp(soa_session_t *ss,				 struct sdp_session_s const *sdp,				 char const *str, int len);SOFIAPUBFUN int soa_description_set(soa_session_t *ss, 				    struct soa_description *ssd,				    sdp_session_t *sdp,				    char const *sdp_str,				    int sdp_len);SOFIAPUBFUN void soa_description_free(soa_session_t *, 				      struct soa_description *ssd);SOFIAPUBFUN int soa_description_dup(su_home_t *, 				    struct soa_description *ssd,				    struct soa_description const *ssd0);SOFIAPUBFUN int soa_init_sdp_origin(soa_session_t *ss,				    sdp_origin_t *o, char buf[64]);SOFIAPUBFUN int soa_init_sdp_connection(soa_session_t *, 					sdp_connection_t *, char buf[64]);/* ====================================================================== *//* Debug log settings */#define SU_LOG   soa_log#ifdef SU_DEBUG_H#error <su_debug.h> included directly.#endif#include <sofia-sip/su_debug.h>SOFIAPUBVAR su_log_t soa_log[];SOFIA_END_DECLS#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -