http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Opening_a_Connection
を読む。
Opening a Connection
前の章で使用したUnoUrlResolver()の下の層は完全な柔軟性を提供する。
UNOにおけるプロセス間通信の接続の確立は、com.sun.star.connection.XConnectionの上に
成り立つ。
XConnectionは双方向通信をカプセル化する。
で、ここには異なるプロセス間通信の仕組みがあるらしい。
仕組みのほとんどは、
ひとつのプロセスがListenし、別のプロセスがそこにアクセスするまで待つ、
といった似たパターンに従う。
で、このパターンは、
com.sun.star.connection.Accept
com.sun.star.connection.Connector
のサービスに抽象化されている。
それぞれ、 com.sun.star.connection.XAcceptor、com.sun.star.connection.XConnector
というインタフェースとしてexportされている?
で、そのインタフェース定義。
interface XAcceptor: com::sun::star::uno::XInterface
{
XConnection accept( [in] string sConnectionDescription )
raises( AlreadyAcceptingException,
ConnectionSetupException,
com::sun::star::lang::IllegalArgumentException);
void stopAccepting();
};
interface XConnector: com::sun::star::uno::XInterface
{
XConnection connect( [in] string sConnectionDescription )
raises( NoConnectException,ConnectionSetupException );
};
acceptメソッドとconnectメソッドはパラメータに接続文字列を受け取る。
ここで指定する接続文字列は、UNO-URL中の接続文字列部分。
先の"uno:socket,host=localhost,port=2002;urp,Negotiate=0,ForceSynchronous=0;StarOffice.ServiceManager"のうちのunoから;urpまでの文字列。つまり
"uno:socket,host=localhost,port=2002;urp,Negotiate=0,ForceSynchronous=0"
まで。
で、コネクションタイプ部分でDefaultで指定できるものは以下のとおり。
- socket
- pipe
socketコネクションタイプ
ソケット接続。
指定できるパラメータは以下のとおり。
パラメータ名 | 意味 |
host | Listenまたは接続先のホスト名もしくはIP |
port | TCP/IPにおけるポート番号 |
tcpNoDelay | ソケットオプションのno delay。UNOでは1に設定されるべき。 |
pipeコネクションタイプ
名前付きパイプによる接続。
指定できるパラメータは以下のとおり。
パラメータ名 | 意味 |
name | 名前付きパイプの名前 |
ConnectorとAcceptorを自分で実装すればコネクションタイプを追加することができる。
どうも、
com.sun.star.connection.Connector.AAA
などというコネクターを定義し、実装すると、
UNO-URLは、"uno:AAA;urp"なんてな風に書けるらしい。
.
0 コメント:
コメントを投稿