代理接口 Proxy Interfaces in JavaScript
Slice语言定义接口如下:
interface
Simple {
void
op();
};
Slice编译器会产生下边的客户端代码
var
SimplePrx =
function
() { ... }
SimplePrx.prototype.op =
function
(__ctx) { ... }
编译器会生成一个代理类型
SimplePrx。一般来说,他的命名规则是
<
interface-name
>Prx。
如果接口定义在模块M内,则名字需要带上模块名,M.
<
interface-name
>Prx。
SimplePrx中的函数和Slice中的接口名字一样,比如上面的op。
参数__
ctx是ICE运行时用来存储请求信息的,一般情况下,不用理他。
不要去创建
<
interface-name
>Prx的实例,ICE运行时负责创建代理实例。
请求代理 Down-casting Proxies in JavaScript
var
prx = ...;
// Get a proxy from somewhere...
SimplePrx.checkedCast(prx).then(
function
(proxy)
{
if
(proxy !==
null
)
// Object supports the Simple interface...
else
// Object is not of type Simple...
},
function
(ex)
{
// Handle failure
});
|
如果传入的参数prx是Simple类,或者Simple子类的代理,那么checkedCast返回SimplePrx对象的引用。
调用checkedCast的时候,客户端会去连服务器
,检查服务器是否提供了对应的对象。
可能产生异常
ConnectTimeoutException
or an
ObjectNotExistException
。
uncheckedCast正好相反,他不会连接服务器,直接返回请求的类型。所以使用unchekckedCast的时候,你一定要确定,服务器支持这种类型的代理。
代理方法 Using Proxy Methods in JavaScript
使用代理的方法,可以对代理进行自定义,比如下边代码,可以得到一个最大超时为10000毫秒的代理。
var
proxy = communicator.stringToProxy(...);
proxy = proxy.ice_timeout(10000);