[printing-japan] Bi-di 資料

yoshida mikio-y @ zd6.so-net.ne.jp
2003年 12月 9日 (火) 23:04:06 PST


BBRの吉田です。
この辺の議論は9月下旬に議論されてました。

内容が複数メールにわたるので、ずばりココという箇所を引用できないので
すが、まずは以下の2つのメールをご参照ください。

In message, Yasumasa TORATANI <toratani.yasumasa @ canon.co.jp>-san 
wrote on Fri, 26 Sep 2003 08:46:00 +0900...

| 虎谷です。
<略>
| > 私自身は、キューイングされているXMLデータについては、backend側が責任
| > を持って、最新になるまで読み込み続けるべきだと思うのですが。
| > それと、この仕様だとプロセスタイプの側で、内部的に古いステータスを捨
| > ててしまうことになると思うのですが(勘違いしてましたらすいません)
| > そのような判断を(backendに断りなっく)plug-in側で勝手にやってよいも
| > のかというのも疑問点です。
| 
| プリンタからのデータの取得方法は、おおまかに分けると
| ポーリングとイベントに分けられます。
| ポーリングは、インクレベルの取得やプリンタの状態(エラーも含む)
| のように、間欠的に取得しても問題にない情報の取得に用いられます。
| 
| イベントは、特定のジョブが終了した、のような失われてはいけない
| 情報に用いられます。
| 
| 現状のCUPS(IPP1.1)は、ポーリングにしか対応していません。
| で、イベントは通常別系統で実装されます。
| 
| #アプリケーションにイベントで伝える、ということもやる必要が
| #あるので、実装はかなり異なってきます
| 
| と言うわけで、現状の bi-di plug-in は、ポーリングにフォーカス
| しても良いのではないかと思います。

In message, Yasumasa TORATANI <toratani.yasumasa @ canon.co.jp>-san wrote on 
Mon, 29 Sep 2003 22:14:22 +0900...

| 虎谷です。
<略>
| 取得間隔は、PPDファイルによって、プリンタ毎、またはデバイスの種類毎に
| 定義しておきます。(この辺りは、前回のNSビルでのミーティングでちらっと
| お話ししました。) backend は、印刷データの書き込みが行われている場合は、
| たとえステータス用の fd が read可になっても、上記時間が経過しないうちは
| read しないようにします。backend の実装として、時間間隔=未定義の場合は
| fd が read可になったら即 read というのもありだと思います。
| 
| #プリンタのステータスが常に read 可のようなケースで共有ライブラリタイプを
| #用いる場合に、ある程度間隔をあけてステータスを read して、印刷データの
| #出力性能を下げないようにするために、このようにします。
| #(弊社のインクジェットプリンタの場合です)
| 
| 印刷データの書き込み時とそうでない時に、read 間隔を変えたい場合は、
| プロセスタイプの bi-di plug-in にして、bi-di plug-inの内部でread間隔を
| 制御し、上記時間間隔=未定義とすれば可能です。


In message, Masaki IWATA <iwata @ axe-inc.co.jp>-san wrote on 
Wed, 10 Dec 2003 14:19:53 +0900...

> アックスの岩田です。
> 
> プリンタへのデータ入出力の排他制御に関連しての質問なの
> ですが...
> 
> Backend や printer daemon が印刷データを出力する際に、
> プリンタのステータスをチェックすることになりますよね?
> 
> このステータスチェックのタイミングは、どのように想定
> されているのでしょうか?
> 
> (必要であれば、出力開始前にチェックした後)データ出力
> 完了後、或いは、(データ出力がタイムアウトするなどの)
> 異常発生時にチェックするのみで可とするのでしょうか?
> 
> それとも、一定の間隔(出力データを適当なサイズに分割
> 或いは時分割)で、チェックをするのでしょうか?

上記メールの内容に即しますと、一定間隔でポーリングするイメージになり
ます。

> もし、一定の間隔でチェックするということであれば、
> 印刷データ出力中の*任意*のタイミングで、ステータスを
> 取得する処理が割り込んでも、問題が無いのでしょうか?
> # これは、printer daemon が、印刷処理中にプリンタス
> # テータスユーティリティからのステータス要求を受けた
> # 場合にも当てはまります。

任意のタイミングでbackendないしprinter daemonからプリンタステータス
を取得できるかといいますと、
・Bi-di Plug-inモジュールが共有ライブラリタイプの場合は
 read fdが常に読み出し可能になってますので、selectからすぐに抜けて、
 bidiStartRead-->bidiRead-->bidiEndRead を行えばよい、
・プロセスタイプの場合は、
 Plug-inモジュールがデータをリフレッシュしたタイミングで、read fdが
 データ準備状態になりますので、selectから抜けるのを待つか、直前のス
 テータスデータを使うことになります。

ということですが、仕様としては後者のプロセスモデルに合わせておくのが
無難と思います。基本はポーリングモデルでステータス取得しておき、割り
込まれたら、直前または次のポーリングデータ(待てる時間による)をプリ
ンタステータスとして返すという仕様です。

> # 開始前や処理中に紙なし等が検出された場合には、その
> # 後の制御方法は、実装依存でしょうか?

オペレータが介在する話なので、なんとも…

> -- 
> IWATA Masaki
>  岩田 正樹

----
吉田 幹  mikio-y @ zd6.so-net.ne.jp
(有)BBR





More information about the Printing-japan mailing list