[printing-japan] Bi-di 資料

貫定 秀典 hi_kanjo @ ybb.ne.jp
2003年 12月 4日 (木) 23:17:47 PST


BBRの貫定です。

難しい具体的なことは良くわからなくて恐縮なのですが、
モデルの前提について認識を揃えたいと思いメールします。
岩田さんの問題にされていることとズレて抽象的な話になりますが
ご容赦下さい。


あくまで私の理解ですがBi-di plug-inの考え方として
「プリンタとの双方向のやりとりにプリンタの依存性を
  吸収する部品があればいいな」
というモノを感じました。
その意味だとすると、Bi-di plug-inの役割としては、ざっと
以下のようなものになるかと思います。
1)プリンタのステータスをプリンタの固有性を隠蔽して読み出す
   具体的には、プリンタ固有の読出方式の制御をしつつ
   固有のデータ形式から一般的、汎用的な形式にデータを変換する。
2)アプリケーション印刷命令をプリンタの固有のコマンドに変換する(したい)
   これはCUPS/GSの絡みでBi-di plug-inの役割ではなくVDDの役割に
   なっていると理解しています。
3)プリンタのリードとライトのタイミングを制御する。

で今回のCanonさんの場合は、共有ライブラリタイプで、1)の役割のみを
Bi-di plug-inが行い、背景の機構が1Job1プロセス(常駐型でない)という
ことから呼び出し側(backend)は、以下のようなAPIシーケンスになるかと思います。

bidiNew()
  bidiStartJob()

    bidiStartRead() :select()を絡めてライトとタイミングを制御して繰り返し
      bidiRead()    :データがなくなるまで繰り返し読出し
      bidiRead()
          ・
          ・
          ・
    bidiEndRead()

    bidiStartRead() :select()を絡めてライトとタイミングを制御して繰り返し
      bidiRead()    :データがなくなるまで繰り返し読出し
          ・
          ・
          ・
    bidiEndRead()

      ・
      ・
      ・

  bidiEndJob()
bidiDestroy()


常駐型の場合、さらにbidiStartJob()/bidiEndJob()のブロックが
(bidiNew()で作ったコンテキストを再利用しながら)
繰り返すかと思います。

で、プロセスタイプの場合は、selectのためにプリンタのFDではなく
Bi-di plug-inプロセスとのパイプを利用しなければいけないので、
bidiGetReadFD()を設けてあると思っています。

backend(またはprinter daemon)は、ライブラリタイプ/プロセスタイプを
意識せずBi-di plug-inを呼び出して、盲目的にbidiGetReadFD()で取得した
fdをselect()に利用することになるのではないかと思います。
(Bi-di plug-inとしては、
  ライブラリタイプは結果的に、bidiNew()で与えられたfdと同じものを返しますし、
  プロセスタイプは、作ったパイプのfdを返します。)



> アックスの岩田です。
> 
> 補足です。
> 
> > +--------------+
> > |   backend    |               +-------+         +--------+
> > |    又は      |---(fdWrite)-->| Bi-di |<--(*)-->|プリンタ|
> > |printer daemon|<--(fdRead)----|Plug-in|    ?    +--------+
> > +--------------+               +-------+
> > 
> > という構図を想像していたのですが、違っていますか?
> 
> +--------------+                                 +--------+
> |   backend    |--------------+------(fdWrite)-->|プリンタ|
> |    又は      |<-------------|-+-----(fdRead)---|        |
> |printer daemon|              | |                +--------+
> +--------------+              | |
>       ^ |                     | v
>       | |   bidiWrite()    +-------+
>       | +----------------->| Bi-di |
>       +--------------------|Plug-in|
>             bidiRead()     +-------+
> 
> こういうことですか?
> 
> >>共有ライブラリ型の場合、bidiWriteがサポートされない Bi-di Plug-in
> >>moduleは有りだと思います。(弊社のBi-di Plug-in)
> 
> bidiWrite() が OPTIONAL であるということから始まった疑問で
> あることを忘れておりました。(本末転倒ですね...)
> 
> > すみませんが、先頭の構図の件が(私の中で)解決してから、改めて
> > 考えてみます。
> 
> -- 
> IWATA Masaki
>  岩田 正樹
> 
> 
> _______________________________________________
> printing-japan mailing list
> printing-japan @ freestandards.org
> http://freestandards.org/mailman/listinfo/printing-japan


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/  貫定 秀典(kanjo hidenori)                 _/
_/    有限会社ビービーアール                  _/
_/     530-0002 大阪市北区曽根崎新地2-1-4-206 _/
_/     TEL&FAX: 06-6344-1250                  _/
_/     PHS    : 070-5653-9089                 _/
_/     E-Mail : hi_kanjo @ ybb.ne.jp            _/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/





More information about the Printing-japan mailing list