[printing-japan] Re: [printing-japan] Bi-di 資料
yoshida
mikio-y @ zd6.so-net.ne.jp
2003年 12月 10日 (水) 07:53:33 PST
どうも、BBRの吉田です。
In message, "Masaki IWATA" <iwata @ axe-inc.co.jp>-san wrote on
Wed, 10 Dec 2003 22:53:45 +0900...
> アックスの岩田です。
>
> > > 仕様書のbidiStartReadの記述を参照ください。
> >
> > すみません。ちゃんと書いてありますね。
> > まだ頭の中の情報がバラバラで、整理が追いつかないです。
>
> で、仕様書の説明文についてですが、
>
> bidiStartRead()
>
> ・Bi-di Plug-in module は本関数が呼ばれたタイミングで、
> 呼び元に返すプリンタステータスデータを確定する。
>
> ・プリンタステータスデータが確定するまで本関数はブロッ
> クするが、シグナルの受信によって処理の途中で本関数か
> ら戻る場合には、戻り値としてBIDI_EINTR を返す。
>
> ・Bi-di Plug-in module がプリンタとのコネクションを確
> 立する処理によっては、本関数は長時間ブロックする可能
> 性がある。
> 呼び元が一定時間内の応答を規定したい場合は、本関数を
> 呼ぶ前にアラームを設定する等する。
>
> bidiRead()
>
> ・プリンタステータスデータのread が完了するまで本関数は
> ブロックするが、シグナルの受信によってプリンタステー
> タスデータのread の途中で本関数から戻る場合には、
> nBufBytes で指定した値よりも小さい値を返す場合がある。
>
> ・1 バイトもread せずにシグナルを受信した場合は、戻り値
> としてBIDI_EINTR を返す。
>
> ・Bi-di Plug-in module がプリンタとのコネクションを確立
> する処理によっては、本関数は長時間ブロックする可能性が
> ある。
> 呼び元が一定時間内の応答を規定したい場合は、本関数を呼
> ぶ前にアラームを設定する等する。
>
> と、なっていますよね。
>
> bidiStartRead() での「プリンタステータスデータを確定する」
> とは、実際に read() したデータのことではないのですか?
>
> プリンタからのデータを read() しているのは、どちらなので
> しょうか?
> 両方で read() しているのでしょうか?
> シグナルを捕捉した場合を想定しているのでしょうか?
質問の中の「どちら(両方)」は何を指すのでしょうか?
bidiStartRead と bidiRead ?
呼び出し元 と Plug-inモジュール ?
ともかくも、以下のメールが参考になると思います。
尚、シグナルについては特別の想定はしていないと思いますよ。
In message, Yasumasa TORATANI <toratani.yasumasa @ canon.co.jp>-san wrote on
Wed, 24 Sep 2003 23:21:58 +0900...
| 虎谷です。
<略>
| ということで、次のように Begin と End で read を挟む方式を提案します。
|
| while ( select( .....) ) { // プリンタのfdの準備確認
| // readが準備できていた場合
| bidiBeginRead( ){
| while( ) {
| bidiRead(..); // XMLデータを順次 read
| }
| bidiEndRead(..);
| }
|
| プロセスタイプ:
| プリンタステータスを勝手にプリンタから取得し続けて、それを
| XML変換してバッファに格納しておく。また、XMLデータが準備
| 出来たら、パイプにその旨を示すデータ(仮にA)を書きこむ。
| データAをパイプに書きこんだ後も、プロセス側はプリンタの
| ステータスを読みこんで、XMLデータを更新し続ける。
|
| bidiBeginRead が呼ばれたら、プロセス側はXMLデータの更新を
| サスペンドし、XMLデータのパイプへの書きこみ準備を行う。
| 呼び出し側は、データAを読み飛ばす。
|
| bidiReadが呼ばれたら、プロセス側はXMLデータを順次パイプに
| 書きこむ。呼び出し側は、パイプからデータを順次読み込む。
|
| bidiEndReadが呼ばれたら、プロセス側はXMLデータの更新を
| 再開する。
|
| 共有ライブラリタイプ:
| bidiBeginRead が呼ばれたら、plug-in はプリンタからステータスを
| 読みこんで、それをXML変換する。
|
| bidiReadが呼ばれたら、plug-inはXMLデータを呼び出し側に
| 順次返す。
|
| bidiEndReadでは特に何もしない。(read中フラグを落とすくらい?)
> # ブロックされる可能性があるのは、どちら(或いは両方)なの
> # かを知りたいだけなので、内部処理がどうなっているのかは
> # 呼び出し側にとってはあまり重要ではないのですが...
>
> --
> IWATA Masaki
> 岩田 正樹
----
吉田 幹 mikio-y @ zd6.so-net.ne.jp
(有)BBR
More information about the Printing-japan
mailing list