00001 /* 00002 The oSIP library implements the Session Initiation Protocol (SIP -rfc3261-) 00003 Copyright (C) 2001,2002,2003,2004 Aymeric MOIZARD jack@atosc.org 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Lesser General Public 00007 License as published by the Free Software Foundation; either 00008 version 2.1 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Lesser General Public License for more details. 00014 00015 You should have received a copy of the GNU Lesser General Public 00016 License along with this library; if not, write to the Free Software 00017 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00018 */ 00019 00020 #ifndef _DIALOG_H_ 00021 #define _DIALOG_H_ 00022 00023 #include <osip2/osip.h> 00024 00036 #ifdef __cplusplus 00037 extern "C" 00038 { 00039 #endif 00040 00041 00042 #ifndef DOXYGEN 00043 typedef enum _osip_dialog_type_t 00044 { 00045 CALLER, 00046 CALLEE 00047 } 00048 osip_dialog_type_t; 00049 #endif 00050 00051 00056 typedef struct osip_dialog osip_dialog_t; 00057 00058 00063 struct osip_dialog 00064 { 00065 char *call_id; 00066 char *local_tag; 00067 char *remote_tag; 00068 osip_list_t *route_set; 00069 int local_cseq; 00070 int remote_cseq; 00071 osip_to_t *remote_uri; 00072 osip_from_t *local_uri; 00073 osip_contact_t *remote_contact_uri; 00074 int secure; 00076 osip_dialog_type_t type; 00077 state_t state; 00078 void *your_instance; 00079 }; 00080 00086 #define osip_dialog_set_instance(dialog,instance) (dialog)->your_instance = (void*)(instance) 00087 00093 #define osip_dialog_get_instance(dialog) (dialog)->your_instance 00094 00106 int osip_dialog_init_as_uac (osip_dialog_t ** dialog, 00107 osip_message_t * response); 00116 int osip_dialog_init_as_uac_with_remote_request (osip_dialog_t ** dialog, 00117 osip_message_t *next_request, 00118 int local_cseq); 00119 00128 int osip_dialog_init_as_uas (osip_dialog_t ** dialog, 00129 osip_message_t * invite, 00130 osip_message_t * response); 00135 void osip_dialog_free (osip_dialog_t * dialog); 00142 void osip_dialog_set_state (osip_dialog_t * dialog, state_t type); 00153 int osip_dialog_update_route_set_as_uas (osip_dialog_t * dialog, 00154 osip_message_t * invite); 00161 int osip_dialog_update_osip_cseq_as_uas (osip_dialog_t * dialog, 00162 osip_message_t * request); 00163 00169 int osip_dialog_match_as_uac (osip_dialog_t * dialog, 00170 osip_message_t * response); 00177 int osip_dialog_update_tag_as_uac (osip_dialog_t * dialog, 00178 osip_message_t * response); 00189 int osip_dialog_update_route_set_as_uac (osip_dialog_t * dialog, 00190 osip_message_t * response); 00191 00197 int osip_dialog_match_as_uas (osip_dialog_t * dialog, 00198 osip_message_t * request); 00199 00205 int osip_dialog_is_originator (osip_dialog_t * dialog); 00211 int osip_dialog_is_callee (osip_dialog_t * dialog); 00212 00213 00214 #ifdef __cplusplus 00215 } 00216 #endif 00217 00221 #endif