(57)【特許請求の範囲】
【請求項１】
ネットワークにおいてあるプリンタ・タイプのプリンタを発見する方法において、
上記ネットワークは上記プリンタと通信し、ポーリング・モードのときに、上記受信された出力データを上記プリンタに送信し、リスン・モードのときに、上記プリンタからの入力データを待って受信し、
上記方法が、一旦プリンタが発見されたならば、上記プリンタに関するプリンタ情報を記憶するプリンタ情報オブジェクトを設定するステップを有し、
上記ネットワークは、上記プリンタ情報を維持及び更新し、
上記方法が、周期的なタイミング信号（ＴＩＣＫ）を供給するタイマーを設定するステップを有し、
上記方法が、Ｎ個のタイミング信号（ＴＩＣＫ）ごとに１度、上記プリンタのために周期的にポーリングするステップを有し、
上記ポーリングするステップのそれぞれが、上記ポーリング・モードに移行し、ポーリング・データを上記プリンタに送信するステップと、上記リスン・モードに移行し、上記プリンタからプリンタ・データを受信したかどうかを判断するために待つステップとを有し、
上記方法が、もし上記プリンタからプリンタ・データを受信したならば、上記プリンタ情報オブジェクトが上記プリンタのためのプリンタ情報を記憶しているかどうかに基づいて、上記プリンタが以前に発見されたものであるかどうかを、上記プリンタ情報オブジェクトから判断するステップを有し、
上記方法が、もし上記プリンタが以前に発見されたプリンタでなかったならば、上記プリンタのためのプリンタ情報を生成し、上記プリンタ情報オブジェクトに上記生成されたプリンタ情報を記憶させるステップを有することを特徴とするネットワークにおいてプリンタを発見する方法。
【請求項２】
上記プリンタ情報を生成するステップが、上記プリンタのプリンタ・モデル・オブジェクトを生成するステップと、上記プリンタのプリンタ情報を生成するステップと、上記プリンタ・モデル・オブジェクトに上記生成されたプリンタ情報を記憶させるステップとを含むことを特徴とする請求項１に記載の方法。
【請求項３】
上記プリンタ・モデル・オブジェクトにおける上記プリンタ情報が、エージング・カウンタを含み、
上記ポーリングするステップが、さらにもし上記プリンタからプリンタ・データを受信しなかったならば、上記エージング・カウンタを一定量増加させるステップと、
もし上記プリンタからプリンタ・データを受信したならば、上記エージング・カウンタをゼロにするステップとを有し、
上記方法が、さらに、上記エージング・カウンタが所定のレベルに到達したかどうかを判断するステップと、
もし上記エージング・カウンタが上記所定のレベルに到達したならば、上記プリンタの上記プリンタ・モデル・オブジェクトを破壊するステップとを有することを特徴とする請求項２に記載の方法。
【請求項４】
上記プリンタ・モデル・オブジェクトにおける上記プリンタ情報が、エージング・カウンタを含み、
上記ポーリングするステップが、さらに、もし上記プリンタからプリンタ・データを受信しなかったならば、上記エージング・カウンタを一定量増加させるステップと、
もし上記プリンタからプリンタ・データを受信したならば、上記エージング・カウンタをゼロにするステップと、
上記エージング・カウンタが所定のレベルに到達したかどうかを判断するステップと、
もし上記エージング・カウンタが上記所定のレベルに到達したならば、上記プリンタの上記プリンタ・モデル・オブジェクトを破壊するステップとを有することを特徴とする請求項２に記載の方法。
【請求項５】
上記プリンタ情報オブジェクトにおける上記プリンタ情報が、上記プリンタの記憶された状態に関する記憶されたプリンタ状態情報を含み、上記プリンタからのプリンタ・データが、上記プリンタの現在の状態に関する現在のプリンタ状態情報を含み、
もし上記プリンタが以前に発見されていたならば、上記方法が、さらに、
上記プリンタの現在の状態が上記プリンタの記憶された状態と異なるかどうかを判断するために、記憶されたプリンタ状態情報を現在のプリンタ状態情報と比較するステップと、
もし現在の状態が記憶された状態と異なるならば、上記プリンタ情報オブジェクトにおいて記憶されたプリンタ状態情報を現在のプリンタ状態情報と置き換えるステップとを有することを特徴とする請求項１に記載の方法。
【請求項６】
アプリケーションが、上記プリンタのための上記プリンタ・モデル・オブジェクトを観測しており、
上記方法がさらに、もし現在の状態が記憶された状態と異なるならば、上記現在の状態を変更したことを上記アプリケーションに知らせるステップを有することを特徴とする請求項５に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ・ネットワーク環境におけるプリンタ管理設定及び制御に関する。特に、本発明は、ネットワークにおいてプリンタ・デバイスの位置を付き止め又は「発見し」、この発見されたプリンタ・デバイスの状態を測定及び追跡し、この発見されたプリンタ・デバイスが動作を終えたとき又はネットワーク上でもはやサービスを提供しなくなるときを決定することに関する。
【０００２】
【従来の技術】
プリンタ・デバイス又はプリンタがコンピュータ・ネットワーク環境において発見されるためには、プリンタは、その存在をアドバタイジングし又はブロードキャストしなければならない。一般には、サービス・アドバタイジング・プロトコル（ＳＡＰ）がそのようなブロードキャストに用いられ、ネットワーク上で動作しているネットワーク・サーバーがＳＡＰブロードキャストを集め、ＳＡＰをネットワーク・データベース内に取り込んでいる。ネットワーク・アプリケーションは、そのようなプリンタの存在を検索することが必要なときに、ネットワーク・データベースを読むことができる。ネットワーク・データベースは、直接にプリンタと通信するために使用されるネットワーク・アドレシングのような情報を提供することもできる。一旦、プリンタがアプリケーションに知られたならば、そのアプリケーションは、プリンタに関する広範な情報を引き出すことができる。
【０００３】
ご存じのように、プリンタのようなネットワーク・デバイスを定義する変数を読み取り及び書き込むために、コンピュータ・ネットワーク環境において一般的な管理プロトコルが使用されてもよい。管理プロトコルの一つのタイプは、読み出されること又は書き込まれることができるデバイスの変数を定義するために管理情報ベース（ＭＩＢ）を用いる簡易ネットワーク管理プロトコル（ＳＮＭＰ）である。そのようなプロトコルを用いると、アプリケーションは、プリンタのようなネットワーク・デバイスと両方向に通信できる。
【０００４】
ネットワークに接続されたデバイス間の通信は、チャンネル、ポート、又は「ソケット」を生成することによって可能になる。それぞれのソケットは、第１のデバイスと第２のデバイスとの間の論理接続を定める。当該技術分野の専門家によって理解されるように、ソケットによって接続された第１及び第２のデバイスは、ソケットによって又はソケットを通してのみ互いに通信することができる。ネットワーク媒体を通して互いに通信しているソフトウェア・タスクにも、同じ説明が当てはまる。ソケット上で接続されたタスクは、互いに信号又はメッセージを送信することを保証される。
【０００５】
メッセージは、メッセージが正しい着信先タスクを終端とし、ソケットのそれぞれのエンドが、通信されようとしている情報又はデータを解読することができるようにパケット化されているデータの流れである。パケット化された情報は、通信チャンネルの状態を変えることができるアイデンティファイア及びインデックスを含む。
【０００６】
当該技術分野の専門家が認めるように、オブジェクト指向分析及び設計（ＯＯＡ＆Ｄ）は、オブジェクト・コンポーネント間のインタラクションをクラス分けし（分類し）及び記述し、その後、そのようなオブジェクト・コンポーネントをカプセル化及びモデル化するためのアプローチである。クラスィフィケーション（クラス分け又は分類）は、オブジェクト・コンポーネントを一般化することによって定義される。オブジェクト・コンポーネントは、個々の構成要素（エンティティ）として振る舞い、そして固有の振る舞い及び記述的な属性（アトリビュート）を持つ特徴及び機能を認識することによって識別される。以下に説明される本発明においては、クラスィフィケーション、オブジェクト・コンポーネント、及びオブジェクト・コンポーネント間のインタラクションのセットが定義される。図面に見られるように、本発明のＯＯＡ＆Ｄは、クラスィフィケーション及びオブジェクト・コンポーネント図を用いることによって完全に説明することができる。
【０００７】
ＯＯＡ＆Ｄオブジェクト技術、オブジェクト分析、設計理論、及び用語は、「アプリケーションを用いるオブジェクト指向分析及び設計（Object-Oriented Analysis and Design with Application)」、グラディ  ブーチ（Grady Booch）、［レッドウッド  シティ、  カリフォルニア、  ベンジャミン／カミングス、  １９９３］において詳細に論じられており、言及されている。互いの上に作られるオブジェクト設計により（即ち、新オブジェクトは、一般に、旧オブジェクトから作られるので）、いくつかのクラス・ライブラリが、新しい分析及び設計を始めるために利用できる。本発明のオブジェクト設計は、ロウグ・ウェイブ・ファウンデイション・クラス・ライブラリ(Rogue Wave Foundation Class Libraries) のツールズ・エイチ・プラスプラス（ＴＯＯＬＳ．Ｈ＋＋）上に作られる。理解されるように、ＴＯＯＬＳ．Ｈ＋＋は、文字列（ストリングス）、マルチバイト文字列、ローカライズド日時、ハッシュ・セット（hash sets）、２進木（二分木）、辞書、分類されたリスト、リンクされたリスト等のようなオブジェクトのクラスィフィケーションを有する。
【０００８】
モデル・ビュー・コントローラ（ＭＶＣ）のアーキテクチャ（構造）は、ＯＯＡ＆Ｄアプリケーションによって使用される有用なアーキテクチャである。ＭＶＣは本質的に、物理データ収集（モデル）を容易にし、データ・プレゼンテーションの表示又は構成（ビュー）を容易にし、プレゼンテーションと使用者又は外部の影響との間のインタラクション又はインタフェース（コントローラ）を容易にする、オブジェクト及びクラスィフィケーションの３つの組である。
【０００９】
モデルは、フィジカル・デバイス（物理装置）の物理データ収集又は内容であり、システムによって記述される振る舞い又はデバイスが、オブジェクトを作り上げる。それぞれのモデルは、使用者又は外部の影響にとって知る又は知ることができない生データを追跡している。ビューは、モデルに直接インタラクトし、その第１の目的がモデルの生データを形成し又は提供することであるオブジェクトである。それぞれのモデルが、いくつかのビューの例を含むことができ、それぞれのビューは、１つのモデルのためにのみ存在することができる。
【００１０】
それぞれのビューの例は、異なる方法でモデルを提供することができ、又は、モデルに関するセクション、サブセクション、或いは情報を提供することのみができる。ビューは、情報を生データとしてモデル内に書き込むこともできる。ＭＶＣの実行において、もし少なくとも１つのビューがそのようなモデルのために存在するならば、生情報はモデルによって周期的に集められる。モデルのために生成された全てのビューのモデルにリファレンスが登録される。ビューが破壊されたときに、個々のリファレンスは、個々のモデルによって解放される。
【００１１】
モデル及びビューは、コントローラ・オブジェクト（ユーザー・インターフェース・オブジェクトとも呼ばれる。）の動作によって操作され処理される。コントローラ・オブジェクトは、関連するモデルにおいてリアクションを交互に生じさせることができるビューの方法を呼び出させる。従って、コントローラ・オブジェクトは、ＭＶＣアーキテクチャをおおいに事象駆動（イベント駆動）させる傾向がある。それゆえ、マイクロソフト社からのマイクロソフト・ウィンドウズ・オペレーティング・システムのような事象駆動オペレーティング・システムは、ＭＶＣアーキテクチャの完全な存在を許可する。
【００１２】
【発明が解決しようとする課題】
以下に説明される本発明においては、最少のステップとネットワーク・トラフィックによって、プリンタの存在及びプリンタの状態を発見する方法が開示されている。その方法は、専用ソケットを越えてネットワーク・ブロードキャスト・メッセージを利用する。専用ソケットは、ネットワーク・コミュニティーに登録されるか、いかなる現存のソケットとも対立しない一時的に割当てられたソケットとして、ネットワーク・オペレーティング・システムから入手される。ブロードキャスト・レスポンスにおいて使用されるプロトコルは、プリンタ状態情報を含む。プリンタ状態情報は、実際のプリンタ・デバイスを生成するコンポーネント・オブジェクトに維持される。本発明においては、タスク間通信状態情報をカプセル化し、アプリケーションとデバイスとの間の実際の通信チャンネルを提供するために、デバイス・モデルが用いられる。
【００１３】
【課題を解決するための手段】
簡単に言えば、本発明は、ネットワークにおいて特定のプリンタ・タイプを持つプリンタを発見することに関する。そのプリンタ・タイプに関するソケット・アイデンティファイア（ＩＤ）を持つソケットは、ネットワークによって設定され、ネットワークは、そのソケットを通してプリンタと通信する。ソケットは、ポーリング・モードとリスン・モードとを有する。ポーリング・モードにおいては、ソケットは、ソケットＩＤが付けられたネットワークからの出力データを待って受信し、この受信された出力データをプリンタに送信する。リスン・モードにおいては、ソケットは、プリンタから入力データを待って受信し、この入力データをネットワークに送信する。
【００１４】
ネットワークは、一旦プリンタが発見されたならば、プリンタに関するプリンタ情報を記憶するためのプリンタ情報オブジェクトを設定する。ネットワークは、プリンタ情報オブジェクトを持つプリンタ情報を維持及び更新する。加えて、ネットワークは、周期的なタイミング信号ＴＩＣＫを提供するタイマーを設定する。
【００１５】
プリンタは、Ｎ個のタイミング信号ＴＩＣＫごとに１度、周期的にポーリングされる。それぞれのポーリングは、ソケットをポーリング・モードに置き、ソケットＩＤが付けられたポーリング・データをプリンタによる受信のためにソケットに送信し、ソケットをリスン・モードに置き、ソケットがプリンタからプリンタ・データを受信したかどうかを判断するために待つステップを含む。
【００１６】
もしソケットがプリンタからプリンタ・データを入手したならば、ネットワークは、プリンタ情報オブジェクトがプリンタのプリンタ情報を記憶しているかどうかに基づいて、プリンタが以前に発見されたかどうかを、プリンタ情報オブジェクトから判断する。もしプリンタが以前に発見されていなかったならば、プリンタのプリンタ情報が、プリンタ情報オブジェクトにおいて生成され、記憶される。
【００１７】
【発明の実施の形態】
以上の概要及び本発明の好ましい実施の形態の以下の詳細な説明は、添付図面とともに読まれたときに、よりよく理解されるであろう。本発明を説明するために、現在好ましい実施の形態が図面に示される。しかし、本発明は、図示される配置、形状、及び機器そのものには限定されない。
【００１８】
本発明の好ましい実施の形態は、ネットワーク・プリンティング・デバイスを設定し制御するために、コンピュータ・ネットワーク環境において生み出された。好ましい実施の形態は、発明されたクラスィフィケーションの点から説明されている。クラスィフィケーションの多くのものについて、責任（自ら行うこと（responsibilities））及び協力（協同して行うこと（collaborations））の説明がなされる。説明の目的のために必要とされる方法が、クラスィフィケーションを理解するために必要とされるところに掲載されている。あるものは、ロウグ・ウェイブ（RogueWave）のＴＯＯＬＳ．Ｈ＋＋クラス・ライブラリーのような外部クラス・ライブラリーから現われ、また、あるものは、振る舞いが自明である例示されたクラスィフィケーション又はパラメータ化されたクラスとして存在するので、好ましい実施の形態を最終的に実行するクラスィフィケーションのすべてが、ここで説明されているわけではない。
【００１９】
詳細に図面を参照すると、図１に、本発明の好ましい実施の形態によるネットワーク・クラスィフィケーション図が示されている。 図１及び全ての他のオブジェクト指向図を説明するに際して、グラディ・ブーチのオブジェクト指向分析及び設計（ＯＯＡ＆Ｄ）方法論が用いられる。ＯＯＡ＆Ｄの技術分野において通常の技量を有する者は、以下の説明において及び図面において用いられる用語及び記号を思い出し、理解するであろう。クラス及びオブジェクト名のいくつかは、他の類似した名称が付けられたオブジェクトと区別されるために、接頭辞ＯＶｘｘｘ（オーブイ…）を使用する。もちろん、当該技術分野における専門家は、いかなる名称も、限定を意図したものではなく、実質的には、本発明の精神及び範囲から離れることなく、いかなる名称が使用されてもよいことを認識するでしょう。図１に現われるクラスとそれらの関係を説明する。
【００２０】
［ＯＶモデル（オーブイモデル：ＯＶＭｏｄｅｌ）］
ＯＶモデルは、オキビュー（ＯｋｉＶｉｅｗ）ＭＶＣデザインのためのベース・クラス・モデルであり、ベース・オキビュー・モデリング図を説明する。そのような図は、オブジェクト指向設計の大部分において明白なＭＶＣアーキテクチャに非常に類似している。
【００２１】
責任：
１．情報を更新するためにモデルとビュー（以下に説明されるＯＶビュー）との間の関係を維持する。
【００２２】
２．ビューを登録し及びリストからビューを削除することを含むモデルにアクセスするために構成されたビューのリストを維持する。
【００２３】
３．モデル状態及び情報を更新するために同期方法「スキャン」を提供する。「スキャン」は、もし現在登録されているビューがなければ、更新を禁止するメカニズムを提供する。
【００２４】
協力：
１．モデルが内容又は状態の変更があったことを検出したときに、ＯＶビュー法「更新」にアクセスする。
【００２５】
［ＯＶビュー（オーブイビュー：ＯＶＶｉｅｗ）（図示せず）］
ＯＶビューは、オキビューＭＶＣデザインのためのベース・クラス・ビューである。
【００２６】
責任：
１．ビューと、ビューによってモニターされたモデルとの間の関係を維持する。
【００２７】
２．全体ビューの一部として構成された子ビューのリストを維持する。それぞれの子ビューは、親ビューとは異なるモデルを持ってもよい。
【００２８】
３．新しい情報が利用可能になったときに、いかなる現存の親ビューをも更新する。
【００２９】
４．表示されるべきモデルからの新しい情報を許可する方法「更新」を提供する。
【００３０】
５．破壊されたときにモデルが呼び出すことができる方法「リタイア（引退）」を提供する。
【００３１】
協力：
１．親ビューは、新しい情報が利用できるときに、互いに通知するため、存在する子ビューと共に動作する。
【００３２】
［タイマー（Ｔｉｍｅｒ）（図１には示されず、図５に示される。）］
このクラスは、周期的に「ウェイク・アップする（目覚める）」能力を備えたオブジェクトを記述し、シンクタスク型のオブジェクトのリストを含む。タイマーは、オペレーティング・システムとインタフェースで接続され、タイマー法にコールバックする手段を提供する。コールバックはシンクタスク・オブジェクトのリストをトラバース（走査）し、それぞれの「ティック（ＴＩＣＫ）」法を呼び出す。シンクタスク・オブジェクトの形成中にシンクタスクは、タイマーに登録される（即ち、タイマー・リストにシンクタスク・リファレンスを記憶させる。）。シンクタスク・オブジェクトの破壊の間に、リファレンスが取り除かれる。
【００３３】
責任：
１．タイマーが始動したときに設定された周期的な間隔でウェイク・アップする。
【００３４】
２．シンクタスク型のタスクのリストを維持する。シンクタスクは、ウェイク・アップ期間に、タイマーによって呼ばれたティックと呼ばれる方法を提供する。
【００３５】
３．タイマーを始動させ停止させる方法を提供する。
【００３６】
協力：
１．ティック法を呼び出すために、すべての登録されたシンクタスク・オブジェクトへのリファレンスを維持する。
【００３７】
［シンクタスク（ＳｙｎｃｈＴａｓｋ）］
このクラスは、ティックと呼ばれる単一の機能を周期的にウェイク・アップし実行することができるタスクを記述する。この能力を受け継ぐいかなるクラスも、ティック機能を提供する。シンクタスク・オブジェクトは、タイマー・クラスに登録される。タイマー・クラスは、オペレーティング・システム内のタイマーの用い方を知る単一のインスタント・オブジェクトを生成する。
【００３８】
責任：
１．導出されたクラスが、一定の周期でアクセスされなければならない情報を処理するために、定義することができる実際のティック法を提供する。
【００３９】
２．周期的な更新インターバルを始動し停止する方法を提供する。
【００４０】
協力：
１．タイマー・リストからのシンクタスク・オブジェクトの追加及び削除を許可するため、タイマーへのリファレンスを維持する。
【００４１】
［オキビューユーティリティ（ＯｋｉＶｉｅｗＵｔｉｌｉｔｙ）］
このクラスは、すべての他のクラスの所有権を定める。理解されるように、システムを構築しアプリケーション内にそれらの存在を記憶するすべての個々のクラスの例を生成するより、オキビューユーティリティのオブジェクト又はタイプの例をもたらす方が簡単なので、「所有権」は、アプリケーション開発者にとって便利な方策である。
【００４２】
責任：
１．オブジェクト・タイマとＯＶネットワークの集合体を維持する。多くの他のオブジェクトが、タイマ及びＯＶネットワークの集合体として保有される。
【００４３】
２．オブジェクトの動作のためのプレファランス情報にアクセスするための動作環境へのインタフェースをカプセル化する。
【００４４】
協力：
１．オブジェクトを生成及び破壊するために、タイマーへのリファレンスを維持する。
【００４５】
２．オブジェクトを生成し、初期化し、破壊するためにＯＶネットワークへのリファレンスを維持する。
【００４６】
［ＯＶネットワーク（オーブイネットワーク：ＯＶＮｅｔｗｏｒｋ）］
このクラスは、ネットワーク・サービスを構築するすべてのプライマリー・クラスの集合体を含み、すべてのそのような集合体オブジェクトの生成と破壊の責任を負う。ＯＶネットワークは、ＯＶモデルとシンクタスクから多重に受け継がれる。ＯＶモデルは、ＯＶネットワークにビュー・クラス（ＯＶビュー）を更新させ、モデルの振る舞いを維持する。シンクタスクは、ＯＶネットワークに、ネットワークに関する新しい情報を周期的に開示させ、集合体オブジェクトの少なくともいくつかをそれら自身の新しい情報として開示させる。もしモデルに登録されたビューがなければ、ＯＶネットワーク又はいかなる集合体によっても正式な動作が実行されないという点において、更新された情報は、インテリジェントに実行される。ＯＶモデルは、登録されたビューの活動中のリストを提供する。アプリケーション開発者は、ＯＶネットワークに直接メッセージを送信することができ、又は、必要とされれば集合体オブジェクトにメッセージを送信することをＯＶネットワークに要求することができる。
【００４７】
責任：
１．ネットワークＡＰＩ（アプリケーション・プログラム・インターフェース）へのアクセスを開始するためにＩＰＸ（インターネット・パケット・イクスチェンジ）サービスを生成する。
【００４８】
２．ＮＷサーバー型のネットウェア・サーバー・オブジェクトのリストを維持する。
【００４９】
３．ネットワーク上において現在サービスを提供しているネットウェア・サーバーのリストを更新するために、ネットワークＡＰＩからのメカニズムをカプセル化する。
【００５０】
４．アプリケーションとプリンタ・デバイスとの間の通信のためのソケット接続を維持する。
【００５１】
５．ネットワーク上に存在し、事前に定義されたソケット接続に応答する新プリンタ・デバイスを発見する手段を提供する。これは、ＯＶネットワークによって提供されるティック法の間に起こる。
【００５２】
６．サーバーに新しい状態情報をスキャンさせる手段を提供する。これは、ＯＶネットワークによって提供されたティック法の期間に起こる。
【００５３】
７．ネットワーク上で発見されたプリンタ・デバイスのリストを維持する。
【００５４】
協力：
１．プリファランス情報にアクセスするためオキビューユティリティへのリファレンスを維持する。
【００５５】
２．クライアント・ステーション・ネットワーク・ＡＰＩパラメータに関する情報にアクセスするためＩＰＸサービスへのリファレンスを維持する。
【００５６】
３．プリンタ・デバイスからの情報にアクセスするため、生成されたソケットへのリファレンスを維持する。
【００５７】
［ＩＰＸサービス（アイピーエックスサービス：ＩＰＸＳｅｒｖｉｃｅ）］
このクラスは、ネットウェア  ＩＰＸ  ＡＰＩのためのＩＰＸバインディング、開始、及び終了を提供する。これは、ネットウェアＡＰＩ関数呼び出し（コール）のカプセル化である。アプリケーション開発者によって要求されるいかなる追加のステップをも用いることなく、ＩＰＸサービスの例は、ネットワーク環境及び他のネットワーク・デバイスと通信を開始するために、クライアント・ステーションのすべての必要な操作を提供する。もし必要があれば、アプリケーション開発者が、クライアント・ワークステーション及びネットワーク環境の操作及び他のリファレンスのためのＩＰＸサービスについて言及してもよい。ＩＰＸサービス・クラスは、ネットウェアＡＰＩを初期化する責任を持つので、それは単一のインスタンス・オブジェクトである。ＩＰＸサービスはまた、ＩＰＸソケットの非公開のリストをも含んでいる。ＩＰＸサービスは、アプリケーションによって生成されるすべてのＩＰＸソケット、ＮＷソケットへのリファレンスを保持する。もしアプリケーションがソケットを破壊するならば、リファレンスがＩＰＸサービス・リストから削除される。もしアプリケーションがソケットを破壊し忘れてアプリケーションを閉じたならば、ＩＰＸサービスはそのリストにおいて発見されたいかなる開いているソケットをも破壊させる。もしアプリケーションが存在しなくなった後にソケットが閉じていなければ、未知のソケット通信がクライアント・ステーションを未使用にすることができるので、そのような安全な特徴が、クラス・ライブラリーをより信頼性の高いものにする。
【００５８】
責任：
１．ネットウェアＡＰＩを初期化する。
【００５９】
２．アプリケーションをＡＰＩに結合させ、アプリケーション・タスク・ハンドルを検索する。
【００６０】
３．アプリケーション終了の間にネットウェアＡＰＩを消去し、すべてのＮＷソケットが適切に破壊されることを保証する。
【００６１】
４．アプリケーションためのソケット・オープンのリストを維持する。
【００６２】
５．ネットウェア・シェルの設定を維持する。
【００６３】
６．ネットウェア状態を維持する。
【００６４】
協力：
１．アプリケーションが終了する前に、すべての適切なネットウェア・ソケットが破壊されることを保証するために、それぞれのＮＷソケットへのリファレンスを維持する。
【００６５】
［イーシービー（ｅｃｂ又はＥＣＢ）（図１に示されず、図２に示される。）］
これは、ＥＣＢ（事象制御ブロック）構造のクラス形式である。このＥＣＢ構造は、ネットウェアＡＰＩにデータ・バッファを伝えるために使用されるメカニズムであり、ＡＰＩによって定義される。
【００６６】
責任：
１．ヘッダとデータバッファを初期化する。
【００６７】
２．データバッファ及びＥＣＢ状態情報への便利なアクセスを提供する。
【００６８】
３．ＥＣＢデータ・メンバーを操作する。
【００６９】
４．物理送信及び受信データ・バッファを生成及び破壊する。
【００７０】
協力：
１．このクラスは、ＥＣＢ構造から公開的に導出される。
【００７１】
［ＮＷソケット（エヌダブリュソケット：ＮＷＳｏｃｋｅｔ）］
このクラスは、ＩＰＸサービス・ソケットのＡＰＩ関数呼び出しのカプセル化である。そのようなソケットは、クライアント・ワークステーションと、ソケット・アイデンティファイアを認識することができる他のネットワーク・デバイスとの間の通信チャンネルを生成するために使用される。ＮＷソケットは、特有のアイデンティファイア又はＩＤ（ソケットナンバー）によって生成され、通信に必要な情報をデータ・メンバーとして、記憶する。ＩＰＸサービスは、アプリケーションをネットウェア・ソケット・インタフェース内のフックに与えるために、タスクアイディー（ｔａｓｋＩｄ）・アイデンテイフィケーションを提供する。ＮＷソケットは、ネットワーク・データ・パケット・バッファの送信及び受信を管理する集合体オブジェクトを含む。ＮＷソケットは、シンクタスクから引き継がれ、受信されたデータ・パケット・バッファのためのＡＰＩインターフェースをポーリングし、受信に失敗したデータ・パケット・バッファを再送信するティック機能を提供する。データ・パケット・バッファは、ＥＣＢ構造によって説明される。
【００７２】
責任：
１．必要なＡＰＩ関数呼び出しを用いるソケットを生成する。
【００７３】
２．ネットワーク外のデータ・パケットを受信するために必要なリスン・バッファを提供する。このリスン・バッファは、ＮＷソケットによって維持されたリストに保持される。
【００７４】
３．ｅｃｂがデータを受信したかどうかを判断する。ｅｃｂが、受信リスト上に置かれる。新データを処理しようとするときに、リストがアプリケーションによってアクセスされる。
【００７５】
４．ネットワーク上におけるデータ・パケットの送信を許可する。必要なＡＰＩ関数呼び出しが、この責任を提供するのに使用される。
【００７６】
５．送信及び受信のために使用されるｅｃｂオブジェクトをフォーマットするための援助を提供する。
【００７７】
６．クライアント・ステーションのためのローカル・アドレスを決定する。
【００７８】
協力：
１．情報に特有なクライアント・ワークステーションにアクセスするためＩＰＸサービスへのリファレンスを維持する。
【００７９】
２．送信、受信、又はエラー状態の間に、いつデータが処理されたかを判断するためｅｃｂ法にアクセスする。
【００８０】
３．ＩＰＸサービスにそれ自身のリファレンスを登録する。
【００８１】
［ＮＷサーバー（エヌダブリュサーバー：ＮＷＳｅｒｖｅｒ）］
このクラスは、実際のネットウェア・サーバーを表わす。サーバー、サーバーのタイプ、サーバーのバージョン等の扱いに関する情報は、生成されたときにＮＷサーバー・オブジェクトによって検索され、記憶される。ＮＷサーバーは、実際のユーザー・リスト及び接続情報を記憶する。もしアプリケーションがサーバーへの物理接続を持つていれば、ＮＷサーバーは、すべての接続情報を表わすＮＷアタッチメント（エヌダブリュアタッチメント（ＮＷＡｔｔａｃｈｍｅｎｔ））を生成する。クライアント・ステーションをネットウェア・サーバーに物理的にログインさせるＮＷサーバーのためのＮＷアッタチメントを生成することもできる。ＮＷサーバーは、ネットウェア・サーバーによって管理されるプリント・キュー（ＮＷキュー(エヌダブリュキュー：ＮＷＱｕｅｕｅ））、プリント・サーバー（ＮＷプリントサーバー（エヌダブリュプリントサーバー：ＮＷＰｒｉｎｔＳｅｒｖｅｒ））、及び遠隔プリンタ（ＮＷプリンターズ（エヌダブリュプリンターズ：ＮＷＰｒｉｎｔｅｒｓ））のリストをも含む。アプリケーションは、適切なＡＰＩ呼び出しを交互に起こさせるこれらオブジェクトのそれぞれを生成し、破壊し、又は修正することができる。ＮＷサーバーは、ＯＶモデルを受け継ぎ、周期的なベース上の情報を機敏に更新することができる。ＯＶネットワークのティック関数は、ネットワーク上に発見されたすべてのＮＷサーバーを呼び出す。情報の更新のための物理ＡＰＩ呼び出しは、ＮＷサーバーがビューを登録したときのみに、実行される。
【００８２】
責任：
１．接続タイプに関する情報を維持する。
【００８３】
２．もし必要ならば、ワークステーションから物理ネットウェア・サーバーへのアタッチメント（接続機構）であるＮＷアタッチメントを生成し、維持する。
【００８４】
３．サーバーのバージョン情報を検索する。
【００８５】
４．アタッチメントから、特権情報を検索する。
【００８６】
５．ネットウェア・サーバーのために定義されたすべてのユーザー及びグループ情報を検索し、情報をリストに集める。
【００８７】
６．ネットウェア・サーバーで定義されたすべてのキュー（待ち行列）であるＮＷキュー（ＮＷＱｕｅｕｅ）を検索し、ＯＶネットワークのティック期間に更新されたキューをリスト内に集める。
【００８８】
７．要求されたときにＮＷキュー・オブジェクトを生成し、破壊する。
【００８９】
８．アプリケーションをリストに記憶されたＮＷキュー・オブジェクトにアクセスさせる。
【００９０】
９．ネットウェア・サーバー上に定義されたすべてのプリント・サーバーであるＮＷプリントサーバー（ＮＷＰｒｉｎｔＳｅｒｖｅｒ）を検索し、リスト内にプリント・サーバーを集める。そのリストは、ＯＶネットワークのティック期間に更新される。
【００９１】
１０．要求されたときにＮＷプリントサーバー・オブジェクトを生成し、破壊する。
【００９２】
１１．アプリケーションをリストに記憶されＮＷプリントサーバー・オブジェクトにアクセスさせる。
【００９３】
協力：
１．もしアプリケーションが、現在ネットウェア・サーバー内にログされているならば、ＮＷアタッチメント・オブジェクトにリファレンスが保持される。アプリケーションは、ＮＷアタッチメントを生成又は破壊することによってサーバーにログイン又はサーバーからログアウトされることもある。
【００９４】
［サーバーリスト（ｓｅｒｖｅｒＬｉｓｔ）］
この例示されたクラスは、ＯＶネットワークによって発見されるすべてのＮＷサーバー・オブジェクトのリストを含む。このリストは、ハッシュ・セットのように振る舞うパラメータ化されたクラスから導出される。サーバーリストは、対応する情報を更新する機会をそれぞれのＮＷサーバーに提供するため、ティック期間に、ＯＶネットワークによってトラバース（走査）される。
【００９５】
［プリンタ（Ｐｒｉｎｔｅｒ）］
このクラスは、クライアント・ワークステーションとネットワーク上に存在するプリンタ・デバイスとの間のすべての処理をカプセル化する。アプリケーションは、対応するプリンタ・オブジェクトから直接にプリンタ・デバイス上の情報を獲得し、プリンタ・オブジェクトにアクセスすることによって、プリンタ・デバイスの設定を変更する。ＯＶネットワークは、新しいプリンタ・デバイスを発見し、ティック機能の間に、対応するプリンタ・オブジェクトを生成する。また、ＯＶネットワークは、ティック期間に、プリンタ・デバイスが消滅したかどうかをも判断する。ＯＶネットワークは、プリンタ・オブジェクトと物理プリンタ・デバイスとの間の通信を容易にするためＮＷソケットを生成する。プリンタ・クラスは、情報を周期的及び機敏に、即ち、ビューが存在するときのみ、検索させるＯＶモデルをも受け継ぐ。
【００９６】
責任：
１．物理プリンタ・デバイスに関する全ての統計値及び状態情報を維持する。
【００９７】
２．物理プリンタ・デバイスのネットウェア・プリント・サーバー容量をモニターし、制御する。
【００９８】
３．物理プリンタ・オブジェクトのネットワーク・インタフェースに関するすべての設定情報を維持する。
【００９９】
４．受信されたプリンタ・パケットが現存するプリンタからのものか、新しいプリンタからのものかを判断する。もしパケットが、新しいプリンタに属するならば、ＯＶネットワークは通知を受け、新プリンタ・オブジェクトが生成する。
【０１００】
５．プリンタ又はプリンタ群に送信するため、ＮＷソケットのためのデータ・パケットを生成する。
【０１０１】
６．ＯＶネットワークによって呼び出されたときに、プリンタにおけるデータを有効のまま残すために、非常に長い時間が経過したかどうかを判断する。もしデータがもはや有効でなければ、プリンタ・オブジェクトは破壊される。
【０１０２】
協力：
１．新しいプリンタの存在を判断し、もはや応答しないプリンタを破壊するためにＯＶネットワークとともに動作する。
【０１０３】
２．データ・パケットを物理プリンタ・デバイスに又はそこから受信及び送信するためＮＷソケットとともに動作する。
【０１０４】
［プリンタリスト（ＰｒｉｎｔｅｒＬｉｓｔ）］
この例示されたクラスは、ＯＶネットワークによって発見されたすべてのプリンタ・オブジェクトのリストを含む。ＯＶネットワークは、そのティック期間に更新を許可するためにリストを使用し、いかなるビュー・オブジェクトにもそのリストを提供する。リストは、単一のリンクされたリストとして振る舞うパラメータ化されたクラスから導出される。
【０１０５】
［プリンタＤＢ（プリンタディービー：ＰｒｉｎｔｅｒＤＢ）］
このクラスは、過去に存在したプリンタ・デバイスのために作られた不揮発性の情報のためのデータベース保持領域である。新しいプリンタ・オブジェクトを生成する間に必要とされる可能な情報のためのプリンタＤＢが言及される。
【０１０６】
責任：
１．全ての不揮発性のプリンタ設定情報を維持する。そのような情報は、プリンタ記述、管理者ノート、プリント・ドライバの配付、及びプリンタ配置の記述を含む。
【０１０７】
２．そのような情報を、ネットワーク上の遠隔アプリケーションにおいて存在することができるプリンタＤＢオブジェクトに配布させる。
【０１０８】
協力：
１．新情報が検索され及び／又は記憶される必要があるかどうかを判断するためプリンタ・オブジェクトとともに動作する。
【０１０９】
図２は、本発明の好ましい実施の形態により実施されるソケット・インプリメンテーション（実現）を概説している。この図の説明において、グラディ・ブーチのオブジェクト指向分析及び設計の方法論が用いられる。図２に現われるクラス及びそれらの関係を、以下に論じる。
【０１１０】
［ＮＷソケット（エヌダブリュソケット：ＮＷＳｏｃｋｅｔ）］
先に論じられたように、このクラスは、クライアント・ワークステーションとネットワーク・デバイスとの間のソケット通信をカプセル化する。ソケット番号（ソケットナンバー）は、オブジェクトを生成するために必要とされる特有のアイデンティフィケーションを提供する。タスクアイディー（ｔａｓｋＩｄ）は、アプリケーションにネットウェア・ソケット・インタフェース内のフックを与えるために、ＩＰＸサービスによって提供されるアイデンティフィケーションである。ＮＷソケットは、受信されたデータ・パケット・バッファのためのＡＰＩインタフェースをポーリングし、受信に失敗したデータ・パケット・バッファを再送信するティック機能を提供する。
【０１１１】
［ＩＰＸサービス（アイピーエックスサービス：ＩＰＸＳｅｒｖｉｃｅ）］
先に論じられたように、このクラスは、クライアント・ワークステーションを使ってＩＰＸ状態を維持する単一のインスタンス・オブジェクトである。ＩＰＸサービスは、クリーンナップを安全に起こすことができるように、すべての現存するソケットのリストを維持する。
【０１１２】
［ソケット（ｓｏｃｋｅｔｓ）］
これは、ＩＰＸサービスによって含まれるＮＷソケットの例示されたクラス・リストである。ソケットのクラスは、単一のリンクしたリストのように振る舞うパラメーター化されたクラスから導出される。
【０１１３】
［イーシービー（ｅｃｂ又はＥＣＢ）］
先に論じられたように、これはＥＣＢ構造の形態のクラス化である。ｅｃｂクラスは、ＥＣＢデータ要素の取扱い、並びに、物理送信及び受信データ・バッファの生成及び破壊に責任を持つ。
【０１１４】
［センドＥＣＢｓ（センドイーシービーズ：ＳｅｎｄＥＣＢｓ）］
これは、送信されたｅｃｂオブジェクトの例示されたクラスのリストである。それぞれの送信されたオブジェクトの状態は、ティック期間に周期的に確認される。もし状態確認が失敗したならば、失敗した送信オブジェクトが再送信される。もし状態確認が成功したならば、成功した送信オブジェクトが破壊され、又は、もし存在すれば所有者に戻される。センドＥＣＢｓは、単一のリンクされたリストのように振る舞うパラメータ化されたクラスから生じる。
【０１１５】
［リスンＥＣＢｓ（リスンイーシービーズ：ＬｉｓｔｅｎＥＣＢｓ）］
これは、ネットワークから新データ・パケットの到着を待っているｅｃｂオブジェクトの例示されたクラス・リストである。それぞれのリスンｅｃｂは、ティック期間に受信されたデータのために確認される。もしデータが受信されたならば、リスンｅｃｂは、レシーブドＥｃｂｓ（ＲｅｃｖＥｃｂｓ）のリスト（以下に論じる。）に送信され、新ｅｃｂは、リスンｅｃｂｓリストに新ｅｃｂを入れるように生成される。リスンｅｃｂｓは、単一のリンクされたリストのように振る舞うパラメータ化されたクラスから導出される。
【０１１６】
［レシーブドＥｃｂｓ（ＲｅｃｖＥｃｂｓ）］
これは、ネットワークからデータを受信したレシーブドＥｃｂｓオブジェクトの例示されたクラスのリストである。ＯＶネットワークは、ティック期間にレシーブドＥｃｂｓをポーリングし、受信されたデータに従って動作する。レシーブドＥｃｂｓは、単一のリンクされたリストのように振る舞うパラメータ化されたクラスから導出される。
【０１１７】
図３は、情報を発見しプリンタ状態を更新するためのオブジェクト間のインタラクションを示している。このインタラクションは、ＯＶネットワークのティック期間中に起こる。「ネットワーク」オブジェクトは、ＯＶネットワークの具体例である。図示されるように、タイマー・オブジェクト「シスタイマー（ｓｙｓＴｉｍｅｒ）」は、ＯＶネットワークのティック法を呼び出す。「ネットワーク」オブジェクトは、新プリンタの覆いを取り、現在のプリンタ情報を更新しようと試みる。
【０１１８】
これは、１つのティック期間中に、プリンタ・クラス・スタティック法である「クエリープリンタ（ｑｕｅｒｙＰｒｉｎｔｅｒ）」を呼び出すことによって達成される。そのような方法は、所定のネットワーク・ソケットによって、プリンタにポーリング・メッセージを構成させ、ブロードキャストさせる。そのようなブロードキャストに対する応答は、他のティック期間中に確認される。もし「ネットワーク」が、以前のティック期間がブロードキャストを発行したと判断したならば、次のいくつかのティック期間は、ネットワークからのプリンタ応答を集めるためにあてられる。「ネットワーク」オブジェクトは、ＮＷソケット・オブジェクトである「ソケット」を介して新データ・パケットを検索する。
【０１１９】
「ピーアールティー（Ｐｒｔ）」オブジェクトは、局所的なビジビリティ（visivility）を有し、ティック期間にのみ存在するプリンタ・クラスの例示である。図１に関連して示されるように、プリンタのリストは、ＯＶネットワークの「ピーリスト（ｐｌｉｓｔ）」によって保持される。それぞれのプリンタは、「ピーリスト」から１度に１つ検索され、「ピーアールティー」に一時的に記憶される。それぞれの新たに到達したデータ・パケットは、「アップデートプリンタ（ｕｐｄａｔｅＰｒｉｎｔｅｒ）」を用いて「プリンタ」オブジェクトに与えられる。新たに到達したデータが自ら定められてたものであるかどうかを判断することは、「プリンタ」オブジェクトの責任である。もし自ら定められたものでないなら、データ・パケットは拒絶され、ＯＶネットワークは、「ピーリスト」において発見された次のプリンタ・オブジェクトに進む。
【０１２０】
もしいずれのプリンタ・オブジェクトもデータ・パケットを要求していないならば、クラス・スタティック法である「ニュープリンタ（ｎｅｗＰｒｉｎｔｅｒ）」が呼び出される。「プリンタ」オブジェクトはその後、「ニュープリンタ」がネットワーク上にだけ現われるプリンタから始められたかどうかを判断する。もし、そうであるなら、ＯＶネットワークは、新しい「プリンタ」のオブジェクトを、「ピーリスト」内に置く。
【０１２１】
プリンタ・デバイスが消えたかどうかを判断するために、ＯＶネットワークは、対応する「プリンタ」オブジェクトがもはや有効でないデータを含むかどうかを確認する。即ち、「ネットワーク」が、「ピーリスト」からそれぞれの「プリンタ」オブジェクトを検索し、「イクスパイアード（ｅｘｐｉｒｅｄ）」法が呼び出される。「プリンタ」オブジェクトは、プリンタ・データが満了したかどうかを判断する責任を持つ。もし満了したならば、「ネットワーク」は、プリンタ・オブジェクトを破壊する。
【０１２２】
図４は、ネットワーク・ソケットを通す通信チャンネルを維持するオブジェクト間のインタラクションを示す。オブジェクトである「ソケット」は、ＮＷソケットの例示である。図示されるように、タイマー・オブジェクトである「シスタイマー（ｓｙｓＴｉｍｅｒ）」は、ＮＷソケットのティック法を呼び出す。「ソケット」オブジェクトは、そのときリスンＥｃｂｓオブジェクトである「エルリング（Ｌｒｉｎｇ）」において発見されたそれぞれのｅｃｂエントリーを確認する。理解されるように、「エルリング」におけるそれぞれのｅｃｂエントリーは、ネットワークからの新しいメッセージを待っている。
【０１２３】
「ソケット」は、「ソケット」に対する局所的ビジビリティを持つｅｃｂオブジェクトである「ピーイーシービー（ｐｅｃｂ）」を生成し、「エルリング」におけるそれぞれの調査されたｅｃｂオブジェクトを保持する。もし「ピーイーシービー」がネットワーク外の新しい情報を受信したならば、関連するｅｃｂオブジェクトが、レシーブドＥｃｂｓオブジェクトである「レシーブキュー（ＲｅｃｖＱｕｅｕｅ）」に追加される。ネットワークが、新しいネットワークにアクセスしようとするときに、ｅｃｂオブジェクトを「レシーブキュー」から検索することは、ＯＶネットワーク・オブジェクトである「ネットワーク」の責任である。アプリケーションは、ＮＷソケット法である「レシーブ（ｒｅｃｅｉｖｅ）」を通して新データにアクセスする。
【０１２４】
次に、「ソケット」は、センドＥｃｂｓオブジェクトである「センドキュー（ＳｅｎｄＱｕｅｕｅ）」に存在するいかなるｅｃｂオブジェクトをも確認する。ｅｃｂオブジェクトは、アプリケーションによって生成され、ＮＷソケット法である「センド（ｓｅｎｄ）」を通して「センドキュー」に送られる。ｅｃｂオブジェクトは、ピーイーシービーにおいて局所的に記憶される。もしｅｃｂオブジェクトが送信されるなら、適切なＡＰＩ呼び出しがなされる。もしｅｃｂオブジェクトが送信されたが現在エラー状態であるならば、エラー状態が記憶され、ｅｃｂオブジェクトが破壊される。
【０１２５】
図５は、本発明の好ましい実施の形態においてタイマーとシンクタスクのために使用されるクラスィフィケーションの実行を概説し、タイマー・オブジェクトがシンクタスク型オブジェクトのリストをどのように保持するかを示している。説明されるように、これらのタスクは、ＭＶＣの同期的振る舞いに責任を持っている。
【０１２６】
［タイマー（Ｔｉｍｅｒ）］
先に論じられたように、このクラスは、周期的にウェィク・アップすることができるオブジェクトを説明している。このクラスは、シンクタスク型のオブジェクトのリストを含んでいる。タイマーは、オペレーティング・システムとインタフェースで接続されており、タイマー法の中にコールバックする手段を提供する。このコールバックは、シンクタスク・オブジェクトのリストをトラバース（走査）し、それぞれのティック法を呼び出す。シンクタスク・オブジェクは、シンクタスク・オブジェクの形成の間に、タイマーに登録される（即ち、リストに記憶される）。登録されたオブジェクトは、シンクタスク・オブジェクの破壊の間に、消去される。
【０１２７】
［シンクタスク（ＳｙｎｃｈＴａｓｋ）］
先に論じられたように、このクラスは、ティックと呼ばれる単一の機能を周期的に呼び起こし（ウェイクアップし）、実行することができるタスクを説明する。この能力を本来的に備えたいかなるクラスもティック機能を提供する。
【０１２８】
［タイムドアイテムズ（ＴｉｍｅｄＩｔｅｍｓ）］
これは、ウェィクアップ周期の間に呼び出すために、タイマーのためのティック処理を提供するシンクタスク・オブジェクトの例示されたクラスのリストである。このクラスは、単一のリンクされたリストのように振る舞うパラメータ化されたクラスから導出される。
【０１２９】
先に説明されたアーキテクチャを用いると、ネットワークにおいて特別なプリンタ・タイプを持つプリンタは、以下の方法で発見される。最初に、プリンタ・タイプに関するソケット・アイデンティファイア（ＩＤ）を持つソケットが、ネットワークにより設定され、ネットワークはソケットを通してプリンタと通信する。理解されるように、ソケットはポーリング・モードとリスン・モードとを有する。ポーリング・モードにおいて、ソケット・アイデンティファイア（ＩＤ）が付けられたネットワークからの出力データを待って受信し、この受信された出力データをプリンタに送信する。リスン・モードにおいては、ソケットは、プリンタからの入力データを待って受信し、この受信された入力データをネットワークに送信する。
【０１３０】
ネットワークは、プリンタを一旦発見したならば、そのプリンタに関するプリンタ情報を記憶するためのプリンタ情報オブジェクトの設定をも行う。ここで理解されるように、ネットワークは、プリンタ情報オブジェクトを持つプリンタ情報を維持及び更新する。加えて、ネットワークは、周期的なタイミング信号であるティックを提供するタイマーを設定する。
【０１３１】
プリンタは、Ｎ個のティック（ＴＩＣＫ）ごとに１度、周期的にポーリングされる。それぞれのポーリングは、ソケットをポーリング・モードに置くこと、プリンタによる受信のためにソケット・アイデンティファイア（ＩＤ）が付けられたポーリング・データをソケットに送信すること、リスン・モードにソケットを置くこと、ソケットがプリンタからプリンタ・データを入手したどうかを判断するために待機することを含む。
【０１３２】
もしソケットがプリンタからプリンタ・データを入手したならば、ネットワークは、プリンタのプリンタ情報を記憶したかどうかに基づいてプリンタが以前に発見されたかどうかを、プリンタ情報オブジェクトから判断する。もしプリンタが以前に発見されなかったならば、プリンタのプリンタ情報は、プリンタ情報オブジェクトにおいて生成され記憶される。
【０１３３】
プリンタ情報の生成は、プリンタのプリンタ・モデル・オブジェクトの生成、プリンタに関する実際のプリンタ情報の生成、及びプリンタ・モデル・オブジェクトにおいて生成されたプリンタ情報の記憶を含むことが望ましい。
【０１３４】
もしソケットがプリンタからプリンタ・データを入手しなかったならば、プリンタ・モデル・オブジェクトにおける実際のプリンタ情報は、それぞれのポーリングの間に増大されるエージング・カウンタを含むことが望ましい。しかし、もしソケットがプリンタからプリンタ・データを入手したならば、エージング・カウンタはゼロになる。従って、エージング・カウンタが所定のレベルに到達したかどうかを判断し、もしエージング・カウンタが所定のレベルに到達したならばプリンタのプリンタ・モデル・オブジェクトが破壊され得る。理解されるように、そのような判断は、それぞれのポーリングに１度の間隔で又はより長い間隔で生じることができる。
【０１３５】
プリンタ情報オブジェクトにおけるプリンタ情報は、プリンタの記憶された状態に関する記憶されたプリンタ状態情報を含み、プリンタからのプリンタ・データは、プリンタの現在の状態に関する現在のプリンタ状態情報を含むことが望ましい。従って、もしプリンタが前もって発見されたならば、プリンタの現在の状態情報がプリンタの記憶された状態と異なるかどうかを判断するため、記憶されたプリンタ状態情報は、現在のプリンタ状態情報と比較される。もし現在の状態が記憶されている状態と異なるならば、プリンタ情報オブジェクトに記憶されているプリンタ状態情報は、現在のプリンタ状態情報と置き換えられる。
【０１３６】
もし現在の状態が記憶されている状態と異なるならば、プリンタ・モデル・オブジェクトを見るアプリケーションが、現在の状態が変更されたことを通知されることがより望ましい。
【０１３７】
以上に説明されたように、ネットワークにおいてプリンタを発見しエージングするアーキテクチャ及び方法を用いると、ネットワーク・プリンタが、オブジェクト指向法においてモニターされ、制御され得る。本発明の広い概念から逸脱することなく先に説明された実施の形態に変更が可能であることは当該技術の専門家にとって予測できるであろう。それゆえ、本発明は、開示された特定の実施の形態に限定されず、特許請求の範囲において定義された本発明の概念及び範囲内における変更を包括することを意図している。
【図面の簡単な説明】
【図１】  本発明の好ましい実施の形態による、ネットワーク・クラスの関係を示すＯＯＡ＆Ｄクラスィフィケーション図である。
【図２】  本発明の好ましい実施の形態による、ネットワーク・ソケットの関係を示すＯＯＡ＆Ｄクラスィフィケーション図である。
【図３】  本発明の好ましい実施の形態による、プリンタ情報を発見し、プリンタ状態を更新するプロセスを示すＯＯＡ＆Ｄインタラクション図である。
【図４】  本発明の好ましい実施の形態による、ネットワーク・ソケットを通して行なう通信を維持するプロセスを示すＯＯＡ＆Ｄインタラクション図である。
【図５】  本発明の好ましい実施の形態による、タイマー・クラスの関係を示すＯＯＡ＆Ｄクラスィフィケーション図である。
【図１】
0003666619.tif 000002
【図２】
0003666619.tif 000003
【図３】
0003666619.tif 000004
【図４】
0003666619.tif 000005
【図５】
0003666619.tif 000006