Palm Programmer's Laboratory

トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Palm OS Programmer's Companion Volume II/2-3

← 2 節に戻る ↑2 章トップへ 4 節に進む →


2-3 Exchange ライブラリの実装

 

要求される関数

Exchange ライブラリは、特定の転送の実装を扱う関数とExchange ライブラリ? API に要求される関数を含んでいます。転送固有のタスクもしくは Exchange ライブラリ API 固有でないタスクを扱うために要求される関数は、この文書の対象外です。しかし一般的に Exchange ライブラリに要求される他の関数は、デバイスのポーリング、割り込みの処理、ユーザ入力のチェック、といったタスクを含みます。
アプリケーションによっては、Exchange ライブラリの要求が送信のみだったり受信のみだったり両方だったりするかもしれません。少なくとも、オブジェクトの送信時は、各 Exchange ライブラリ関数の説明は「Palm OS Programmer's API Reference」の「第 63 章 Exchange Library」を参照して下さい。

ExgLibAccept の実装

2つのシチュエーションで、アプリケーションが Exchange マネージャの ExgAccept 関数をコールします。

  • sysAppLaunchCmdExgReceiveData への応答として、アプリケーションがデータ受信のために接続を初期化する場合。
  • sysAppLaunchCmdExgAskUser への応答として、アプリケーションがデータプレビュー受信のために接続を初期化する場合。

Exchange マネージャは順番に ExgLibAcceptをコールします。
データプレビュー時は、受けるデータをバッファしなければいけません。あなたの ExgLibAccept 関数は、非破壊的な読み取りの準備として、プレビューフラグを観察してバッファを巻き戻すべきです。プレビューフラグ無しでそれが再びコールされるとき、再び巻き戻り、このとき破壊的な読み取りが準備されます。
アプリケーションがデータが受け入れたり受信したりすることを示すために、ExgLibAcceptはあらゆる進行ダイアログを更新しなければいけません。

接続エラーの処理

ExgLibPutコール。ExgLibPutの初期化コールで通信が確立する代わりに、多くの Exchange ライブラリが ExgLibConnectをサポートしていません。もしあなたの Exchange ライブラリが ExgLibConnect をサポートする必要がないなら、この関数の実装は単に errNone を返すだけです。
もしあなたの Exchange ライブラリが ExgLibConnect とをサポートせず、ExgLibPutの初期化コールの間にエラーが起きるなら、ExgLibPut の実装は直後にクリーンアップをするべきです。ExgLibDisconnect のコール時にはカウントしません。もし ExgLibPut の初期化コールが成功しても、後続エラーのクリーンアップはExgLibDisconnectで実行されます。
もしあなたの Exchange ライブラリが ExgLibConnect をサポートし、そのコール中にエラーが発生するなら、ExgLibConnect はその直後にクリーンアップを行なうべきです。しかし、ExgLibConnectのコールが成功したあとのエラーのクリーンアップは、ExgLibDisconnect にデリゲートされることができます。
最後に、もしあなたの Exchange ライブラリが ExgLibConnect をサポートするがアプリケーションが ExgLibPut よりも優先してそれをコールしないなら、あなたのライブラリがあたかも ExgLibConnect を実装していないかのような状態になります。つまり、 直後にクリーンアップを行なうようにあなたが実装したExgLibPutの初期化コール中にエラーが発生したなら、もしExgLibPutの初期化コールが成功してもExgLibDisconnectにおける後続エラーの後にクリーンアップを行なうことができます。
もしあなたの Exchange ライブラリが双方向通信をサポートするなら、あなたは ExgLibConnect をサポートすべきであることに注意して下さい。

データのバッファリング

データは Exchange ライブラリによって送信され、ExgLibDisconnect コールの使用により Exchange ライブラリがデータを受信します。バッファリングにはいくつかの利点があります。例えば、通信スタックが送信または受信アプリケーションとサイクルを共有する必要がありません。また、通信ハードウェアをオンにしておく時間をできる限り短くすることでバッテリを長くもたせることができます。一つの障害は、バッファリングが余計なストレージを要求することで、これはやりとりするデータ量が大きいと問題になるかもしれません。

Exchange マネージャによる登録

Exchange ライブラリは、アプリケーションと同様に、受信するオブジェクトの形式をExchange マネージャにより登録する必要があります。Exchange ライブラリは典型的に2つのURLスキームを登録します。一つは Exchange ライブラリを一意に指定するために使用され、もう一つはそれをどのように使用されるかのために使用されます。
例えば赤外線ライブラリは、特定のプロトコルを指定するために「_irobex」を登録し、Beam コマンドからのアクセスを可能にするために「_beam」を登録します。ホスト転送サンプル Exchange ライブラリは「_host」と「_send」を登録します。後者は Send コマンドからのアクセスを可能にします。ほとんどの Exchange ライブラリはおそらく「_send」スキームを登録しようとするでしょう。これらの URL スキームは、「http」と「mailto」などの標準URLスキームとの競合を避けるため、下線( _ )で始まります。サポートされるURLスキームについては、第 1 章「オブジェクト交換」を参照して下さい。


← 2 節に戻る ↑2 章トップへ 4 節に進む →