版權聲明:本文爲博主(寬簡厚重,Yuesichiu)原創文章,未經博主允許不得轉載。
https://blog.csdn.net/yuesichiu/article/details/103738989
一、概述
由於Asterisk-17.0.0版本下的SIP協議棧是基於Pjproject的,因此res_pjsip也是遵循pjsip的Filter模式。
1、接收數據
在該Filter模式下,採用收數據時是從高優先級開始接收(Priority值越大,優先級越低),如果該模塊能處理或者出錯就返回TRUE,否則就爲PJ_FALSE,繼續往上層傳遞(PJSIP是分層設計的,應用層在最上層)。
2、發送數據
在該Filter模式下,由於應用程序爲最高,優先級最低(Priority數值最大),因此傳輸順序爲低優先級調用下層提供的接口依次傳遞數據。最後會調用到PJSIP transport層(UDP/TCP/TLS/WS/WSS)。
版權聲明:本文爲博主(寬簡厚重,Yuesichiu)原創文章,未經博主允許不得轉載。
https://blog.csdn.net/yuesichiu/article/details/103738989
二、Asterisk中的PJSIP模塊優先級
1、優先級64 global_header_mod
static pjsip_module global_header_mod = {
.name = {"Global headers", 13},
.priority = PJSIP_MOD_PRIORITY_APPLICATION,
.on_tx_request = add_request_headers,
.on_tx_response = add_response_headers,
};
2、優先級64 options_module
static pjsip_module options_module = {
.name = {"Options Module", 14},
.id = -1,
.priority = PJSIP_MOD_PRIORITY_APPLICATION,
.on_rx_request = options_on_rx_request,
};
3、優先級64 messaging_module
static pjsip_module messaging_module = {
.name = {"Messaging Module", 16},
.id = -1,
.priority = PJSIP_MOD_PRIORITY_APPLICATION,
.on_rx_request = module_on_rx_request,
};
4、優先級64 pubsub_module
static struct pjsip_module pubsub_module = {
.name = { "PubSub Module", 13 },
.priority = PJSIP_MOD_PRIORITY_APPLICATION,
.on_rx_request = pubsub_on_rx_request,
};
5、優先級64 registrar_module
static pjsip_module registrar_module = {
.name = { "Registrar", 9 },
.id = -1,
.priority = PJSIP_MOD_PRIORITY_APPLICATION,
.on_rx_request = registrar_on_rx_request,
};
6、優先級64 session_module
static pjsip_module session_module = {
.name = {"Session Module", 14},
.priority = PJSIP_MOD_PRIORITY_APPLICATION,
.on_rx_request = session_on_rx_request,
};
7、優先級63 supplement_module
static pjsip_module supplement_module = {
.name = { "Out of dialog supplement hook", 29 },
.id = -1,
.priority = PJSIP_MOD_PRIORITY_APPLICATION - 1,
.on_rx_request = supplement_on_rx_request,
};
8、優先級62 auth_mod(pjsip_distributor.c文件)
static pjsip_module auth_mod = {
.name = {"Request Authenticator", 21},
.priority = PJSIP_MOD_PRIORITY_APPLICATION - 2,
.on_rx_request = authenticate,
};
9、優先級48 outbound_invite_auth_module
static pjsip_module outbound_invite_auth_module = {
.name = {"Outbound INVITE Auth", 20},
.priority = PJSIP_MOD_PRIORITY_DIALOG_USAGE,
.on_rx_response = outbound_invite_auth,
};
10、優先級33 session_reinvite_module
static pjsip_module session_reinvite_module = {
.name = { "Session Re-Invite Module", 24 },
.priority = PJSIP_MOD_PRIORITY_UA_PROXY_LAYER - 1,
.on_rx_request = session_reinvite_on_rx_request,
};
11、優先級15 filter_module_tsx
static pjsip_module filter_module_tsx = {
.name = { "Message Filtering TSX", 21 },
.id = -1,
.priority = PJSIP_MOD_PRIORITY_TSX_LAYER - 1,
.on_tx_request = filter_on_tx_message,
.on_tx_response = filter_on_tx_message,
};
12、優先級14 nat_module
static pjsip_module nat_module = {
.name = { "NAT", 3 },
.id = -1,
.priority = PJSIP_MOD_PRIORITY_TSX_LAYER - 2,
.on_rx_request = nat_on_rx_message,
.on_rx_response = nat_on_rx_message,
.on_tx_request = nat_on_tx_message,
.on_tx_response = nat_on_tx_message,
};
13、優先級14 sips_contact_module
static pjsip_module sips_contact_module = {
.name = {"SIPS Contact", 12 },
.id = -1,
.priority = PJSIP_MOD_PRIORITY_TSX_LAYER - 2,
.on_tx_request = sips_contact_on_tx_request,
};
14、優先級13 endpoint_mod(pjsip_distributor.c文件)
static pjsip_module endpoint_mod = {
.name = {"Endpoint Identifier", 19},
.priority = PJSIP_MOD_PRIORITY_TSX_LAYER - 3,
.on_rx_request = endpoint_lookup,
};
15、優先級11 idle_monitor_module
static pjsip_module idle_monitor_module = {
.name = {"idle monitor module", 19},
.priority = PJSIP_MOD_PRIORITY_TRANSPORT_LAYER + 3,
.on_rx_request = idle_monitor_on_rx_request,
};
16、優先級10 distributor_mod(pjsip_distributor.c文件)
static pjsip_module distributor_mod = {
.name = {"Request Distributor", 19},
.priority = PJSIP_MOD_PRIORITY_TSX_LAYER - 6,
.on_tx_request = record_serializer,
.on_rx_request = distributor,
.on_rx_response = distributor,
};
17、優先級8 filter_module_transport
static pjsip_module filter_module_transport = {
.name = { "Message Filtering Transport", 27 },
.id = -1,
.priority = PJSIP_MOD_PRIORITY_TRANSPORT_LAYER,
.on_rx_request = filter_on_rx_message,
};
18、優先級8 websocket_module
static pjsip_module websocket_module = {
.name = { "WebSocket Transport Module", 26 },
.id = -1,
.priority = PJSIP_MOD_PRIORITY_TRANSPORT_LAYER,
.on_rx_request = websocket_on_rx_msg,
.on_rx_response = websocket_on_rx_msg,
};
19、優先級1 acl_module
static pjsip_module acl_module = {
.name = { "ACL Module", 14 },
/* This should run after a logger but before anything else */
.priority = 1,
.on_rx_request = acl_on_rx_msg,
};
20、優先級0 logging_module
static pjsip_module logging_module = {
.name = { "HEPv3 Logging Module", 20 },
.priority = 0,
.on_rx_request = logging_on_rx_msg,
.on_rx_response = logging_on_rx_msg,
.on_tx_request = logging_on_tx_msg,
.on_tx_response = logging_on_tx_msg,
};
21、優先級0 logging_module
static pjsip_module logging_module = {
.name = { "History Module", 14 },
.priority = 0,
.on_rx_request = history_on_rx_msg,
.on_rx_response = history_on_rx_msg,
.on_tx_request = history_on_tx_msg,
.on_tx_response = history_on_tx_msg,
};
22、優先級0 logging_module
static pjsip_module logging_module = {
.name = { "Logging Module", 14 },
.priority = 0,
.on_rx_request = logging_on_rx_msg,
.on_rx_response = logging_on_rx_msg,
.on_tx_request = logging_on_tx_msg,
.on_tx_response = logging_on_tx_msg,
};
版權聲明:本文爲博主(寬簡厚重,Yuesichiu)原創文章,未經博主允許不得轉載。
https://blog.csdn.net/yuesichiu/article/details/103738989
快捷入羣,請使用QQ掃二維碼,期待大家的加入!
原文地址:https://blog.csdn.net/yuesichiu/article/details/103738989