查看源代码 megaco (megaco v4.7)
Megaco 应用程序的主要 API
Megaco 应用程序的接口模块
概要
类型
Megaco 标识符。
不透明的发送句柄,其内容对于发送模块是内部的。可以是任何项。
传递给跟踪处理函数(在第二个参数中)并由其返回的跟踪数据。例如,这可以是一个文件描述符,跟踪处理函数可以使用它将事件打印到文件中。
由 dbg 生成的跟踪事件。
跟踪处理函数用于“处理”每个跟踪事件(例如,格式化后打印到文件或 stdout)。
应该产生多少跟踪事件。 min
(=0
) 表示不产生跟踪事件,这是默认值。
connections
- 列出此用户的所有活动连接。返回 megaco_conn_handle 记录列表。
当函数的返回将被忽略时使用该类型。
函数
发送一个或多个事务请求,并等待回复。
取消此连接的所有未完成消息
发送一个或多个事务请求,但不等待回复
查找有关活动连接的信息
解码(解析)属性参数结构。
此函数用于停止 megaco 跟踪。
断开“虚拟”连接
此函数用于在给定 Level
启动 megaco 跟踪,并将结果定向到给定的 Destination
。
编码一个或多个事务请求的动作请求列表。
编码(生成)SDP 结构。
根据数字映射收集数字映射字母。
检索由 megaco 应用程序维护的所有(SNMP)统计计数器。
检索由 megaco 应用程序维护的(SNMP)(全局)统计计数器。
检索由 megaco 应用程序维护的(SNMP)统计计数器。
此函数生成有关 megaco 应用程序的信息列表。例如用户及其配置、连接及其配置、统计信息等。
解析数字映射主体
实用函数,用于生成由 versions1
和 versions2
函数生成的版本信息的格式化打印输出。
向事件收集器进程发送一个或多个事件。
重置所有(SNMP)统计计数器。
重置指定的(SNMP)统计计数器。
此函数用于更改 megaco 跟踪级别。
启动 Megaco 应用程序
用户的初始配置
停止 Megaco 应用程序
删除用户的配置
查找系统信息。
向数字映射收集器馈送事件并返回结果
测试 Reply 参数是否正确组成。
测试 Actions 参数是否正确组成。
将令牌标签转换为字符串
更新有关活动连接的信息
更新有关用户的信息
查找用户信息
等效于 versions2/0
。
用于检索一些系统和应用程序信息的实用函数。
类型
-type action_reply() :: megaco_encoder:action_reply().
-type action_reps() :: [action_reply()].
-type action_reqs() :: binary() | [action_request()].
-type action_request() :: megaco_encoder:action_request().
-type conn_handle() :: megaco_user:conn_handle().
-type conn_info_item() ::
control_pid | send_handle | local_mid | remote_mid | receive_handle | trans_id |
max_trans_id | request_timer | long_request_timer | request_keep_alive_timeout |
long_request_resend | reply_timer | call_proxy_gc_timeout | auto_ack | trans_ack |
trans_ack_maxcount | trans_req | trans_req_maxcount | trans_req_maxsize | trans_timer |
pending_timer | sent_pending_limit | recv_pending_limit | send_mod | encoding_mod |
encoding_config | protocol_version | strict_version | reply_data | threaded |
resend_indication | segment_reply_ind | segment_recv_timer | segment_send | max_pdu_size.
此类型是基本(原子)查找键(用于活动连接的信息)。对应的值可以是任何类型。
control_pid
- 连接的控制进程的进程标识符。值类型:pid()
send_handle
- 不透明的发送句柄,其内容对于发送模块是内部的。值类型:
send_handle/0
local_mid
- 本地 mid(连接的,即自己的 mid)。值类型:
mid/0
remote_mid
- 远程 mid(连接的)。值类型:
mid/0
receive_handle
- 构建 megaco_receive_handle 记录。值类型:
receive_handle/0
trans_id
- 下一个事务 id。请注意,事务 id(目前)是按用户维护的,因此无法确定返回的值是否实际用于在此连接上发送的事务(如果用户有多个连接,这并非不可能)。
值类型:
transaction_id/0
|undefined_serial
max_trans_id
- 上一个事务 id。值类型:
transaction_id/0
|infinity
request_timer
- 等待回复。收到回复时,定时器会被取消。
当收到待处理消息时,定时器会被取消,并改为启动
long_request_timer
(见下文)。此时不会执行任何重发(因为我们现在知道对方已收到请求)。当定时器达到中间过期时间时,请求将被重发,定时器将被重新启动。
当定时器达到最终过期时间时,函数
megaco:call
将返回{error, timeout}
,或者回调函数handle_trans_reply
将被调用,其中UserReply = {error, timeout}
(如果使用megaco:cast
)。值类型:
megaco_timer/0
默认为
#megaco_incr_timer{}
。long_request_timer
- 在收到待处理消息后等待回复。当定时器达到中间过期时间时,定时器将重新启动。
当收到待处理消息,且
long_request_timer
不在“最终阶段”时,定时器将重新启动,并且,如果long_request_resend = true
,则请求将被重新发送。值类型:
megaco_timer/0
默认为
60 秒
。request_keep_alive_timeout
- 指定请求保持活动定时器的超时时间。当异步请求(使用
megaco:cast/3
函数发出)的第一个回复到达时,将启动此定时器。只要此定时器正在运行,回复将通过 handle_trans_reply/4,5 回调函数传递,并带有它们的“到达编号”(请参阅 handle_trans_reply/4,5 回调函数的UserReply
)。在定时器过期后到达的回复将使用 handle_unexpected_trans/3,4 回调函数传递。
值类型:
plain
| non_neg_integer()默认为
plain
。long_request_resend
- 此选项指示是否应重新发送请求,直到收到回复,即使已收到待处理消息。通常,在收到待处理消息后,不会重新发送请求(因为待处理消息表示已收到请求)。但是,由于回复(对请求)可能会丢失,因此此行为有其价值。
当然,除非
long_request_timer
(见上文)也设置为增量定时器 (#megaco_incr_timer{}
),否则将此值设置为 true 是没有意义的。值类型:boolean()
默认为
false
。reply_timer
- 等待 ack。当收到请求时,一些与回复相关的信息将存储在内部(例如回复的二进制文件)。此信息将一直存在,直到收到 ack 或此定时器过期。例如,如果再次收到相同的请求(例如,具有相同事务 id 的请求),则 megaco 将自动(重新)发送(存储的)回复。
如果定时器类型为
#megaco_incr_timer{}
,则对于每个中间超时,将重新发送回复(这在收到确认或定时器过期之前有效)。值类型:
megaco_timer/0
默认为
30000
。call_proxy_gc_timeout
- 调用代理的超时时间。当使用
call/3
函数发送请求时,会启动一个代理进程来处理所有回复。当收到回复并传递给用户后,代理进程将继续存在,直到此选项指定的时间。任何收到的消息都会通过 handle_unexpected_trans 回调函数传递给用户。超时时间以毫秒为单位。值为 0(零)表示代理进程将在回复传递后立即退出。
默认为
5000
(= 5 秒)。auto_ack
- 当收到事务回复时自动发送事务确认(请参阅下面的trans_ack
)。这用于三向握手。
值类型:boolean()
默认为
false
。trans_ack
- 是否应累积确认。此属性仅在
auto_ack
为 true 时有效。如果
auto_ack
为 true,那么如果trans_ack
为false
,则确认将立即发送。如果trans_ack
为true
,则确认将发送到事务发送者进程进行累积和稍后发送(请参阅trans_ack_maxcount
、trans_req_maxcount
、trans_req_maxsize
、trans_ack_maxcount
和trans_timer
)。另请参阅 事务发送者 获取更多信息。
值类型:boolean()
默认为
false
。trans_ack_maxcount
- 累积确认的最大数量。事务发送者(如果已启动并配置为累积确认)将最多累积此数量的确认。另请参阅 事务发送者 获取更多信息。
默认为
10
。trans_req
- 是否应累积请求。如果
trans_req
为false
,则请求将立即发送(在自己的消息中)。如果
trans_req
为 true,则请求将发送到事务发送者进程进行累积和稍后发送(请参阅trans_ack_maxcount
、trans_req_maxcount
、trans_req_maxsize
、trans_ack_maxcount
和trans_timer
)。另请参阅 事务发送者 获取更多信息。
值类型:boolean()
默认为
false
。trans_req_maxcount
- 累积请求的最大数量。事务发送者(如果已启动并配置为累积请求)将最多累积此数量的请求。另请参阅 事务发送者 获取更多信息。
默认为
10
。trans_req_maxsize
- 累积请求的最大大小。事务发送者(如果已启动并配置为累积请求)将最多累积此大小的请求。另请参阅 事务发送者 获取更多信息。
默认为
2048
。trans_timer
- 事务发送者超时时间。具有两个功能。首先,如果值为 0,则不会累积事务(例如,不会启动事务发送者进程)。其次,如果值大于 0 且auto_ack
和trans_ack
为 true,或者如果trans_req
为 true,则将启动事务发送者并累积事务(取决于auto_ack
、trans_ack
和trans_req
的值),以便稍后发送。另请参阅 事务发送者 获取更多信息。
默认为
0
。pending_timer
- 如果定时器在事务回复发送之前过期,则自动发送事务挂起。此定时器也称为临时响应定时器。值类型:
megaco_timer/0
默认为
30000
(= 30 秒)。sent_pending_limit
- 发送挂起限制(请参阅 megaco 根包的 MGOriginatedPendingLimit 和 MGCOriginatedPendingLimit)。此参数指定可以发送多少挂起消息(对于给定的接收事务请求)。当超出限制时,事务将中止(请参阅 handle_trans_request_abort),并且向另一方发送错误消息。请注意,这不会影响挂起事务的实际发送。这要么是隐式的(例如,当接收到正在处理的请求的重新发送事务请求时),要么由 pending_timer 控制,请参见上文。
值类型:pos_integer() |
infinity
默认为
infinity
。recv_pending_limit
- 接收挂起限制(请参阅 megaco 根包的 MGOriginatedPendingLimit 和 MGCOriginatedPendingLimit)。此参数指定可以接收多少挂起消息(对于发送的事务请求)。当超出限制时,事务将被视为丢失,并向用户返回错误(通过回调函数 handle_trans_reply)。值类型:pos_integer() |
infinity
默认为
infinity
。send_mod
- 发送回调模块,该模块导出 send_message/2。当需要将字节传输到远程用户时,将调用函数 SendMod:send_message(SendHandle, Binary)。值类型:module()。
默认为
megaco_tcp
。encoding_mod
- 编码回调模块,该模块导出 encode_message/2 和 decode_message/2。每当需要将 'MegacoMessage' 记录转换为 Erlang 二进制文件时,将调用函数 EncodingMod:encode_message(EncodingConfig, MegacoMessage)。每当需要将 Erlang 二进制文件转换为 'MegacoMessage' 记录时,将调用函数 EncodingMod:decode_message(EncodingConfig, Binary)。值类型:module()。
默认为
megaco_pretty_text_encoder
。encoding_config
- 编码模块配置。值类型:loist()。
默认为
[]
。protocol_version
- 实际协议版本。默认为
1
。strict_version
- 严格版本控制,即当收到消息时,验证版本是否为协商的版本。值类型:boolean()
默认为
true
。reply_data
- 默认回复数据。值类型:term()
默认为
undefined
。threaded
- 如果收到的消息包含多个事务请求,此选项指示应在同一进程中按顺序处理请求 (false
),还是应由其自己的进程处理每个请求 (true
,即为每个请求生成单独的进程)。值类型:boolean()
默认为
false
。resend_indication
- 此选项指示是否应告知传输模块消息发送是否为重发。如果为false,则使用 send_message/2 函数发送 megaco 消息。
如果为true,则使用 resend_message 函数进行 megaco 消息重发。初始消息发送仍然使用 send_message 函数完成。
特殊值 flag 则表示应使用函数 send_message/3。
值类型:
flag
| boolean()默认为
false
。segment_reply_ind
- 此选项指定是否应通知用户收到分段回复。有关更多信息,请参阅 handle_segment_reply 回调函数。
值类型:boolean()
默认为
false
。segment_recv_timer
- 当收到由分段完成令牌
指示的分段时(例如,构成回复的最后一个分段),但尚未收到所有分段时,将启动此定时器。当定时器最终过期时,将向另一方发送“megaco 分段未收到”(459) 错误消息,并通过 handle_trans_reply 回调函数或
call/2
函数的返回值中的分段超时
UserReply
通知用户。值类型:
megaco_timer/0
默认为
10000
(= 10 秒)。segment_send
- 是否应分段传出消息。值类型:
none
| pos_integer() |infinity
none
- 不分段传出的回复消息。当已知消息永远不会太大或传输协议可以自行处理此类事情(例如 TCP 或 SCTP)时,此方法很有用。pos_integer/0
- 将根据需要分段传出的回复消息(请参阅下面的max_pdu_size
)。此值 K 指示未完成的窗口,即在任何给定时间可以有多少个未完成(未确认)的分段。infinity
- 将根据需要分段传出的回复消息(请参阅下面的max_pdu_size
)。分段消息一次全部发送(即,在发送下一个分段之前不会等待确认)。
默认为
none
。max_pdu_size
- 最大消息大小。如果编码的消息 (PDU) 超过此大小,则应分段消息,然后进行编码。值类型:
infinity
| pos_integer()默认为
infinity
。
-type counter() :: medGwyGatewayNumTimerRecovery | medGwyGatewayNumErrors.
-type counter_value() :: non_neg_integer().
-type digit_map_event() :: megaco_digit_map:event().
-type digit_map_kind() :: megaco_digit_map:kind().
-type digit_map_letter() :: megaco_digit_map:letter().
-type digit_map_value() :: megaco_digit_map:value().
-type error_desc() :: megaco_encoder:error_desc().
-type global_counter() :: medGwyGatewayNumErrors.
-type megaco_message() :: megaco_encoder:megaco_message().
-type megaco_timer() :: megaco_user:megaco_timer().
-type mid() :: megaco_encoder:ip4Address() | megaco_encoder:ip6Address() | megaco_encoder:domainName() | megaco_encoder:deviceName() | megaco_encoder:mtpAddress().
Megaco 标识符。
-type property_group() :: megaco_sdp:property_group().
-type property_groups() :: megaco_sdp:property_groups().
-type property_parm() :: megaco_sdp:property_parm().
-type protocol_version() :: megaco_encoder:protocol_version().
-type receive_handle() :: megaco_user:receive_handle().
-type sdp() :: megaco_sdp:sdp().
-type sdp_property_group() :: megaco_sdp:sdp_property_group().
-type sdp_property_groups() :: megaco_sdp:sdp_property_groups().
-type sdp_property_parm() :: megaco_sdp:sdp_property_parm().
-type segment_no() :: megaco_encoder:segment_no().
-type send_handle() :: term().
不透明的发送句柄,其内容对于发送模块是内部的。可以是任何项。
-type system_info_item() ::
text_config | connections | users | n_active_requests | n_active_replies |
n_active_connections | reply_counters | pending_counters.
text_config
- 文本编码配置。值类型:term()
connections
- 列出所有活动连接。返回 megaco_conn_handle 记录的列表。值类型:[
conn_handle/0
]users
- 列出所有活动用户。值类型:[
mid/0
]n_active_requests
- 返回源自此 Erlang 节点且仍处于活动状态(因此消耗系统资源)的请求数量。n_active_replies
- 返回源自此 Erlang 节点且仍处于活动状态(因此消耗系统资源)的回复数量。n_active_connections
- 返回活动连接的数量。reply_counters
- 返回回复计数器列表。值类型:[{
conn_handle/0
,transaction_id/0
, 非负整数()}]pending_counters
- 返回接收和发送的挂起计数器列表。值类型:[{recv | sent, [{
transaction_id/0
, 非负整数()}]}]
-type trace_data() :: term().
传递给跟踪处理函数(在第二个参数中)并由其返回的跟踪数据。例如,这可以是一个文件描述符,跟踪处理函数可以使用它将事件打印到文件中。
-type trace_event() :: term().
由 dbg 生成的跟踪事件。
-type trace_handler() :: fun((trace_event(), trace_data()) -> trace_data()).
跟踪处理函数用于“处理”每个跟踪事件(例如,格式化后打印到文件或 stdout)。
-type trace_level() :: min | max | 0..100.
应该产生多少跟踪事件。 min
(=0
) 表示不产生跟踪事件,这是默认值。
-type transaction_id() :: pos_integer().
-type transaction_reply() :: megaco_encoder:transaction_reply().
-type user_info_item() ::
connections | receive_handle | trans_id | min_trans_id | max_trans_id | request_timer |
long_request_timer | long_request_resend | reply_timer | request_keep_alive_timeout |
call_proxy_gc_timeout | auto_ack | trans_ack | trans_ack_maxcount | trans_req |
trans_req_maxcount | trans_req_maxsize | trans_timer | pending_timer | sent_pending_limit |
recv_pending_limit | send_mod | encoding_mod | encoding_config | protocol_version |
strict_version | reply_data | user_mod | user_args | threaded | resend_indication |
segment_reply_ind | segment_recv_timer | segment_send | max_pdu_size.
connections
- 列出此用户的所有活动连接。返回 megaco_conn_handle 记录列表。值类型:[
conn_handle/0
]receive_handle
- 从用户配置构造 receive_handle。值类型:
receive_handle/0
trans_id
- 当前事务 ID。值类型:
transaction_id/0
|undefined_serial
min_trans_id
- 第一个事务 ID。值类型:
transaction_id/0
默认为
1
。max_trans_id
- 上一个事务 id。值类型:
transaction_id/0
|infinity
默认为
infinity
。request_timer
- 等待回复。收到回复时,定时器会被取消。
当收到待处理消息时,定时器会被取消,并改为启动
long_request_timer
(见下文)。此时不会执行任何重发(因为我们现在知道对方已收到请求)。当定时器达到中间过期时间时,请求将被重发,定时器将被重新启动。
当定时器达到最终过期时间时,函数
megaco:call
将返回{error, timeout}
,或者回调函数handle_trans_reply
将被调用,其中UserReply = {error, timeout}
(如果使用megaco:cast
)。值类型:
megaco_timer/0
默认为
#megaco_incr_timer{}
。long_request_timer
- 在收到待处理消息后等待回复。当定时器达到中间过期时间时,定时器会重新启动。
当收到待处理消息,且
long_request_timer
不在“最终阶段”时,定时器将重新启动,并且,如果long_request_resend = true
,则请求将被重新发送。值类型:
megaco_timer/0
默认为
60000
(= 60 秒)。long_request_resend
- 此选项指示是否应重新发送请求,直到收到回复,即使已收到待处理消息。通常,在收到待处理消息后,不会重新发送请求(因为待处理消息表示已收到请求)。但是,由于回复(对请求)可能会丢失,因此此行为有其价值。
当然,除非
long_request_timer
(见上文)也设置为增量定时器 (#megaco_incr_timer{}
),否则将此值设置为 true 是没有意义的。值类型:boolean()
默认为
false
。reply_timer
- 等待 ack。当收到请求时,一些与回复相关的信息将存储在内部(例如回复的二进制文件)。此信息将一直存在,直到收到 ack 或此定时器过期。例如,如果再次收到相同的请求(例如,具有相同事务 id 的请求),则 megaco 将自动(重新)发送(存储的)回复。
如果定时器类型为
#megaco_incr_timer{}
,则对于每个中间超时,将重新发送回复(这在收到确认或定时器过期之前有效)。值类型:
megaco_timer/0
默认为
30 秒
。request_keep_alive_timeout
- 指定请求保持活动定时器的超时时间。当异步请求(使用
megaco:cast/3
函数发出)的第一个回复到达时,将启动此定时器。只要此定时器正在运行,回复将通过 handle_trans_reply/4,5 回调函数传递,并带有它们的“到达编号”(请参阅 handle_trans_reply/4,5 回调函数的UserReply
)。在定时器过期后到达的回复将使用 handle_unexpected_trans/3,4 回调函数传递。
值类型:
plain
| non_neg_integer()默认为
plain
。call_proxy_gc_timeout
- 调用代理的超时时间。当使用
call/3
函数发送请求时,会启动一个代理进程来处理所有回复。当收到回复并传递给用户后,代理进程将继续存在,直到此选项指定的时间。任何收到的消息都会通过 handle_unexpected_trans 回调函数传递给用户。超时时间以毫秒为单位。值为 0(零)表示代理进程将在回复传递后立即退出。
值类型:正整数()
默认为
5000
(= 5 秒)。auto_ack
- 当收到事务回复时自动发送事务确认(请参阅下面的trans_ack
)。这用于三向握手。
值类型:boolean()
默认为
false
。trans_ack
- 是否应累积确认。此属性仅在
auto_ack
为 true 时有效。如果
auto_ack
为 true,那么如果trans_ack
为false
,则确认将立即发送。如果trans_ack
为true
,则确认将发送到事务发送者进程进行累积和稍后发送(请参阅trans_ack_maxcount
、trans_req_maxcount
、trans_req_maxsize
、trans_ack_maxcount
和trans_timer
)。另请参阅 事务发送者 获取更多信息。
值类型:boolean()
默认为
false
。trans_ack_maxcount
- 累积确认的最大数量。事务发送者(如果已启动并配置为累积确认)将最多累积此数量的确认。另请参阅 事务发送者 获取更多信息。
值类型:整数()
默认为
10
。trans_req
- 是否应累积请求。如果
trans_req
为false
,则请求将立即发送(在自己的消息中)。如果
trans_req
为 true,则请求将发送到事务发送者进程进行累积和稍后发送(请参阅trans_ack_maxcount
、trans_req_maxcount
、trans_req_maxsize
、trans_ack_maxcount
和trans_timer
)。另请参阅 事务发送者 获取更多信息。
值类型:boolean()
默认为
false
。trans_req_maxcount
- 累积请求的最大数量。事务发送者(如果已启动并配置为累积请求)将最多累积此数量的请求。另请参阅 事务发送者 获取更多信息。
值类型:整数()
默认为
10
。trans_req_maxsize
- 累积请求的最大大小。事务发送者(如果已启动并配置为累积请求)将最多累积此大小的请求。另请参阅 事务发送者 获取更多信息。
值类型:整数()
默认为
2048
。trans_timer
- 事务发送者超时时间。具有两个功能。首先,如果值为 0,则不会累积事务(例如,不会启动事务发送者进程)。其次,如果值大于 0 且auto_ack
和trans_ack
都为 true,或者如果trans_req
为 true,则将启动事务发送者,并且会累积事务(取决于auto_ack
、trans_ack
和trans_req
的值),以便稍后发送。另请参阅 事务发送者 获取更多信息。
值类型:整数()
默认为
0
。pending_timer
- 如果定时器在发送事务回复之前过期,则自动发送挂起。此定时器也称为临时响应定时器。值类型:
megaco_timer/0
默认为
30000
。sent_pending_limit
- 发送挂起限制(请参阅 megaco 根包的 MGOriginatedPendingLimit 和 MGCOriginatedPendingLimit)。此参数指定可以发送多少挂起消息(对于给定的接收事务请求)。当超出限制时,事务将中止(请参阅 handle_trans_request_abort),并且向另一方发送错误消息。请注意,这不会影响挂起事务的实际发送。这要么是隐式的(例如,当接收到正在处理的请求的重新发送事务请求时),要么由 pending_timer 控制,请参见上文。
值类型:
infinity
| pos_integer()默认为
infinity
。recv_pending_limit
- 接收挂起限制(请参阅 megaco 根包的 MGOriginatedPendingLimit 和 MGCOriginatedPendingLimit)。此参数指定可以接收多少挂起消息(对于发送的事务请求)。当超出限制时,事务将被视为丢失,并向用户返回错误(通过回调函数 handle_trans_reply)。值类型:
infinity
| pos_integer()默认为
infinity
。send_mod
- 发送回调模块,该模块导出 send_message/2。当需要将字节传输到远程用户时,将调用函数 SendMod:send_message(SendHandle, Binary)。值类型:模块()
默认为
megaco_tcp
。encoding_mod
- 编码回调模块,该模块导出 encode_message/2 和 decode_message/2。每当需要将 'MegacoMessage' 记录转换为 Erlang 二进制文件时,将调用函数 EncodingMod:encode_message(EncodingConfig, MegacoMessage)。每当需要将 Erlang 二进制文件转换为 'MegacoMessage' 记录时,将调用函数 EncodingMod:decode_message(EncodingConfig, Binary)。值类型:模块()
默认为
megaco_pretty_text_encoder
。encoding_config
- 编码模块配置。值类型:列表()
默认为
[]
。protocol_version
- 实际协议版本。默认为
1
。strict_version
- 严格版本控制,即当收到消息时,验证版本是否为协商的版本。值类型:boolean()
默认为
true
。reply_data
- 默认回复数据。值类型:term()
默认为
undefined
。user_mod
- 用户回调模块的名称。有关更多信息,请参阅 megaco_user 的参考手册。值类型:模块()
没有默认值,因为它是一个强制的配置选项。
user_args
- 用户回调函数的额外参数列表。有关更多信息,请参阅 megaco_user 的参考手册。值类型:列表()
threaded
- 如果收到的消息包含多个事务请求,此选项指示应在同一进程中按顺序处理请求 (false
),还是应由其自己的进程处理每个请求 (true
,即为每个请求生成单独的进程)。值类型:boolean()
默认为
false
。resend_indication
- 此选项指示是否应告知传输模块消息发送是否为重发。如果为false,则使用 send_message 函数发送 Megaco 消息。
如果为true,则使用 resend_message 函数进行 megaco 消息重发。初始消息发送仍然使用 send_message 函数完成。
特殊值 flag 则表示应使用函数 send_message/3。
值类型:boolean()
默认为
false
。segment_reply_ind
- 此选项指定是否应通知用户收到分段回复。有关更多信息,请参阅 handle_segment_reply 回调函数。
值类型:boolean()
默认为
false
。segment_recv_timer
- 当收到由分段完成标记
指示的分段时,但尚未收到所有分段时,将启动此定时器。当定时器最终过期时,会向另一端发送“未收到 Megaco 分段”(459)错误消息,并通过
分段超时
UserReply
在 handle_trans_reply 回调函数或call/3
函数的返回值中通知用户。值类型:
megaco_timer/0
默认为
10000
。segment_send
- 是否应分段传出消息。值类型:
none
| pos_integer() |infinity
none
- 不分段传出的回复消息。当已知消息永远不会太大或传输协议可以自行处理此类事情(例如 TCP 或 SCTP)时,此方法很有用。pos_integer/0
- 将根据需要分段传出的回复消息(请参阅下面的max_pdu_size
)。此值 K 指示未完成的窗口,即在任何给定时间可以有多少个未完成(未确认)的分段。infinity
- 将根据需要分段传出的回复消息(请参阅下面的max_pdu_size
)。分段消息一次全部发送(即,在发送下一个分段之前不会等待确认)。
默认为
none
。max_pdu_size
- 最大消息大小。如果编码的消息 (PDU) 超过此大小,则应分段消息,然后进行编码。值类型:
infinity
| pos_integer()默认为
infinity
。
-type void() :: term().
当函数的返回将被忽略时使用该类型。
函数
-spec call(ConnHandle, ActionRequests, SendOptions) -> {ProtocolVersion, UserReply | [UserReply]} when ConnHandle :: conn_handle(), ActionRequests :: action_reqs() | [action_reqs()], SendOptions :: [SendOption], SendOption :: {request_timer, megaco_timer()} | {long_request_timer, megaco_timer()} | {send_handle, send_handle()} | {protocol_version, protocol_version()} | {call_proxy_gc_timeout, non_neg_integer()}, ProtocolVersion :: protocol_version(), UserReply :: Success | Failure, Success :: {ok, Result} | {ok, Result, SuccessExtra}, Result :: MessageResult | SegmentResult, MessageResult :: action_reps(), SegmentResult :: SegmentsOk, SegmentsOk :: [{segment_no(), action_reps()}], Failure :: {error, Reason} | {error, Reason, ErrorExtra}, Reason :: MessageReason | SegmentReason | UserCancelReason | SendReason | OtherReason, MessageReason :: error_desc(), SegmentReason :: {segment, SegmentsOk, SegmentsErr} | {segment_timeout, MissingSegments, SegmentsOk, SegmentsErr}, SegmentsErr :: {segment_no(), error_desc()}, MissingSegments :: [segment_no()], UserCancelReason :: {user_cancel, ReasonForUserCancel}, ReasonForUserCancel :: term(), SendReason :: SendCancelledReason | SendFailedReason, SendCancelledReason :: {send_message_cancelled, term()}, SendFailedReason :: {send_message_failed, term()}, OtherReason :: {wrong_mid, WrongMid :: mid(), RightMid :: mid(), transaction_reply()} | term(), SuccessExtra :: term(), ErrorExtra :: term().
发送一个或多个事务请求,并等待回复。
在消息中发送一个事务时,ActionRequests
应该是 action_reqs/0
(回复将是 UserReply
)。在消息中发送多个事务时,ActionRequests
应该是 [action_reqs()]
(回复将是 [UserReply]
)。列表中的每个元素都是一个事务的一部分。
对于我们的一些编解码器(非二进制),也可以预编码操作,在这种情况下,ActionRequests
将是 二进制/0
或 [二进制()]
。
当回复到达、请求定时器最终超时或显式取消未完成的请求时,该函数返回。
发送选项的默认值通过 megaco:conn_info(ConnHandle, Item)
获取。但是,上面的发送选项可能会被显式覆盖。
ProtocolVersion
版本是实际在回复消息中编码的版本。
在 Success
时,UserReply
包含一个“ActionReply”记录列表,其中可能包含错误指示。
Failure
表示远程用户已回复显式 transactionError。
UserCancelReason
表示请求已被用户取消。ReasonForUserCancel
是调用 cancel/2
函数时给出的原因。
发送错误(SendReason
)表示 megaco 传输回调模块的发送函数未能发送请求。有两种不同的情况:SendCancelledReason
和 SendFailedReason
。第一个是发送函数返回 {cancel, Reason}
的结果,第二个是其他类型的错误返回值。有关更多信息,请参阅 send_message 函数。
OtherReason
表示其他一些错误,例如超时。
有关结果的“额外”部分(SuccessExtra
和 ErrorExtra
)的更多信息,请参阅用户回调模块文档中的注释。
-spec cancel(ConnHandle, CancelReason) -> ok | {error, Reason} when ConnHandle :: conn_handle(), CancelReason :: term(), Reason :: term().
取消此连接的所有未完成消息
这会导致未完成的 megaco:call/3 请求返回。还会调用回调函数 UserMod:handle_reply/4 和 UserMod:handle_trans_ack/4(如果适用)。有关回调参数的更多信息,请参阅 megaco_user 模块。
-spec cast(ConnHandle, ActionRequests, SendOptions) -> ok | {error, Reason} when ConnHandle :: conn_handle(), ActionRequests :: action_reqs() | [action_reqs()], SendOptions :: [SendOption], SendOption :: {request_keep_alive_timeout, RequestKeepAliveTimer} | {request_timer, megaco_timer()} | {long_request_timer, megaco_timer()} | {send_handle, send_handle()} | {reply_data, ReplyData} | {protocol_version, ProtocolVersion}, RequestKeepAliveTimer :: plain | non_neg_integer(), ReplyData :: term(), ProtocolVersion :: protocol_version(), Reason :: term().
发送一个或多个事务请求,但不等待回复
在消息中发送一个事务时,ActionRequests
应该是 action_reqs/0
。在消息中发送多个事务时,ActionRequests
应该是 [action_reqs()]
。列表中的每个元素都是一个事务的一部分。
对于我们的一些编解码器(非二进制),也可以预编码操作,在这种情况下,Actions
将是 二进制/0
或 [二进制()]
。
发送选项的默认值通过 megaco:conn_info(ConnHandle, Item) 获取。但是,上面的发送选项可能会被显式覆盖。
ProtocolVersion 版本是实际在回复消息中编码的版本。
当回复到达、请求定时器最终超时或显式取消未完成的请求时,会调用回调函数 UserMod:handle_trans_reply/4。有关回调参数的更多信息,请参阅 megaco_user 模块。
作为 ReplyData
参数提供给 UserMod:handle_trans_reply/4。
-spec conn_info(ConnHandle) -> [{Item, Value}] when ConnHandle :: conn_handle(), Item :: requests | replies | conn_info_item(), Value :: term().
等效于 conn_info/2
。
-spec conn_info(ConnHandle, ConnInfo) -> Value when ConnHandle :: conn_handle(), ConnInfo :: all | requests | replies | conn_info_item(), Value :: term().
查找有关活动连接的信息
要求连接处于活动状态。
失败:exit
,例如,如果 ConnHandle
指向不再存在的连接。
-spec connect(ReceiveHandle, RemoteMid, SendHandle, ControlPid) -> {ok, ConnHandle} | {error, Reason} when ReceiveHandle :: receive_handle(), RemoteMid :: preliminary_mid | mid(), SendHandle :: send_handle(), ControlPid :: pid(), ConnHandle :: conn_handle(), Reason :: ConnectReason | HandleConnectReason | term(), ConnectReason :: {no_such_user, LocalMid} | {already_connected, ConnHandle} | term(), LocalMid :: mid(), HandleConnectReason :: {connection_refused, ConnData, ErrorInfo} | term(), ConnData :: term(), ErrorInfo :: term().
等效于 connect/5
。
-spec connect(ReceiveHandle, RemoteMid, SendHandle, ControlPid, Extra) -> {ok, ConnHandle} | {error, Reason} when ReceiveHandle :: receive_handle(), RemoteMid :: preliminary_mid | mid(), SendHandle :: send_handle(), ControlPid :: pid(), Extra :: term(), ConnHandle :: conn_handle(), Reason :: ConnectReason | HandleConnectReason | term(), ConnectReason :: {no_such_user, LocalMid} | {already_connected, ConnHandle} | term(), LocalMid :: mid(), HandleConnectReason :: {connection_refused, ConnData, ErrorInfo} | term(), ConnData :: term(), ErrorInfo :: term().
建立“虚拟”连接
激活与远程用户的连接。完成此操作后,可以使用该连接发送消息(使用 SendMod:send_message/2
)。ControlPid
是控制连接的进程的标识符。该进程将受到监督,如果它死亡,将会检测到这一点,并且将调用 UserMod:handle_disconnect/2
回调函数。有关回调参数的更多信息,请参阅 megaco_user 模块。也可以通过调用 megaco:disconnect/2
显式地停用连接。
ControlPid
可能是驻留在另一个 Erlang 节点上的进程的标识。当您想要将用户分配到多个 Erlang 节点时,这很有用。在这种情况下,其中一个节点具有物理连接。当驻留在其他节点之一上的用户需要发送请求(使用 megaco:call/3
或 megaco:cast/3
)时,消息将在始发 Erlang 节点上编码,然后转发到具有物理连接的节点。当回复到达时,它将转发回发起者。可以通过本地调用 megaco:disconnect/2
显式地停用分布式连接,或者在停用物理连接时隐式地停用(使用 megaco:disconnect/2
、杀死控制进程、停止其他节点等)。
调用此函数将触发回调函数 UserMod:handle_connect/2
的调用。有关回调参数的更多信息,请参阅 megaco_user 模块。
可以通过多种方式建立连接
已配置的 MID
- MG 可以显式调用 megaco:connect/4 并使用 MGC 的已配置 MID 作为 RemoteMid。升级预备 MID
- MG 可以显式调用 megaco:connect/4,并将原子 'preliminary_mid' 用作 MGC 的临时 MID,发送初始消息,即服务变更请求,到 MGC,然后等待初始消息,即服务变更回复。当回复到达时,Megaco 应用程序将从消息头中选取 MGC 的 MID,并自动将连接升级为“正常”连接。通过使用此方法建立连接,将调用回调函数UserMod:handle_connect/2
两次。第一次的ConnHandle
的 remote_mid 字段设置为 preliminary_mid,然后在完成连接升级时,remote_mid 字段设置为 MGC 的实际 MID。自动
- 当 MGC 收到其第一条消息(即服务变更请求)时,Megaco 应用程序将自动使用消息头中找到的 MG MID 作为远程 MID 来建立连接。分布式
- 当用户 (MG/MGC) 分布在多个节点上时,需要托管连接的节点已激活该连接并且处于“正常”状态。RemoteMid
必须是真正的 Megaco MID,而不是preliminary_mid
。
可以使用 megaco:user_info(UserMid, receive_handle)
获取初始的 megaco_receive_handle 记录
发送句柄由首选的传输模块提供,例如 megaco_tcp、megaco_udp。请阅读有关每个传输模块的详细信息的文档。
连接分两个步骤完成:首先是内部的 连接设置
,然后是调用用户 handle_connect 回调函数。第一步可能会导致 Reason = ConnectReason
的错误,第二步可能会导致 Reason = HandleConnectReason
的错误
ConnectReason
- 此原因的错误是由 Megaco 应用程序本身生成的。HandleConnectReason
- 此原因的错误是由用户 handle_connect 回调函数返回错误或无效值引起的。
Extra
可以是任何 term/0
,但原子 ignore_extra
除外。它会通过回调函数 handle_connect/3 传递(返回)给用户。
-spec decode_sdp(PP) -> {ok, SDP} | {error, Reason} when PP :: property_parm() | property_group() | property_groups() | asn1_NOVALUE, SDP :: sdp() | DecodeSdpPropertyGroup | DecodeSdpPropertyGroups | asn1_NOVALUE, DecodeSdpPropertyGroup :: [DecodeSDP], DecodeSdpPropertyGroups :: [DecodeSdpPropertyGroup], DecodeSDP :: sdp() | {property_parm(), DecodeError}, DecodeError :: term(), Reason :: term().
解码(解析)属性参数结构。
当解码 property_group/0
或 property_groups/0
时,那些无法解码的属性参数结构(由于解码错误或未知)将作为二元组返回。二元组的第一个元素是(未解码的)属性参数,另一个元素是实际原因。这意味着此函数的调用者不仅要期望 sdp 记录,还要期望此二元组结构。
此函数执行以下转换
- property_parm() -> sdp()
- property_group() -> sdp_property_group()
- property_groups() -> sdp_property_groups()
-spec disable_trace() -> void().
此函数用于停止 megaco 跟踪。
-spec disconnect(ConnHandle, DiscoReason) -> ok | {error, ErrReason} when ConnHandle :: conn_handle(), DiscoReason :: term(), ErrReason :: term().
断开“虚拟”连接
导致调用 UserMod:handle_disconnect/2
回调函数。有关回调参数的更多信息,请参阅 megaco_user 模块。
-spec enable_trace(Level, Destination) -> void() when Level :: trace_level(), Destination :: File | Port | HandlerSpec | io, File :: string(), Port :: integer(), HandlerSpec :: {HandlerFun, InitialData}, HandlerFun :: trace_handler(), InitialData :: trace_data().
此函数用于在给定 Level
启动 megaco 跟踪,并将结果定向到给定的 Destination
。
它会启动一个跟踪器服务器,然后根据 Level
设置正确的匹配规范。
如果 Destination
为 File
,则可打印的 megaco 跟踪事件将使用纯 io:format/2
打印到文件 File
中。
如果 Destination
为 io
,则可打印的 megaco 跟踪事件将使用纯 io:format/2
打印到标准输出。
有关更多信息,请参阅 dbg
。
-spec encode_actions(ConnHandle, ActionRequests, Options) -> {ok, Result} | {error, Reason} when ConnHandle :: conn_handle(), ActionRequests :: action_reqs() | [action_reqs()], Options :: [Option], Option :: {request_timer, megaco_timer()} | {long_request_timer, megaco_timer()} | {send_handle, send_handle()} | {protocol_version, protocol_version()}, Result :: binary() | [binary()], Reason :: term().
编码一个或多个事务请求的动作请求列表。
当为单个事务编码操作请求时,Actions
应该是 action_reqs/0
。当为多个事务编码操作请求时,Actions
应该是 [action_reqs()]
。列表的每个元素都是一个事务的一部分。
-spec encode_sdp(SDP) -> {ok, PP} | {error, Reason} when SDP :: sdp_property_parm() | sdp_property_group() | sdp_property_groups() | asn1_NOVALUE, PP :: property_parm() | property_group() | property_groups() | asn1_NOVALUE, Reason :: term().
编码(生成)SDP 结构。
如果在输入 (SDP
) 中找到 property_parm/0
,则它将保持不变。
此函数执行以下转换
- sdp() -> property_parm()
- sdp_property_group() -> property_group()
- sdp_property_groups() -> property_groups()
-spec eval_digit_map(DigitMap) -> {ok, MatchResult} | {error, Reason} when DigitMap :: digit_map_value() | ParsedDigitMap, ParsedDigitMap :: term(), MatchResult :: {Kind, Letters} | {Kind, Letters, Extra}, Kind :: digit_map_kind(), Letters :: [digit_map_letter()], Extra :: digit_map_letter(), Reason :: term().
等效于 eval_digit_map/2
。
-spec eval_digit_map(DigitMap, Timers) -> {ok, MatchResult} | {error, Reason} when DigitMap :: digit_map_value() | ParsedDigitMap, ParsedDigitMap :: term(), Timers :: Ignore | Reject, Ignore :: ignore | {ignore, digit_map_value()}, Reject :: reject | {reject, digit_map_value()} | digit_map_value(), MatchResult :: {Kind, Letters} | {Kind, Letters, Extra}, Kind :: digit_map_kind(), Letters :: [digit_map_letter()], Extra :: digit_map_letter(), Reason :: term().
根据数字映射收集数字映射字母。
当评估数字映射时,状态机会等待超时和 megaco:report_digit_event/2 报告的字母。各种超时的长度在 digit_map_value() 记录中定义。
当收到完整的有效事件序列后,结果将作为字母列表返回。
有两种处理语法错误的方法(即当数字映射评估器期望某些其他事件时收到意外事件)。意外事件可能会被忽略或拒绝。后者意味着评估被中止并返回错误。
-spec get_stats() -> {ok, [TotalStats]} | {error, Reason} when TotalStats :: {conn_handle(), [Stats]} | {global_counter(), counter_value()}, Stats :: {counter(), counter_value()}, Reason :: term().
检索由 megaco 应用程序维护的所有(SNMP)统计计数器。
全局计数器处理无法归因于单个连接的事件(例如,在正确建立连接之前发生的协议错误)。
-spec get_stats(GCounter) -> {ok, Value} | {error, Reason} when GCounter :: global_counter(), Value :: counter_value(), Reason :: term(); (ConnHandle) -> {ok, [Stats]} | {error, Reason} when ConnHandle :: conn_handle(), Stats :: {counter(), counter_value()}, Reason :: term().
检索由 megaco 应用程序维护的(SNMP)(全局)统计计数器。
全局计数器处理无法归因于单个连接的事件(例如,在正确建立连接之前发生的协议错误)。
检索 Megaco 应用程序为特定连接维护的所有(SNMP)统计计数器。
-spec get_stats(ConnHandle, Counter) -> {ok, Value} | {error, Reason} when ConnHandle :: conn_handle(), Counter :: counter(), Value :: counter_value(), Reason :: term().
检索由 megaco 应用程序维护的(SNMP)统计计数器。
此函数生成有关 megaco 应用程序的信息列表。例如用户及其配置、连接及其配置、统计信息等。
此信息可以由函数 user_info/2
、conn_info/2
、system_info/1
和 get_stats/2
生成,但这是一种简单的一次性获取所有信息的方法。
-spec parse_digit_map(DigitMapBody) -> {ok, ParsedDigitMap} | {error, Reason} when DigitMapBody :: string(), ParsedDigitMap :: term(), Reason :: term().
解析数字映射主体
将表示为字符列表的数字映射主体解析为适合 megaco:eval_digit_map/1,2 评估的状态转换列表。
-spec print_version_info() -> void().
等效于 print_version_info/1
。
实用函数,用于生成由 versions1
和 versions2
函数生成的版本信息的格式化打印输出。
函数 print_version_info/0 使用函数 version1/0 的结果作为 VersionInfo
。
示例
{ok, V} = megaco:versions1(), megaco:format_versions(V).
-spec process_received_message(ReceiveHandle, ControlPid, SendHandle, BinMsg) -> ok when ReceiveHandle :: receive_handle(), ControlPid :: pid(), SendHandle :: send_handle(), BinMsg :: binary().
-spec process_received_message(ReceiveHandle, ControlPid, SendHandle, BinMsg, Extra) -> ok when ReceiveHandle :: receive_handle(), ControlPid :: pid(), SendHandle :: send_handle(), BinMsg :: binary(), Extra :: term().
处理接收到的消息
此函数旨在由某些传输模块在收到传入消息时调用。实际使用的传输方式由用户选择。
该消息以 Erlang 二进制形式传递,并由接收句柄中声明的编码模块及其编码配置进行解码。根据解码的结果,将调用各种回调函数。有关回调参数的更多信息,请参阅 megaco_user。
参数 Extra
只是一个不透明的数据结构,通过 用户回调模块 中的回调函数传递给用户。但是请注意,如果 Extra
的值为 extra_undefined
,则该参数将被忽略(与调用 process_received_message/4
的情况相同)。有关回调模块的行为的更多信息,请参阅回调模块 megaco_user
的文档。
请注意,所有处理都在调用进程的上下文中完成。传输模块可以通过 spawn
函数之一(例如 spawn_opt
)调用此函数。另请参阅 receive_message/4,5
。
如果无法解码消息,则将调用以下回调函数
- UserMod:handle_syntax_error/3
如果解码后的消息不是事务而是包含消息错误,则将调用以下回调函数
- UserMod:handle_message_error/3
如果解码后的消息恰好在建立连接之前收到,则将建立新的“虚拟”连接。对于媒体网关控制器 (MGC) 在第一次服务更改时,通常会发生这种情况。发生这种情况时,将调用以下回调函数
- UserMod:handle_connect/2
对于解码后的消息中的每个事务请求,将调用以下回调函数
- UserMod:handle_trans_request/3
对于解码后的消息中的每个事务回复,回复将返回给用户。megaco:call/3 的原始函数将返回。或者,如果原始函数是 megaco:case/3,则将调用以下回调函数
- UserMod:handle_trans_reply/4
当收到事务确认时,用户可能已决定不理会确认。但是,如果 UserMod:handle_trans_request/3 的返回值指示确认很重要,则将调用以下回调函数
- UserMod:handle_trans_ack/4
有关回调参数的更多信息,请参阅 megaco_user 模块。
-spec receive_message(ReceiveHandle, ControlPid, SendHandle, BinMsg) -> ok when ReceiveHandle :: receive_handle(), ControlPid :: pid(), SendHandle :: send_handle(), BinMsg :: binary().
等效于 receive_message/5
。
-spec receive_message(ReceiveHandle, ControlPid, SendHandle, BinMsg, Extra) -> ok when ReceiveHandle :: receive_handle(), ControlPid :: pid(), SendHandle :: send_handle(), BinMsg :: binary(), Extra :: term().
处理接收到的消息
这是一个回调函数,旨在由某些传输模块在收到传入消息时调用。实际使用的传输方式由用户选择。
原则上,此函数通过 spawn
调用 process_received_message/4,5 函数来执行实际处理。
-spec report_digit_event(DigitMapEvalPid, Events) -> ok | {error, Reason} when DigitMapEvalPid :: pid(), Events :: digit_map_event() | [digit_map_event()], Reason :: term().
向事件收集器进程发送一个或多个事件。
向正在评估数字映射的进程发送一个或多个事件,即正在执行 megaco:eval_digit_map/1,2 的进程。
请注意,事件 $s | $S
、l | $L
和 $z | $Z
与使用相同字符的定时器无关。
-spec reset_stats() -> void().
重置所有(SNMP)统计计数器。
-spec reset_stats(GCounter) -> void() when GCounter :: global_counter(); (ConnHandle) -> void() when ConnHandle :: conn_handle().
重置指定的(SNMP)统计计数器。
重置连接的所有(SNMP)统计计数器。
-spec set_trace(Level) -> void() when Level :: trace_level().
此函数用于更改 megaco 跟踪级别。
假设已启用跟踪(请参阅上面的 enable_trace
)。
-spec start() -> ok | {error, Reason} when Reason :: term().
启动 Megaco 应用程序
用户可以通过 megaco:start_user/2 显式注册,和/或通过将应用程序环境变量“users”设置为 {UserMid, Config} 元组列表进行静态配置。有关详细信息,请参阅函数 megaco:start_user/2。
-spec start_user(UserMid, Config) -> ok | {error, Reason} when UserMid :: mid(), Config :: [{Item, Value}], Item :: user_info_item(), Value :: term(), Reason :: term().
用户的初始配置
要求启动 megaco 应用程序。用户可以是媒体网关 (MG) 或媒体网关控制器 (MGC)。一个 Erlang 节点可以托管多个用户。
用户由其 UserMid 标识,该 UserMid 必须是合法的 Megaco MID。
Config 是 {Item, Value} 元组的列表。有关哪些项和值有效,请参阅 megaco:user_info/2。
-spec stop() -> ok | {error, Reason} when Reason :: term().
停止 Megaco 应用程序
删除用户的配置
要求用户没有任何活动连接。
-spec system_info() -> [{Item, Value}] when Item :: system_info_item(), Value :: term().
等效于 system_info/1
。
-spec system_info(Item) -> Value when Item :: system_info_item(), Value :: term().
查找系统信息。
-spec test_digit_event(DigitMap, Events) -> {ok, Kind, Letters} | {error, Reason} when DigitMap :: digit_map_value() | ParsedDigitMap, ParsedDigitMap :: term(), Events :: digit_map_event() | [digit_map_event()], Kind :: digit_map_kind(), Letters :: [digit_map_letter()], Reason :: term().
向数字映射收集器馈送事件并返回结果
此函数使用 megaco:eval_digit_map/1 启动数字映射的评估,并使用 megaco:report_digit_event/2 向其发送一系列事件,以便简化数字映射的测试。
-spec test_reply(ConnHandle, Version, EncodingMod, EncodingConfig, Reply) -> {MegaMsg, EncodeRes} when ConnHandle :: conn_handle(), Version :: protocol_version(), EncodingMod :: module(), EncodingConfig :: list(), Reply :: error_desc() | [action_reply()], MegaMsg :: megaco_message(), EncodeRes :: {ok, Bin} | {error, Reason}, Bin :: binary(), Reason :: term().
测试 Reply 参数是否正确组成。
此函数仅用于测试目的。它旨在测试回调函数 handle_trans_request 和 handle_trans_long_request 函数的 actual_reply()
返回值(添加了 EncodingMod
和 EncodingConfig
参数)。它会组成一个完整的 megaco 消息,并尝试对其进行编码。返回值将是组成的 megaco 消息和编码结果的元组。
-spec test_request(ConnHandle, Version, EncodingMod, EncodingConfig, ActionRequests) -> {MegaMsg, EncodeRes} when ConnHandle :: conn_handle(), Version :: protocol_version(), EncodingMod :: module(), EncodingConfig :: list(), ActionRequests :: action_reqs() | [action_reqs()], MegaMsg :: megaco_message(), EncodeRes :: {ok, Bin} | {error, Reason}, Bin :: binary(), Reason :: term().
测试 Actions 参数是否正确组成。
此函数仅用于测试目的。它应该具有与 call/3
或 cast/3
函数相同的接口(添加了 EncodingMod
和 EncodingConfig
参数)。它会组成一个完整的 megaco 消息,并尝试对其进行编码。返回值将是组成的 megaco 消息和编码结果的元组。
-spec token_tag2string(Tag) -> Result when Tag :: atom(), Result :: string() | {error, Reason}, Reason :: term().
等效于 token_tag2string/3
。
-spec token_tag2string(Tag, EncodingMod) -> Result when Tag :: atom(), EncodingMod :: pretty | compact | module(), Result :: string() | {error, Reason}, Reason :: term().
等效于 token_tag2string/3
。
-spec token_tag2string(Tag, EncodingMod, Version) -> Result when Tag :: atom(), EncodingMod :: pretty | compact | module(), Version :: protocol_version() | v1 | v2 | v3, Result :: string() | {error, Reason}, Reason :: term().
将令牌标签转换为字符串
如果没有给出编码器模块,则使用默认模块(它很漂亮)。
如果没有给出版本或给出了未知版本,则使用最佳版本(即 v3)。
如果找不到 Tag
的匹配项,则 Result
将为空字符串 ([]
)。
-spec update_conn_info(ConnHandle, Item, Value) -> ok | {error, Reason} when ConnHandle :: conn_handle(), Item :: conn_info_item(), Value :: term(), Reason :: term().
更新有关活动连接的信息
要求激活连接。有关哪些项和值有效,请参阅 conn_info_item/0
。
-spec update_user_info(UserMid, Item, Value) -> ok | {error, Reason} when UserMid :: mid(), Item :: user_info_item(), Value :: term(), Reason :: term().
更新有关用户的信息
要求用户已启动。
-spec user_info(UserMid) -> [{Item, Value}] when UserMid :: mid(), Item :: requests | replies | user_info_item(), Value :: term().
等效于 user_info/2
。
-spec user_info(UserMid, Input) -> Result when Input :: Requests | Replies | Item, Requests :: requests, Replies :: replies, Item :: user_info_item(), UserMid :: mid(), Conn :: conn_handle(), Result :: RequestsResult | RepliesResult | ItemResult, RequestsResult :: [{Conn, [TransId]}], ItemResult :: term(), RepliesResult :: [{Conn, [{TransId, ReplyState, Handler}]}], TransId :: transaction_id(), ReplyState :: prepare | eval_request | waiting_for_ack | aborted, Handler :: undefined | pid().
查找用户信息
查找有关当前活动请求的用户信息。预期输入类型为 Input :: Requests
,预期输出类型为 Result :: RequestsResult
。
查找有关当前活动回复的用户信息。预期输入类型为 Input :: Replies
,预期输出类型为 Result :: RepliesResult
。
-spec versions1() -> {ok, VersionInfo} | {error, Reason} when VersionInfo :: list(), Reason :: term().
等效于 versions2/0
。
-spec versions2() -> {ok, VersionInfo} | {error, Reason} when VersionInfo :: list(), Reason :: term().
用于检索一些系统和应用程序信息的实用函数。
这两个函数之间的区别在于它们如何获取要检查的模块。versions1
使用 app 文件,而 versions2
使用函数 application:get_key
。