コールバックとは?
DNS サーバーへの問い合わせは携帯電話側では DNS サーバーからの返答待ちの状態がしばらく続く処理です。
このような場合、BREW ではその処理が終了したときに自動的に呼び出される関数を登録します。
コールバック関数登録後、アプリは速やかに現在のイベント処理を完了して BREW に制御を戻し、次のイベントを待ちます。
この仕組みが、いわゆる「コールバック」です。
登録された関数はコールバック関数と呼ばれます。コールバック関数には返答が返ってきた後にする処理を記述します。
コールバック関数を登録する関数は目的によって異なります。
[ ソケット通信関連の例 ]
関数名 | 内容 |
---|---|
INETMGR_GetHostByName | DNS サーバーへの問い合わせ |
ISOCKET_Connect | ホスト接続 |
ISOCKET_Writeable | データ送信 |
ISOCKET_Readable | データ受信 |
ISOCKET_Cancel 関数を呼ぶと、ソケット通信関連のコールバックはキャンセルされます。
※ 1. BREW はイベント駆動型アーキテクチャで、しかもシングルスレッド環境のシステムです。
イベント駆動型モデルでは、イベントが発生するとシステムからアプリにイベントが渡され、アプリ側でのイベント処理が終了するとシステムに制御が戻ります。
シングルスレッド環境では、アプリ側のイベント処理で待ちなどが発生して時間が掛かる場合は処理を打ち切って次の処理を実行し、速やかにシステムに制御を戻す方が効率的です。
コールバックはこのために考えられた、シングルスレッド環境のシステムに共通する BREW のメカニズムです。
※ 2. アプリ側のイベント処理が長時間に及ぶと、BREW によってアプリは強制終了させられます。
強制終了までの時間は携帯電話によって異なりますが、だいたい 1 秒程度です。
BREW では、アプリの個々のイベント処理は少なくとも 1 秒以内に終了するようにプログラム設計しなければなりません。