public interface MultiDoc
MultiDoc インタフェースは、doc の「リンクリスト」に類似した抽出を提供します。multidoc オブジェクトは、リンクリスト内のノードに似ており、リスト内の現行 doc およびリスト内の次のノード (multidoc) へのポインタを含みます。Print Job は multidoc の
メソッドを呼び出して、現行の doc を取得できます。次の doc に進む準備ができたら、Print Job は multidoc の getDoc()
メソッドを呼び出して、次の multidoc (次の doc を含む) を取得します。このため、multidoc へのアクセスを実行する Print Job コードは、次のようになります。
next()
void processMultiDoc(MultiDoc theMultiDoc) { MultiDoc current = theMultiDoc; while (current != null) { processDoc (current.getDoc()); current = current.next(); } }
MultiDoc インタフェースは、規約に従って実装できます。実装内でリンクリストを使用しなくてもかまいません。
multidoc 印刷ジョブの印刷データすべてを取得する場合、Print Service プロキシは次の 2 つのパターンのどれかを使用できます。
この問題に対処し、Print Job に複数の doc を提供するクライアントの設計を簡略化するため、multidoc 印刷ジョブをサポートする各 Print Service プロキシは、インターリーブ化パターンを使用して MultiDoc オブジェクトにアクセスする必要があります。つまり、MultiDoc オブジェクトが指定されると、印刷サービスプロキシは、現行の Doc オブジェクトの取得に成功するまで、
を 1 回または複数回呼び出します。印刷サービスプロキシは、次に現行 doc の印刷データを取得しますが、すべての印刷データを取得するか、回復不可能なエラーが発生するまで次の作業に進みません。作業を続行可能な場合、印刷サービスプロキシは、次の MultiDoc オブジェクトまたは次が存在しないとの指示を取得するまで、getDoc()
を 1 回または複数回呼び出します。MultiDoc インタフェースの実装は、印刷サービスプロキシがこのインターリーブ化パターンに従うものと見なすことができます。 その他のパターンの場合、MultiDoc 実装の動作は指定されません。
next()
1 つの multidoc に同時にアクセス可能なクライアントスレッドの数に制限はありません。このため、MultiDoc インタフェースの実装はすべて、複数のスレッドに対して安全に設計する必要があります。実際、Print Job スレッドが (概念上の) リストの先頭から doc を取得中に、クライアントスレッドがリストの最後に doc を追加することがあり得ます。 multidoc オブジェクトが複数のスレッドを適正に同期させることができるなら、2 つのスレッドが相互に干渉することはありません。
Doc getDoc() throws IOException
IOException
- ドキュメントの読み込み中にエラーが発生した場合にスローされる。MultiDoc next() throws IOException
IOException
- 次のドキュメントの検出中にエラーが発生した場合にスローされる。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.