1、osip 提供接口研究整理文档一.LIBRARY “eXosip2.dll“EXPORTSeXosip_init /eXosip 的初始化:在 eXosip_init()里面加载了四个有限状态机,正是这四个有限状态机线程能够对接收到的网消息进行自动的状态跳转并处理。eXosip_quit /eXosip 退出eXosip_set_optioneXosip_lock/eXosip 锁定重置eXosip_unlock /eXosip 解锁eXosip_listen_addr /eXosip 监听eXosip_set_socket/eXosip 设置端口eXosip_set_user_agent /
2、eXosip 设置用户代理eXosip_enable_ipv6 /开启 IPV6 支持eXosip_masquerade_contact eXosip_add_authentication_infoeXosip_clear_authentication_infoeXosip_default_actioneXosip_automatic_refresheXosip_automatic_actioneXosip_generate_randomeXosip_event_free /释放事务eXosip_event_wait/事务等待eXosip_event_get /认证消息 eXosip_subs
3、cribe_build_initial_request /subscribe(认证)消息初始化eXosip_subscribe_send_initial_request /发送 subscribe 消息eXosip_subscribe_build_refresh_requesteXosip_subscribe_send_refresh_requesteXosip_insubscription_build_answereXosip_insubscription_send_answereXosip_insubscription_build_requesteXosip_insubscription_
4、build_notifyeXosip_insubscription_send_request/注册消息 eXosip_register_build_initial_register /注册消息初始化eXosip_register_build_register /注册消息创建eXosip_register_send_register /注册消息发送eXosip_register_remove/ 传输 MESSAGE 方法,也就是即时消息,/ 和 INFO 方法相比,主要区别,是 MESSAGE 不用建立连接,直接传输信息,/ 而 INFO 必须在建立 INVITE 的基础上传输。eXosip_m
5、essage_build_requesteXosip_message_send_requesteXosip_message_build_answereXosip_message_send_answereXosip_refer_build_requesteXosip_refer_send_requesteXosip_build_publisheXosip_publisheXosip_options_build_requesteXosip_options_send_requesteXosip_options_build_answereXosip_options_send_answereXosip_
6、transport_seteXosip_guess_localipeXosip_get_remote_sdpeXosip_get_local_sdpeXosip_get_remote_sdp_from_tideXosip_get_local_sdp_from_tideXosip_get_sdp_infoeXosip_get_audio_connectioneXosip_get_audio_mediaeXosip_get_video_connectioneXosip_get_video_mediaeXosip_call_set_referenceeXosip_call_build_initial
7、_inviteeXosip_call_send_initial_inviteeXosip_call_build_requesteXosip_call_build_ackeXosip_call_send_ackeXosip_call_build_refereXosip_call_build_info / 传输 INFO 方法eXosip_call_build_optionseXosip_call_build_updateeXosip_call_build_notifyeXosip_call_send_requesteXosip_call_build_answereXosip_call_send_
8、answereXosip_call_terminate/PRACK 用于保证 1*(除 100 外)的可靠传输,如果 1*响应中的的 Require 头部中带有 100rel 这个参数,那么 client 端收到这个 1*后,就需要发 PRACK 保证这个 1*的可靠传输,当 server 端收到 PRACK 后,说对端已经收到了这个 1*,此时 server 需要回 PRACK 的 200 响应。假设 UAC 接收到需要可靠传输的非 100 临时响应后(101199),它必须用 PRACK 方法创建一新请求发送给 UAS,以确认已收到此响应,UAS 会回应一 200OK。有的流程有 PRAC
9、K,说明它有 100rel 的支持,没有PRACK 说明不支持 100rel。eXosip_call_build_prackeXosip_call_send_prackeXosip_call_get_refertoeXosip_call_find_by_replaces二.LIBRARY “osip2.dll“EXPORTSevt_set_type_incoming_sipmessage 1evt_set_type_outgoing_sipmessage 2osip_create_transaction 3osip_dialog_free 4osip_dialog_init_as_uac 5o
10、sip_dialog_init_as_uas 6osip_dialog_match_as_uac 7osip_dialog_match_as_uas 8osip_dialog_set_state 9osip_dialog_update_osip_cseq_as_uas 10osip_dialog_update_route_set_as_uac 11osip_dialog_update_route_set_as_uas 12osip_dialog_update_tag_as_uac 13osip_event_free 14osip_fifo_add 15osip_fifo_free 16osip
11、_fifo_get 17osip_fifo_init 18osip_fifo_insert 19osip_fifo_size 20osip_fifo_tryget 21osip_find_transaction_and_add_event 23osip_get_application_context 24osip_ict_execute 25osip_ict_lock 26osip_ict_set_destination 27osip_ict_unlock 28osip_init 29osip_ist_execute 30osip_ist_lock 31osip_ist_unlock 32os
12、ip_mutex_destroy 33osip_mutex_init 34osip_mutex_lock 35osip_mutex_unlock 36osip_new_outgoing_sipmessage 82osip_nict_execute 83osip_nict_lock 84osip_nict_set_destination 85osip_nict_unlock 86osip_nist_execute 87osip_nist_lock 88osip_nist_unlock 89osip_parse 90osip_release 91osip_remove_transaction 92
13、 /事务删除函数osip_sem_destroy 93osip_sem_init 94osip_sem_post 95osip_sem_trywait 96osip_sem_wait 97osip_set_application_context 98osip_set_cb_send_message 99 /osip 消息发送回调函数:这个函数可能是最重要的回调函数之一,消息发送,包括请求消息和回应消息,一般情况下,状态机的状态就是由它控制的,发起一个消息初始化一个状态机,回应一个消息对状态机修改,终结消息发送结束状态机osip_set_kill_transaction_callback 100
14、 /事务终结回调函数osip_set_message_callback 101 /消息发送处理回调函数:根据 type 不同,表示不同的消息发送状态/ OSIP_XXX_AGAIN 重发相关消息/ OSIP_ICT_INVITE_SENT 发起呼叫/ OSIP_ICT_ACK_SENT ack 回应/ OSIP_NICT_REGISTER_SENT 发起注册/ OSIP_NICT_BYE_SENT bye 发出/ OSIP_NICT_CANCEL_SENT cancel 发出/OSIP_NICT_INFO_SENT,OSIP_NICT_OPTIONS_SENT,OSIP_NICT_SUBSCR
15、IBE_SENT,OSIP_NICT_NOTIFY_SENT,OSIP_NICT_UNKNOWN_REQUEST_SENT 等/eXosip 没有对它们作任何处理,可以根据自己需要,比如,重发 2xx 消息前记录一下日志之类的,扩展一下 retransmission 的处理方式,发起 Invite 前记录一下通话日志等等。osip_set_transport_error_callback 102osip_thread_create 103osip_thread_exit 104osip_thread_join 105osip_thread_set_priority 106osip_timers
16、_ict_execute 107osip_timers_ist_execute 108osip_timers_nict_execute 109osip_timers_nist_execute 110osip_transaction_add_event 111osip_transaction_execute 112osip_transaction_find 113osip_transaction_free 114osip_transaction_free2 115osip_transaction_get_destination 116osip_transaction_get_your_insta
17、nce 117osip_transaction_init 118osip_transaction_set_in_socket 119osip_transaction_set_out_socket 120osip_transaction_set_your_instance 121osip_dialog_init_as_uac_with_remote_request 123osip_cond_destroy 124osip_cond_init 125osip_cond_signal 126osip_cond_timedwait 127osip_timers_gettimeout 128osip_r
18、etransmissions_execute 129osip_start_200ok_retransmissions 130osip_start_ack_retransmissions 131osip_stop_200ok_retransmissions 132osip_stop_retransmissions_from_dialog 133osip_gettimeofday 134add_gettimeofday 135osip_cond_wait 136三.LIBRARY “osipparser2.dll“EXPORTSparser_init 1osip_accept_encoding_c
19、lone 2osip_accept_encoding_free 3osip_accept_encoding_get_element 4osip_accept_encoding_init 5osip_accept_encoding_parse 6osip_accept_encoding_set_element 7osip_accept_encoding_to_str 8osip_atoi 9osip_authorization_clone 10osip_authorization_free 11osip_authorization_get_algorithm 12osip_authorizati
20、on_get_auth_type 13osip_authorization_get_cnonce 14osip_authorization_get_digest 15osip_authorization_get_message_qop 16osip_authorization_get_nonce 17osip_authorization_get_nonce_count 18osip_authorization_get_opaque 19osip_authorization_get_realm 20osip_authorization_get_response 21osip_authorizat
21、ion_get_uri 22osip_authorization_get_username 23osip_authorization_init 24osip_authorization_parse 25osip_authorization_set_algorithm 26osip_authorization_set_auth_type 27osip_authorization_set_cnonce 28osip_authorization_set_digest 29osip_authorization_set_message_qop 30osip_authorization_set_nonce
22、 31osip_authorization_set_nonce_count 32osip_authorization_set_opaque 33osip_authorization_set_realm 34osip_authorization_set_response 35osip_authorization_set_uri 36osip_authorization_set_username 37osip_authorization_to_str 38osip_body_clone 39osip_body_free 40osip_body_init 41osip_body_parse 42os
23、ip_body_parse_mime 44osip_body_set_contenttype 45osip_body_set_header 46osip_body_to_str 47osip_build_random_number 48osip_call_id_clone 49osip_call_id_free 50osip_call_id_get_host 51osip_call_id_get_number 52osip_call_id_init 53osip_call_id_match 54osip_call_id_parse 55osip_call_id_set_host 56osip_
24、call_id_set_number 57osip_call_id_to_str 58osip_call_info_clone 59osip_call_info_free 60osip_call_info_get_uri 61osip_call_info_init 62osip_call_info_parse 63osip_call_info_set_uri 64osip_call_info_to_str 65osip_clrspace 66osip_contact_clone 67osip_contact_free 68osip_contact_init 69osip_contact_par
25、se 70osip_contact_to_str 71osip_content_disposition_parse 72osip_content_length_clone 73osip_content_length_free 74osip_content_length_init 75osip_content_length_parse 76osip_content_length_to_str 77osip_content_type_clone 78osip_content_type_free 79osip_content_type_init 80osip_content_type_parse 8
26、1osip_content_type_to_str 82osip_cseq_clone 83osip_cseq_free 84osip_cseq_get_method 85osip_cseq_get_number 86osip_cseq_init 87osip_cseq_match 88osip_cseq_parse 89osip_cseq_set_method 90osip_cseq_set_number 91osip_cseq_to_str 92osip_free 93osip_from_clone 94osip_from_compare 95osip_from_free 96osip_f
27、rom_get_displayname 97osip_from_get_url 98osip_from_init 99osip_from_param_get 100osip_from_parse 101osip_from_set_displayname 102osip_from_set_url 103osip_from_tag_match 104osip_from_to_str 105osip_generic_param_get_name 106osip_generic_param_get_value 107osip_generic_param_set_name 108osip_generic
28、_param_set_value 109osip_header_clone 110osip_header_free 111osip_header_get_name 112osip_header_get_value 113osip_header_init 114osip_header_set_name 115osip_header_set_value 116osip_header_to_str 117osip_is_trace_level_activate 118osip_list_add 119osip_list_eol 120osip_list_get 121osip_list_init 1
29、22osip_list_ofchar_free 123osip_list_remove 124osip_list_size 125osip_list_special_free 126osip_malloc 127osip_message_clone 128osip_message_fix_last_via_header 129osip_message_force_update 130osip_message_free 131osip_message_get_property 132osip_message_get_accept 133osip_message_get_accept_encodi
30、ng 134osip_message_get_accept_language 135osip_message_get_alert_info 136osip_message_get_allow 137osip_message_get_authorization 138osip_message_get_body 139osip_message_get_call_id 140osip_message_get_call_info 141osip_message_get_contact 142osip_message_get_content_encoding 144osip_message_get_co
31、ntent_length 145osip_message_get_content_type 146osip_message_get_cseq 147osip_message_get_error_info 148osip_message_get_from 149osip_message_get_header 150osip_message_get_method 151osip_message_get_mime_version 152osip_message_get_proxy_authenticate 153osip_message_get_proxy_authorization 154osip
32、_message_get_reason 155osip_message_get_reason_phrase 156osip_message_get_record_route 157osip_message_get_route 158osip_message_get_status_code 159osip_message_get_to 160osip_message_get_uri 161osip_message_get_version 162osip_message_get_via 163osip_message_get_www_authenticate 164osip_message_hea
33、der_get_byname 165osip_message_init 166osip_message_parse 167osip_message_set_accept 169osip_message_set_accept_encoding 170osip_message_set_accept_language 171osip_message_set_alert_info 172osip_message_set_allow 173osip_message_set_authorization 174osip_message_set_body 175osip_message_set_body_mi
34、me 176osip_message_set_call_id 177osip_message_set_call_info 178osip_message_set_contact 179osip_message_set_content_encoding 181osip_message_set_content_length 182osip_message_set_content_type 183osip_message_set_cseq 184osip_message_set_error_info 185osip_message_set_from 186osip_message_set_heade
35、r 187osip_message_set_method 188osip_message_set_mime_version 189osip_message_set_proxy_authenticate 190osip_message_set_proxy_authorization 191osip_message_set_reason_phrase 192osip_message_set_record_route 193osip_message_set_route 194osip_message_set_status_code 195osip_message_set_to 196osip_message_set_topheader 197osip_message_set_uri 198osip_message_set_version 199osip_message_set_via 200osip_message_set_www_authenticate 201osip_message_to_str 202osip_record_route_free 203osip_record_route_init 204osip_record_route_parse 205osip_record_route_to_str 206osip_route_free 207