public interface CurrentOperations
Portable Interceptor Current(也称为 PICurrent
)就是一个槽表 (slot table),每个服务都使用该表中的槽在其上下文与请求或应答服务上下文之间传输其上下文数据。每个需要使用 PICurrent 的服务都在初始化期间预定了一个或多个槽,然后在处理请求和应答期间使用这些槽。
在进行调用之前,通过调用 ORB.resolve_initial_references( "PICurrent" )
获取 PICurrent。通过对 RequestInfo
对象进行 get_slot
操作,可从截取点内获取从线程域传送到请求域的 PICurrent 数据。PICurrent 也可以通过 resolve_initial_references
获取,但这样获取的是 Interceptor 的线程域 PICurrent。
方法摘要 | |
---|---|
Any |
get_slot(int id) 检索应用程序通过 get_slot 在 PICurrent 中设置的槽数据。 |
void |
set_slot(int id, Any data) 在槽中设置数据。 |
方法详细信息 |
---|
Any get_slot(int id) throws InvalidSlot
get_slot
在 PICurrent 中设置的槽数据。该数据以 Any 的形式存在。
如果尚未设置给定槽,则返回包含带有 TCKind
值为 tk_null
的类型代码的 Any,并且该 Any 中不包含任何值。
id
- 将返回数据的槽的
SlotId
。
InvalidSlot
- 如果对尚未分配的槽调用 get_slot,则抛出此异常。
BAD_INV_ORDER
- 如果在 ORB 初始化程序内调用
get_slot
,则抛出此异常。
void set_slot(int id, Any data) throws InvalidSlot
id
- 将设置数据的槽的
SlotId
。
data
- 将对所标识的槽设置的数据,以 Any 的形式存在。
InvalidSlot
- 如果对尚未分配的槽调用
set_slot
,则抛出此异常。
BAD_INV_ORDER
- 如果在 ORB 初始化程序内调用
set_slot
,则抛出此异常。