Erlang 20参考手册
orber
拦截器 | interceptors
模块
拦截器
模块摘要
描述必须由任何提供的Orber本机拦截器导出的函数。
描述
此模块包含用户提供的本机拦截器的必需功能及其预期行为。另请参阅用户指南。
警告
如果提供的拦截器调用昂贵的操作,使用拦截器可能会显着减少吞吐量。 因此,应该总是提供尽可能少的开销的拦截器。
警告
可以分别更改in_reply和out_reply,in_reply_encoded,in_request_encoded,out_reply_encoded和out_request_encoded,in_request和out_request的Data,Bin和Args参数。 但是,如果做得不对,后果可能是严重的。
注
Extra
Orber在调用第一个拦截器时将该参数设置为'undefined',并且可以设置为任何Erlang术语。如果一个拦截器改变了这个参数,它将被传递给未解释的下一个拦截器。
注
Ref
在调用new_in_connection
或new_out_connection
使用第一个拦截器时,Orber 将该参数设置为“未定义” 。用户提供的拦截器可以设置NewRef
为任何Erlang术语。如果一个拦截器改变了这个参数,它将被传递给未解释的下一个拦截器。
输出
new_in_connection(Ref, PeerHost, PeerPort) -> NewRefnew_in_connection(Ref, PeerHost, PeerPort, SocketHost, SocketPort) -> NewRef
类型
当客户端ORB请求新连接时,调用此操作。 如果提供了多个拦截器,例如{native,['myInterceptor1','myInterceptor2']},则将'myInterceptor1'的返回值作为Ref传递给'myInterceptor2'。 最初,Orber在调用第一个拦截器时使用原子'undefined'作为Ref参数。 在上面的例子'myInterceptor2'中,来自最后一个拦截器的返回值被传递给拦截器导出的所有其他函数。 因此,Ref参数可以用作存储此连接的信息/限制的mnesia或ets的唯一标识符。
PeerHost和PeerPort变量提供请求新连接的客户端ORB的数据。SocketHost和SocketPort是客户端连接到的本地接口和端口。
如果出于某种原因,我们不允许客户端ORB连接简单调用exit(Reason)
。
new_out_connection(Ref, PeerHost, PeerPort) -> NewRefnew_out_connection(Ref, PeerHost, PeerPort, SocketHost, SocketPort) -> NewRef
类型
当建立新的连接时,调用该函数。行为就像new_in_connection
; 唯一的区别是PeerHost和PeerPort变量标识了目标ORB的引导数据,而SocketHost和SocketPort是本地接口并通过端口连接到客户端ORB。
closed_in_connection(Ref) -> NewRef
类型
当现有连接终止时,调用该操作。此功能的主要目的是使用户能够清除与关联连接关联的所有数据。
输入参数Ref
是来自new_in_connection/3
的返回值。
closed_out_connection(Ref) -> NewRef
类型
当现有连接终止时,调用该操作。此功能的主要目的是使用户能够清除与关联连接关联的所有数据。
输入参数Ref
的返回值。new_out_connection/3
...
in_reply(Ref, Obj, Ctx, Op, Data, Extra) -> Reply
类型
当从服务器端ORB向客户端ORB提供答复时,调用该操作。该Data
参数是一个列表,其中第一个元素是来自目标对象的返回值值,其余的是全部参数,out
或者定义为inout
IDL规范中的或全部参数。
in_reply_encoded(Ref, Obj, Ctx, Op, Bin, Extra) -> Reply
类型
当从服务器端ORB向客户端ORB提供答复时,调用该操作。该Bin
参数是应答主体仍未解码。
in_request(Ref, Obj, Ctx, Op, Args, Extra) -> Reply
类型
当新请求到达服务器端ORB时,调用此操作。
in_request_encoded(Ref, Obj, Ctx, Op, Bin, Extra) -> Reply
类型
当新请求到达服务器端ORB时,在解码请求主体之前调用此操作。
out_reply(Ref, Obj, Ctx, Op, Data, Extra) -> Reply
类型
在调用目标对象之后,调用此操作并返回结果。该Data
参数是一个列表,其中第一个元素是来自目标对象的返回值值,其余的是全部参数,out
或者定义为inout
IDL规范中的或全部参数。
out_reply_encoded(Ref, Obj, Ctx, Op, Bin, Extra) -> Reply
类型
这个操作类似于out_reply
; 唯一的区别是回复主体已被编码。
out_request(Ref, Obj, Ctx, Op, Args, Extra) -> Reply
类型
在向服务器端ORB发送请求之前,out_request
被调用。
out_request_encoded(Ref, Obj, Ctx, Op, Bin, Extra) -> Reply
类型
此操作类似于out_request
唯一的区别是请求体已被编码。
orber相关

Erlang 是一种通用的面向并发的编程语言,可应付大规模开发活动的程序设计语言和运行环境。
主页 | https://www.erlang.org/ |
源码 | https://github.com/erlang/otp |
版本 | 20 |
发布版本 | 20.1 |