[C1.3]オブジェクトソケットクラス

オブジェクトソケットはオブジェクトストリーム をソケットに継承したものです。プロセス間通信やネットワーク通信に用いられる 基本的な機能になります。

やり取りされるものはオブジェクトですが、ソケットという側面から、固有の 問題が出てきます。KONOEのプロセスはネットワーク上の任意のところにある わけですから、それらの指定が必要になります。

UNIXのTCPやUDPのソケットはクライアント・サーバのモデルに基づいて実装 されています。サーバは特定のポートを接続要求の受け取り口に設定して 要求を受け付けます。そういったポート番号の管理も必要です。

実際のオブジェクト転送の場合、相手先が受け取れる状態であるかどうかと いう問題があります。基本的に送信要求はその転送が完了してから呼出し先に 制御が戻ることになりますが、オンラインシステムではそこでハングアップ しないように、とりあえず送信要求を実行待ち行列(キュー)に登録して、制御は 呼び出し元に戻すけれども、転送そのものはその後に非同期で行なわれる ことが必要になることもあります。このようなキューやバッファの実装も 課題になります。

1.オブジェクトソケットクラスの実装

1.1.KonoeObjectSocketBaseクラス

オブジェクトソケットの開設と閉鎖などソケットに関する処理の部分を 扱うKonoeObjectSocketBaseクラスを用意します。

1.2.KonoeInputObjectSocketクラス

入力のためのオブジェクトソケットはKonoeObjectSocketBaseクラスと KonoeInputObjectStreamを継承します。

1.3.KonoeOutputObjectSocketクラス

出力のためのオブジェクトソケットはKonoeObjectSocketBaseクラスと KonoeOutputObjectStreamを継承します。

2.データ転送

効率的なデータ転送の実現はこのオブジェクトのメソッドの実装によって きまります。従来のDAQソフトウエアで、バッファの設計が非常に重要な 役割を果たしてきたことと同じです。ただ、プログラマーは実装の詳細を 気にせずにプログラムができるように単純にオブジェクトソケットに データを与えるというだけの記述をします。

同じ計算機の間のソケットでは、例えば共有メモリーを用いたデータの シェアが可能です。ネットワーク通信では実際にソケット通信をおこなう 必要があります。このへんを隠蔽したいわけです。

転送要求が完全に実行されるまではもとのデータは保持されなければ なりません。いつの段階で転送オブジェクトが破棄可能になるかを 的確に呼び手に伝える方法を考える必要があります。もしくは、メモリーは 転送終了と同時にdeleteされて、システムに返されるような実装も可能です。

直前の転送要求が完了するまでに、次の転送要求は受け付けられるように 作られなければなりません。実行待ち行列を内蔵することが要求されています。


[classes/objsocket.html] Last Modified : 01-Apr-1997.

KONOEコラボレーション konoe-req@konoe.kek.jp