创建桥
From Apache OpenOffice Wiki
< Zh | Documentation
XConnection 实例现在可以用来在连接上建立 UNO 进程间桥,而不管连接是使用 Connector 还是使用 Acceptor 服务(或别的方法)建立的。为此,必须实例化服务 com.sun.star.bridge.BridgeFactory。它支持 com.sun.star.bridge.XBridgeFactory 接口。
interface XBridgeFactory: com::sun::star::uno::XInterface
{
XBridge createBridge(
[in] string sName,
[in] string sProtocol ,
[in] com::sun::star::connection::XConnection aConnection ,
[in] XInstanceProvider anInstanceProvider )
raises ( BridgeExistsException , com::sun::star::lang::IllegalArgumentException );
XBridge getBridge( [in] string sName );
sequence < XBridge > getExistingBridges( );
};
BridgeFactory 服务管理所有 UNO 进程间连接createBridge() 方法创建一个新桥:
- 可以使用 sName 参数给桥指定一个明确的名称。然后可以使用此名称通过
getBridge()方法来获取桥。这使两个独立的代码段可以共享同一进程间桥。如果您使用已经存在的进程间桥名称来调用 createBridge(),就会抛出createBridge()。如果传送的是一个空字符串,通常将建立一个新的匿名桥,通过getBridge()不会获取到此桥,而且不会抛出BridgeExistsException。
- 第二个参数指定连接使用的协议。目前,仅支持 'urp' 协议。在 UNO URL 中,此字符串由两个 ';' 分隔。urp 字符串后面可以跟一个逗号分隔的名称值对列表,这些名称值对说明桥协议的属性。udk.openoffice.org 上提供了 urp 规范。
- 第三个参数是
XConnection接口,因为它是通过 Connector/Acceptor 服务获取的。
- 第四个参数是一个 UNO 对象,该对象支持 com.sun.star.bridge.XInstanceProvider 接口。如果不想将一个本地对象导出到远程进程,此参数可以是一个空引用。
interface XInstanceProvider: com::sun::star::uno::XInterface
{
com::sun::star::uno::XInterface getInstance( [in] string sInstanceName )
raises ( com::sun::star::container::NoSuchElementException );
};
BridgeFactory 返回一个 com.sun.star.bridge.XBridge 接口。
interface XBridge: com::sun::star::uno::XInterface
{
XInterface getInstance( [in] string sInstanceName );
string getName();
string getDescription();
};
XBridge.getInstance() 方法通过远程桥获取一个初始对象。本地 XBridge.getInstance() 调用作为 XInstanceProvider.getInstance() 调用到达远程进程。返回的对象可由字符串 sInstanceName 控制。它完全取决于 XInstanceProvider 的实现,即 XInstanceProvider 返回的对象。
可以从 XBridge 接口中查询 com.sun.star.lang.XComponent 接口,该接口将一个 com.sun.star.lang.XEventListener 添加到桥。当底层连接关闭时,就会终止此侦听器(请参阅前面的内容)。您也可以明确地调用 XComponent 接口中的 dispose(),来关闭底层连接并启动桥关闭过程。
| Content on this page is licensed under the Public Documentation License (PDL). |