JPH10500509A - オペレーティングシステムにおけるイベント分配装置及び方法 - Google Patents

オペレーティングシステムにおけるイベント分配装置及び方法

Info

Publication number
JPH10500509A
JPH10500509A JP7529840A JP52984095A JPH10500509A JP H10500509 A JPH10500509 A JP H10500509A JP 7529840 A JP7529840 A JP 7529840A JP 52984095 A JP52984095 A JP 52984095A JP H10500509 A JPH10500509 A JP H10500509A
Authority
JP
Japan
Prior art keywords
event
consumer
consumers
events
broadcast
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP7529840A
Other languages
English (en)
Other versions
JP3691515B2 (ja
Inventor
スティーブン, ジエイムズ ズィマンスキー,
トーマス, ユージーン ソルポー,
ウィリアム, ジョン キーナン,
Original Assignee
アップル コンピュータ, インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=22913863&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JPH10500509(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by アップル コンピュータ, インコーポレイテッド filed Critical アップル コンピュータ, インコーポレイテッド
Publication of JPH10500509A publication Critical patent/JPH10500509A/ja
Application granted granted Critical
Publication of JP3691515B2 publication Critical patent/JP3691515B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Abstract

(57)【要約】 オペレーティングシステム、イベントを生成するとともにイベントがコンピュータ内で発生したことを検出するイベントプロデューサと、イベントがコンピュータ内で発生した場合にその通知を必要とするイベントコンシューマを含むコンピュータにおいて、イベントを分配するシステムが提供される。このシステムは、少なくとも一つのイベントコンシューマが通知を受けるべき特定のイベントセットを格納する格納部と、イベントプロデューサからイベントを受信し、受信したイベントと格納されたイベントセットとを比較し、適切なイベントコンシューマに適切なイベントを分配するイベントマネージャ制御ユニットと、制御ユニットからイベントを受信し、制御ユニットに適切なイベントを適切なイベントコンシューマに分配させるディストリビュータとを有する。

Description

【発明の詳細な説明】 発明の名称 オペレーティングシステムにおけるイベント分配装置及び方法 発明の背景 本発明は、コンピュータ内で発生したイベントに関する情報を分配する装置及 び方法に関する。特に、コンピュータ内の適切なエンティティ(実体データや実 体プログラム等)へそれらイベントを分配すべく管理するイベントマネージャに 関する。 本説明において、イベントはコンピュータにおけるあらゆる発生を総称するも のであり、そのコンピュータもしくは接続されたコンピュータ上で実行されるプ ログラムは、そのイベントを通知される必要がある可能性がある。イベントは、 例えば以下のような処理の発生を含むものである。すなわち、キーストローク、 マウスクリック、ディスクの挿入及び排出、ネットワークへの接続及び切断、コ ンピュータのスリープモードシャットダウンへの移行、ウィンドウの出現(例え ば、ウインドウの内容が再表示される必要が生じた場合)、新しいファイルの生 成、ディレクトリの名称変更、ファイルの内容変更、ボリュームの空きスペース の変化等である。 割り込みやエラー状態も、不定形なイベントの例として扱われる。特に、割り 込みはプログラムによって処理されることが必要である。そこで、イベントマネ ージャは不適切な解決となる。割り込みを扱うコードは割り込みの割り込み処理 に基づいてイベントを発生することができる。例えば、コンピュータは、ユーザ がフロッピーディスクを挿入したときに、割り込みを発生することができる。割 り込み自身は、イベントマネージャによって伝播されることはまずないが、割り 込みハンドラが“ディスク挿入”イベントを発生することは道理にかなっている 。エラー状態は類似している。大部分の時間において、システム上のコンピュー タプログラムの一つが、エラーを扱うことは必要なことであり、それゆえ、より 直接的なポイントツーポイント(point to point)機構が適切である。しかしな がら、 その性質上より忠告的であるエラーが存在し、これらのエラーはイベントを介し て送られることが好ましい。例えば、幾つかのポータブルコンピュータは、バッ テリーが低下した場合に電力消費を低減するための種々の処理が実行される。全 てのソフトウエアプログラムにその状態を知らせるために、“バッテリー低下” と呼ばれるイベントを発行し、電力消費を低減可能な全てのソフトウエアに当該 イベントによる処理を実行させることは好ましいことである。 最近のあらゆる周知のオペレーティングシステムは、コンピュータ内で発生し たイベントを管理するための幾つかの種類のメカニズムを有する。しかしながら 、これらのメカニズムは、イベントを管理するのにポイントツーポイント方式を 用いている。すなわち、イベントを生成あるいは検出するエンティティが該イベ ントを使用するエンティティにイベントを分配する。これを達成するために、イ ベントを生成あるいは検出する全てのエンティティが、コンピュータ内において イベントが発生した場合にどのエンティティにそのイベントを通知しなければな らないかを把握していなければならない。この構成は、非常に負荷が大きく、非 効率的である。その上、イベントを生成或いは検出する各エンティティが、それ が生成或いは検出可能な全てのイベントに関する情報を持たなければならないと ともに、これらのイベントに関連する全てのエンティティに関する情報を持たな ければならないので、これは資源集中的(resource intensive)である。この情 報は、広範であり、かつ定常的に変化するものである。そして、このため、改造 を困難なものとしている。 更に、ポイントツーポイント方式は柔軟性に欠ける。ポイントツーポイントに おいては、もし新たなイベントのコンシューマが存在した場合、その新たなコン シューマを知っている新たなバージョンのプロデューサがリリースされなければ ならない。或いは、新たな種類のイベントが必要となった場合、その新たな種類 のイベントをどのように分配するかを知っている新たなバージョンのイベントマ ネージャがリリースされなければならない。 従って、オペレーティングシステムにおける全ての種類のイベントを効率的に 扱えて、特定の種類のイベントに関する情報を、そのような情報を必要としてい るプログラムに分配するための装置を提供することが望まれている。このために 、 システムパフォーマンスを向上すること、そのような情報を分配するために必要 とされる資源を低減することもまた望まれている。これらの目的を達成するため に、各イベントプロデューサが全てのイベントコンシューマを知ることを不要と し、イベントプロデューサとイベントコンシューマとの間のコミュニケーション を容易とすることが可能な、イベントを管理するための装置を提供することが望 まれている。 発明の要約 本発明によれば、上記目的及びその他の課題は、イベント管理の集中化によっ て達成される。特に、コンピュータ内のイベントの分配を扱うイベントマネージ ャを提供することによって達成される。 一つの実施形態によれば、コンピュータにおいてイベントが発生したことを検 出するとともにイベントを生成するイベントプロデューサと、コンピュータにお いてイベントが発生したときにその通知を必要とするイベントコンシューマとを 少なくとも1つずつ含むコンピュータに、イベントに関する情報を分配するため のシステムが導入される。このシステムは、イベントコンシューマが通知を受け るべき特定のイベントセットを格納する格納手段と、イベントプロデューサから イベントを受信し、格納されたイベンドセットと比較し、適切なイベントコンシ ューマに適切なイベントを分配するイベント管理制御手段と、制御手段からのイ ベントを受信し、適切なイベントコンシューマに適切なイベントを分配するため に制御手段を管理するディストリビュータとを備える。 また、別の実施形態によれば、コンピュータ内で発生したイベントを分配する ためのシステムが提供される。このシステムは、イベントがコンピュータ内で発 生したことを検出してイベントを生成するイベントプロデューサと、コンピュー タ内においてイベントが発生したときにその旨の通知を必要とするイベントコン シューマとを備える。このイベントコンシューマは第1及び第2のコンシューマ のクラスを備えている。本システムは、更に、イベントコンシューマが通知され るべき特定のイベントセットを格納する格納手段と、イベントプロデューサから イベントを受信し、格納されたイベントセットと比較し、適切なイベントコンシ ューマに適切なイベントを分配するイベント管理制御手段と、イベント制御手段 に応答して、イベントコンシューマへイベントを渡すべきか否かを決定する分配 手段とを備える。また、イベント管理制御手段は、格納されたイベントセットに 基づいて第1のタイプの適切なイベントコンシューマにイベントを送る第1の手 段と、上記分配手段に応答する第2のタイプの適切なイベントコンシューマに該 イベントを送る第2の手段とを備える。 また、他の実施形態によれば、コンピュータにおいて発生するイベントを分配 するための方法が提供される。この方法は、コンピュータ内のイベントプロデュ ーサによってイベントが検出されたことを決定するステップと、格納手段にイベ ントコンシューマが通知されるべき特定のイベントセットを格納するステップと 、イベント制御手段において上記イベントプロデューサからのイベントを受信す るステップと、受信したイベントを格納されたイベントセットと比較するステッ プとを備える。本方法は、更に、分配手段において制御手段からのイベントを受 信するステップと、該制御手段に適切なイベントを適切なイベントコンシューマ に分配させるステップと、制御手段を介して適切なイベントを適切なイベントコ ンシューマに分配するステップとを備える。 本発明の更に他の目的、特徴及び付随する利点は、本発明に基づいて構成され た実施形態に関して添付の図面を参照してなされる以下の詳細な説明を読むこと により当業者に明らかとなるであろう。 図面の簡単な説明 以下、方法及び装置に関する一例としての好適な実施形態を参照し、また添付 の図面を参照して本発明のより詳細な説明を行う。添付図面は以下の通りである 。 図1は、本発明を実行可能な典型的なコンピュータのブロック図である。 図2は、本発明の一実施形態に関るイベントマネージャの構成を示すブロック 図である。 図3は、本発明に係るイベントキューのデータ構造の典型的な実施形態を示す 図である。 図4は、本発明に係るサブスクリプションマトリクスの典型的な実施形態を示 す図である。 図5aは、本発明に係る加入データ構造の典型的な実施形態を示す図である。 図5bは、本発明に係るシーケンシャルコンシューマのエントリ構造の典型的 な実施形態を示す図である。 図6は、本発明に係るイベント種別ヘッダのデータ構造の典型的な実施形態を 示す図である。 図7は、本発明に係るイベントネームのデータ構造の典型的な実施形態を示す 図である。 図8は、本発明に係るイベントデータ構造の典型的な実施形態を示す図である 。 図9A、9B、9C、9Dは、本発明の一実施形態に係る、イベントプロデュ ーサの観点及びイベントディストリビュータの観点からのイベントハンドリング 処理を示すフローチャートである。 図10は、本発明の一実施形態に係るシーケンシャルコンシューマの観点から のイベントハンドリング処理を示すフローチャートである。 図11は、本発明の一実施形態に係るブロードキャストコンシューマの観点か らのイベントハンドリング処理を示すフローチャートである。 発明の実施の形態 総括的に言って、本発明は、コンピュータ内で発生したイベントに関るコンピ ュータ内の異なるエンティティ間の効率的なコミュニケーションの必要性を認識 するものである。特に、コミュニケーションにおいては、コンピュータ内のエン ティティに他のエンティティで生成されたイベントについて通知することを要求 される。これらのコミュニケーションを扱うために要求される方法は、関与する エンティティが他のエンティティを識別できないという理由によって複雑なもの となっている。また、この方法は、イベントを知る必要のあるエンティティの識 別情報や、発生し得るイベントのリストが定常的に変化してしまうという理由で 、更に複雑化されている。 本発明のイベントマネージャの一つの到達目標は、これらの種類のコミュニケ ーションの大部分をサポートする共通のサービスを提供することである。コミュ ニケーションされるべき情報はイベントとして参照される。一つの実施形態によ れば、イベントは3つの部分によって記述される。イベントの種類を示すイベン ト識別子、イベントが発生するエンティティを特定するイベントサブジェクト、 及び当該イベントがどのように発生したかを記述するインベント情報である。コ ンピュータ内の、その情報のソースとなるエンティティは、イベントのプロデュ ーサとして参照される。ここで、イベントプロデューサは、イベントを生成する 、もしくはコンピュータハードウエアがイベントを発生したことを検出する、コ ンピュータ上のあらゆるソフトウエアである。そして、イベントプロデューサは 、生成もしくは検出した各イベントの記述を生成する。一方、そのような情報を 受信することを必要とするコンピュータ内のエンティティはイベントコンシュー マとして参照される。特に、イベントコンシューマは、イベントが発生したとき に通知されることを必要とするとともに、そのイベントの記述を通知されること を必要とするあらゆるプログラムである。イベントのプロデューサとコンシュー マの間の接続を調整する仲介サービスは、イベントのディストリビュータとして 参照される。 本発明の一実施形態によれば、2つのクラスのイベントコンシューマがある。 これらは、ブロードキャストコンシューマ及びシーケンシャルコンシューマであ り、イベントに関る他のコンシューマとの関係において相違する。ブロードキャ ストコンシューマは他のコンシューマとは無関係である。それらは、それら自身 が最終的にはイベントを通知される限りにおいて、他のコンシューマが存在する か否か、どのような順序でコンシューマがイベントの通知を受けたかについて知 る必要がない。一方、シーケンシャルコンシューマは、他のコンシューマとの間 に非常に明確な関係を有する。これらは、これら自身がイベントを処理している 間、そのイベントに関して他のいかなるコンシューマも通知を受けないことを要 求する。また、それらがイベントを受信した順序によって影響を与える機能を要 求する。加えて、多くのシーケンシャルコンシューマはイベント自身を改造する 機能や、イベントが他のコンシューマによって受信されるの阻止する機能をも要 求する。コンシューマは、失敗すること無しにイベントに反応しなければならな いかどうかに基づいて、シーケンシャルかブロードキャストとして定義される。 特に、シーケンシャルコンシューマは、それが関連するイベントの種類に反応し なければならない。そこで、ディストリビュータは、シーケンシャルコンシュー マからそれらのイベントを引き止めるべきではない。例えば、通信プログラムは 、接続のドロップを通知するイベントのシーケンシャルコンシューマとなる。通 信プログラムはそのようなイベントに応答する必要があるからである。 ブロードキャストコンシューマは、典型的には、それが関与する特定のイベン トセットを有し、可能な限り簡単にこのセットから次のイベントを通知されるこ とを要求する。多くのブロードキャストコンシューマは、限定されたサブジェク トのセットのみに対して発生するイベントに関与する。そこで、本発明の一実施 形態は、イベントを、それらが「何に」よって発生されたかに基づいてフィルタ リングする方法を提供する。加えて、ブロードキャストコンシューマが関与する イベントセットは、関与の即時性がそうであるように、常時変化する。こうして 、本発明の一実施形態は、コンシューマに、当該コンシューマに配布されるイベ ントセットを変更することを可能とする方法を提供する。最後に、ブロードキャ ストコンシューマがイベントを修正するためにイベントマネージャ制御ユニット にポーリングを行うかどうかに関して、或いはそれらが同期して通知を受けるべ きか否かに関して明瞭なパターンは存在しない。それゆえ、一つの実施形態によ れば、これらの両方のオプションがサポートされる。 図1は本発明に基づくソフトウエアが実行される典型的なコンピュータを示す ブロック図である。コンピュータ10は、プロセッサ(CPU)12、外部記憶 装置14、ディスク格納装置16、入出力(I/O)コントローラ18、入力デ バイス20、出力デバイス22、メモリ24、上記エレメントを接続する共用シ ステムバス26を含む。図1には、読み易さの目的のために、ただ一つの入力デ バイス及び出力デバイスが示されている。しかしながら、コンピュータ10が、 1つより多くのそのようなデバイスを含み得ることは好ましいことである。プロ セッサ12、外部記憶装置14、ディスク格納装置16及びメモリ24は、バス 26及びI/Oコントローラ18を介して入力、出力デバイス20、22に接続 される。加えて、コンピュータ10はネットワーク27と通信可能に適用され得 る。 コンピュータ10のメモリ24内に格納されるのは、プロセッサ12によって 実行され得る複数のソフトウエアである。これらのソフトウエアの一つはオペレ ーティングシステム28である。一つの実施形態において、オペレーティングシ ステム28は、複数のアドレス空間を維持することのできるマイクロカーネルオ ペレーティングシステムである。イベントマネージャ30はオペレーティングシ ステム内に駐在する。典型的な実施形態において、本発明のコンピュータシステ ム10は、カリフォルニア州クペルチノのアップルコンピュータ社によるアップ ルマッキントッシュ(商標)コンピュータシステムであり、これはマイクロプロ セッサと、イベントマネージャ30を含むマイクロカーネルオペレーティングシ ステム28を格納するメモリを有する。コンピュータシステムのコンポーネント は、本開示に基づいて当業者がなしうる範囲において変化され得るものである。 なお、本発明はマッキントッシュ(商標)環境において説明されるが、本発明を DOS、Unix、或いは他のコンピュータ環境において実現することは、本発 明の範疇であり、また当業者の技術の範疇である。 本発明は、オペレーティングシステムにおいて発生するイベントを管理するイ ベントマネージャのアーキテクチャに関する。イベントマネージャのクライアン トはイベントコンシューマとイベントプロデューサを含む。すなわち、アプリケ ーションプログラムや、ファイルマネージャのようなオペレーティングシステム の種々の部分が含まれる。 一実施形態によれば、本発明はマイクロカーネルアーキテクチャのオペレーテ ィングシステムと協動する。ここで、カーネルはセマフォ同期メカニズムとメッ セージングシステムを提供する。メッセージングシステムは、メッセージオブジ ェクト及び、一つもしくはそれ以上のポートオブジェクトのセットを生成、維持 しする。メッセージングシステムは複数の特徴を有する。それは、各オブジェク トと協動されるべきクリエータ定義値(creator-defined value)を許可する。 メッセージングシステムは複数のオブジェクトが同じポートにマップされること 、メッセージがポートから受信されるかまたはそのポートに適切なタイプのメッ セージが送られたときにファンクションがコールされることを許可する。更に、 メッセージングシステムはメッセージの受信部に、メッセージが最初に送られる 先 のオブジェクトを決定し、そのオブジェクトのためのクリエータ定義値を導き出 すことを可能とする。そのようなマイクロカーネルアーキテクチャの一例は、N uKERNEL(商標)によって提供される。これはアップルマッキントッシュ (商標)コンピュータに用いられている。NuKERNEL(商標)システムは 、出願継続中の米国特許出願08/128,706(1993年9月30日出願 )の「コンピュータにおける仮想メモリの分散バッキングストアのためのシステ ム」、米国特許出願08/220,043(1994年3月30日出願)の「オ ブジェクト指向メッセージパッシングシステム及び方法」、そして本願の出願に 前後して、Thomas E.Saulpaugh及びSteven J.Szymanskiによって出願され る「オブジェクト指向メッセージフィルタリングのシステム及び方法」と題した 特許出願において説明されている。これら3つの特許出願は本願に参照として組 み込まれるものである. メッセージングシステムによれば,サービスがサーバによって提供され、その サービスを用いることを要求するソフトウエアはそのサーバのクライアントと呼 ばれる。メッセージはクライアントによって目標に送られ、サーバによって受信 される。メッセージはクライアントの代わりに機能を遂行するためにサーバに向 けられる。メッセージオブジェクトは、メッセージングシステムクライアントへ の種々の資源を表すアブストラクトエンティティである。これらのオブジェクト は、たとえば,サーバによって管理されるデバイス、ファイルもしくはウインド ウを表してもよい。クライアントはオブジェクトにメッセージを送り、これらオ ブジェクトはObjectIDにラベル付けされた識別子によって識別される。 メッセージポートはサービスを表すアブストラクトエンティティである。これ らのポートは、たとえば,デバイスドライバ,ファイルシステム、ウインドウマ ネージャを表すことができる。サーバはポートからのメッセージを受信し、これ らのポートはラベルPortIDによって識別される。オブジェクトはポートに割 り当てられる。オブジェクトに送られたメッセージはそのオブジェクトのポート において受信される。ポート及びオブジェクトはサーバの代わりにメッセージン グシステムによって生成される。オブジェクトの生成は、オブジェクトに送られ たメッセージがリトリーブされるポートを指定することを要求する。 一実施形態によれば、メッセージングシステムはイベントマネージャによって 使用される。このイベントマネージャにおいて、イベントディストリビュータは 協動するポート及びオブジェクトを有し、また、シーケンシャルコンシューマは 協動するポートおよびオブジェクトを有する。そして、そのイベントマネージャ はポートおよび、各ブロードキャストコンシューマについてこのポートに割り当 てられたオブジェクトを維持する。イベントはイベントプロデューサによってメ ッセージとしてディストリビュータの協動オブジェクトに受け渡される。シーケ ンシャルコンシューマは関連するポートからメッセージを受信し、ブロードキャ ストコンシューマはイベントを要求するために、そのブロードキャストコンシュ ーマのために維持されるオブジェクトを介して、メッセージをイベントマネージ ャに送る。加えて、一つの実施形態によれば、イベントマネージャは、シーケン シャルコンシューマを実施するためにメッセージングシステムにおいて提供され るメッセージフィルタメカニズムを使用する。各シーケンシャルコンシューマの ために、メッセージフィルタはディストリビュータのObjectID上に生成され る。フィルタを介して受信されたコードは、整合性をチェックし(何が提供され 、何によって提供されたかに関する)、シーケンシャルコンシューマに適切なメ ッセージを送る。そのようなメッセージフィルタリングメカニズムの一例は、上 述の、Thomas E.Saulpaugh及びSteven J.Szymanskiによる特許出願に記載 されている。 図2は図1に示されたイベントマネージャ30のアーキテクチャを示すブロッ ク図である。イベントマネージャ30(図2において破線で示される)は複数の イベントディストリビュータ340、複数のイベントコンシューマ及び複数のイ ベントプロデューサ300と機能上において接続され、これらと通信を行う。イ ベントディストリビュータの数は、システム内において可能な、異なるイベント の種類の数に対応する。 一つの実施形態によれば、複数のイベントコンシューマはブロードキャストコ ンシューマ310およびシーケンシャルコンシューマ360を含むことができる 。与えられたシステムが一つ或いは複数のブロードキャストコンシューマ、もし くは一つ或いは複数のシーケンシャルコンシューマのいずれかを含むこと、もし く はその双方を含むことは好ましいことである。 本発明によれば、イベントは”種別”によってグループ分けされ、たとえば、 全てのキーストロークは一つの種類のイベントであり、全てのマウスクリックは 別の種類のイベントであり、全ての新規ファイル作成は更に他の種類のイベント である。また、イベントを上記例とは異なるようにグループ分けすることもでき る。たとえば、特定キーの全ての押下は一つの種類のイベントである。これは、 少なくとも部分的に好ましい実施方法ではない。数種類のイベントがすぐに管理 不能となるからである。しかしながら、イベントをどのようにグループ分けする かの選定は、本開示により当業者がなし得る範囲で可変である。 イベントマネージャ30は、イベントマネージャ制御ユニット305及びデー タ構造を有する。データ構造はサブスクリプションマトリクス330、シーケン シャルコンシューマデータベース350、ブロードキャストコンシューマ310 と1対1対応で提供される複数のイベントキュー320、イベントディストリビ ュータ340と1対1対応で提供される複数のイベント種別ヘッダ331を含む 。イベントマネージャ制御ユニット305は、イベントマネージャデータ構造を 管理する少なくとも一つのソフトウエアルーチンからなる。 イベントプロデューサ300は、イベントを生成する、或いは他のエンティテ ィがイベントを生成したことを検出する、コンピュータ上のあらゆるソフトウエ アを表す。イベントプロデューサは、自身が生成もしくは検出した各イベントの 記述を生成する。各種のイベントは、複数のイベントプロデューサを有すること ができ、与えられたイベントプロデューサは複数種類のイベントを生成もしくは 検出することができる。イベントコンシューマは、ブロードキャストコンシュー マ310とシーケンシャルコンシューマ360を含み、イベントが発生したとき を通知されることを必要とするとともに、そのイベントの記述の通知を必要とす るあらゆるプログラムを表すものである。各種のイベントは、複数のイベントコ ンシューマを有することができ、与えられたイベントコンシューマは、複数種類 のイベントを通知されることを必要とする。 イベントコンシューマがイベントプロデューサとなること、或いはイベントプ ロデューサがイベントコンシューマとなることも有り得ることである。特に、あ る一つのソフトウエアがある一つのイベントを処理し、その応答として別の種類 のイベントを生成するというケースが多く存在する。たとえば、ファイルマネー ジャは“ディスク挿入”イベントを処理し、その挿入されたメディアにそのボリ ュームをマウントし、“新規容量”イベントを結果として生成する。与えられた プログラムが異なる種類のイベントに異なる加入を行うことも可能である。特に 、プログラムは幾つかの種類のイベントに対してはシーケンシャルコンシューマ として加入し、他の種類のイベントに対してブロードキャストコンシューマとし て加入することができる。 イベントキュー320はイベントマネージャ制御ユニット305によって保持 されるイベントのリストであり、各ブロードキャストコンシューマ310に対し 、ブロードキャストコンシューマが関与するイベントについての情報を保持する 。一つの実施形態によれば、イベントキュー320はファーストインファースト アウトリストとして構成される。また、たとえば、ディスク挿入イベントはマウ スクリックよりも常に高い優先度を有するとか、ディスクイベントプロデューサ はマウスイベントプロデューサよりも高い優先度を有するというような、イベン ト優先度やプロデューサ優先度によって並べられるリストのような他の適したス トレージ構造も使用可能である。図2において、イベントキュー#1はブロード キャストコンシューマ#1に関与するイベントのリストであり、イベントキュー #2はブロードキャストコンシューマ#2に関与するイベントのリストである。 他も同様である。図2には4つのブロードキャストコンシューマ/キューのペア が示されているが、所定の時刻において何組のブロードキャストコンシューマ/ キューのペアが定義されていてもよい。 一つの実施形態によれば、イベントキュー320は図3に示されるようなフォ ーマットで格納される。すなわち、先頭サブスクリプション、最終サブスクリプ ション、最大イベント、イベント配列である。先頭及び最終サブスクリプション のフィールドは、対応するブロードキャストコンシューマ310の先頭及び最終 サブスクリプションへのポインタである。イベントサブスクリプションは、特定 のブロードキャストコンシューマが通知を必要とする特定のイベントセットの記 述である。最大イベントのフィールドは、そのコンシューマに対するキューにお いて維持されるイベントの最大数である。一つの実施形態によれば、イベント配 列のサイズは、クッションを提供するために、示された最大数よりも若干大きく してある。イベント配列は、エレメントの配列の形態で、発生したイベントのリ ストを格納する。ここで各エレメントは、対応するブロードキャストコンシュー マが加入したイベントとなる。シングル及びダブルのリンクされたリストやダイ ナミックスタックのような他の適した格納構造を用いることができるが、一つの 実施形態において、キューはサーキュラバッファに格納される。 サブスクリプションマトリクス330は全ての存在するイベントサブスクリプ ションについて情報を保持する構成である。特に、サブスクリプションマトリク ス330は、ブロードキャストコンシューマが関与するイベントのサブスクリプ ションのトラックを保つのに用いられる。 一方、複数のシーケンシャルコンシューマ360が定義され得る。図2におい ては、3つのシーケンシャルコンシューマ#1、#2、#3が示されているが、 いくつのシーケンシャルコンシューマが定義されてもよい。シーケンシャルコン シューマデータベース350は複数のシーケンシャルコンシューマエントリから なる。これらシーケンシャルコンシューマエントリは、各シーケンシャルコンシ ューマ360が関与するイベントをならべたものである。 一つの実施形態において、サブスクリプションマトリクス330は図4に示さ れるような構成を有する。ここで、各サブスクリプションに対して格納される一 つのサブスクリプションストラクチャ3300が存在する。イベントキューやイ ベント種構造に関するサブスクリプションのsparse arrayやダイナミックリスト のような他の適切な形態が使用されてもよい。サブスクリプションマトリクスに 格納されたサブスクリプションストラクチャ3300はイベントキュー320及 びイベント種別ヘッダ331に接続される。特に、システムに知られた各イベン トの種類に対して一つのイベント種別ヘッダ331が存在し、こうしてイベント 種別ヘッダの数はイベントディストリビュータの数と等しくなる。イベント種別 ヘッダ331は、イベントマネージャ制御ユニット305が、どのディストリビ ュータが現在処理されているその種類のイベントを扱うかを決定するのに用いる 情報を格納する。レジスタディストリビュータ(後述)コールはイベント種別 ヘッダを生成する。 一つの実施形態によれば、サブスクリプション3300はサブスクリプション マトリクス330に図5aに示す形態で格納され、以下のフィールドを有する。 すなわち、イベントキューポインタ、イベント種別ヘッダポインタ、次サブスク リプション及び同一イベント、前サブスクリプション及び同一イベント、次サブ スクリプション及び同一キュー、前サブスクリプション及び同一キュー、イベン トサブジェクトである。イベントキューポインタは、サブスクリプションが属す るイベントキューへのポインタである。イベント種別ヘッダポインタは、サブス クリプションのサブジェクトであるイベントの種類に対するイベント種別ヘッダ へのポインタである。イベントサブジェクトはそのイベントが発生したストラク チャを識別する。残りのフィールドは他のサブスクリプションへのポインタであ る。 シーケンシャルコンシューマエントリの典型的なフォーマットは図5bに示さ れている。一つの実施形態によれば、エントリは以下のフィールドを含む。すな わち、イベント識別子、イベントサブジェクト、シーケンシャルコンシューマオ ブジェクトIDである。イベント識別子は、シーケンシャルコンシューマが関与 するイベントの種類を識別する。イベントサブジェクトはそのシーケンシャルコ ンシューマが関与するイベントのサブジェクトを識別する。シーケンシャルコン シューマオブジェクトIDは、シーケンシャルコンシューマデータベースにおい てエントリを生成したシーケンシャルコンシューマのObjectIDを識別する。 一つの実施形態によれば、シーケンシャルコンシューマデータベース350は、 サブスクリプションマトリクス330の一部であり、各シーケンシャルコンシュ ーマに対するサブスクリプションストラクチャへのポインタがある。図2に示さ れるもう一つの実施形態によれば、シーケンシャルコンシューマデータベース3 50は、上述のようにサブスクリプションマトリクス330とは別々に提供され る。イベントマネージャ制御ユニット305はデータ構造と検出されたイベント の比較を実行し、当該イベントがそのシーケンシャルコンシューマへ送られるべ きか否かを決定する。 一つの実施形態によれば、メッセージフィルタリングメカニズムが、イベント の発生時にそのイベントを適切なシーケンシャルコンシューマに提供するために 要求される情報を保持するのに用いられる。そのメカニズムは、上述のSaulpaug hとSzymanskiによる特許出願に記載されている。 一つの実施形態によれば、イベント種別ヘッダ331は図6に示されるフォー マットによって格納される。イベント種別ヘッダ331は以下のフィールドを有 する。すなわち、次ヘッダ、ディストリビュータオブジェクトID、イベント識 別子、先頭サブスクリプション、最終サブスクリプションである。次ヘッダフィ ールドは、イベント種別ヘッダの単一にリンクされたリストにおける次のヘッダ へのポインタである。ディストリビュータオブジェクトIDは対応するイベント ディストリビュータに対するディストリビュータのObjectIDである。イベン ト識別子は関連するディストリビュータが扱うイベントの種類を識別する。先頭 及び最終サブスクリプションフィールドは、当該イベントの種類のために定義さ れた先頭及び最終のサブスクリプションへのポインタである。 イベントディストリビュータ340は、適切なイベントを適切なブロードキャ ストコンシューマに分配するためにイベントサブスクリプションを解釈するプロ グラムである。一つの実施形態によれば、各種のイベントに対してイベントディ ストリビュータが存在する。特に、あらゆるイベントプロデューサによって検出 された全てのキーストロークを扱うイベントディストリビュータや、全てのマウ スクリックを扱うイベントディストリビュータを扱う別のイベントディストリビ ュータ等が存在する。 一つの実施形態によれば、どのブロードキャストコンシューマにイベントが通 知されるかはディストリビュータによって決定される。ディストリビュータがど のコンシューマに実際に通知するかに関して最終的な報告を行う間、イベントマ ネージャ制御ユニット305は、サブスクリプションマトリクス330を用いて 、イベントを要求するコンシューマのトラックをキープする。与えられたディス トリビュータは常に全ての関連するコンシューマに結果を与えるかもしれないし 、常に一つを選択するかもしれないし、各コンシューマをみていくつかを選択し 、他を排除するかもしれない。これは非常に柔軟なアーキテクチャを可能とする 。例えば、全てのアプリケーションがマウスクリックに関与する場合(それゆえ 全 てのアプリケーションがその種のイベントに加入しており)、唯一の(最前の、 或いはクリックされたウインドウに対するアプリケーションのいずれか)ものが 実際にそのイベントを受け取る。マウスクリックイベントディストリビュータは どの加入者が最前のアプリケーションであるかを決定し、そのイベントをそのア プリケーションのみに送る。他の例としては、いつ新規ファイルが生成されたか を知る必要のある数本のコードがあるような場合、全てのコードが通知されるべ きである。それゆえ、新規ファイルイベントディストリビュータは常に全ての加 入者にイベントを送る。 図2に示されるように、各ブロードキャストコンシューマ310は、イベント マネージャ制御ユニット305を介してそれぞれのイベントキュー320に機能 上接続されており、通信可能となっている。各ブロードキャストコンシューマ3 10はまた、イベントマネージャ制御ユニット305を介してサブスクリプショ ンマトリクスにも機能上接続されており、通信可能となっている。イベントキュ ー320の各々もイベントマネージャ制御ユニット305を介してサブスクリプ ションマトリクス330に機能上接続されており、通信可能となっている。シー ケンシャルコンシューマデータベース350はイベントマネージャ制御ユニット 305と機能上接続され通信可能であり、シーケンシャルコンシューマ360は イベントマネージャ制御ユニット305を介してシーケンシャルコンシューマデ ータベース350と機能上接続され、通信可能となっている。複数のイベント種 別ヘッダ331は複数のイベントディストリビュータ340と機能上接続され、 これら複数のイベントディストリビュータ340は複数のイベントプロデューサ 300と機能上接続されている。 各ブロードキャストコンシューマ310はイベントマネージャ制御ユニット3 05を用いてイベントキュー320を生成し、イベントが報告された時点からブ ロードキャストコンシューマがそのイベントを消費するまでの間、関与するイベ ントを保持する。各ブロードキャストコンシューマ310はイベントマネージャ 制御ユニット305へ通知を必要とする全てのイベントを記述した加入イベント のセットを通信する。この加入イベントのセットは、常時変更が可能である。イ ベントマネージャ制御ユニット305は、その情報を、イベントディストリビュ ータ340によって使用されるように、サブスクリプションマトリクス内に格納 する。 要約すると、本発明の一実施形態によれば、イベントプロデューサ300はイ ベントを検出し、イベント記述を生成する。そして、イベントマネージャ制御ユ ニット305をコールすることで、これらの記述をイベントマネージャ30に送 る。イベントマネージャ制御ユニット305はそのイベント記述を、シーケンシ ャルコンシューマデータベース350内のエントリに基づいて、各シーケンシャ ルコンシューマ360に順番に送る。イベントマネージャ制御ユニット305は 、その後、イベント記述を、そのイベントの種類に応答するイベントディストリ ビュータ340に送信する。イベントディストリビュータ340はイベントマネ ージャ管理部305をコールし、サブスクリプションマトリクス330内の情報 に基づいて適切と判断されたブロードキャストコンシューマ310にイベント記 述を送る。イベントマネージャ制御ユニット305は、最初にこれらの記述をイ ベントキュー320に格納することにより、適切なブロードキャストコンシュー マ310にイベント記述を与える。ブロードキャストコンシューマ310は、レ ディ状態である場合、対応するイベントキュー320内に格納された次のイベン ト記述をリトリーブするために、イベントマネージャ制御ユニット305をコー ルする。 アプリケーションプログラマインターフェース 本発明によれば、イベントコンシューマ、イベントプロデューサ及びイベント ディストリビュータは、イベントマネージャの製造者以外のサードパーティによ って記述されてよい。それゆえ、アプリケーションプログラマインターフェース (API)は、これらサードパーティがイベントマネージャとコミュニケーショ ンできるように仕様を提供するべく定義されている。以下は、本発明に係るイベ ントマネージャとのコミュニケーションを可能とするAPIの一実施形態である 。 イベント構造 一つの実施形態によれば、イベントは3つのパートから成る。すなわち、どの イベントが発生したか(イベント識別子)、何がイベントを発生したか(イベン トサブジェクト)、どのようにしてイベントが発生したか(イベント情報)であ る。処理可能なイベントセットが(オペレーティングシステムの他の部分の開発 者によって、或いはアプリケーションプログラマによって)拡張可能であること は望ましいので、“どの”の部分はイベントネームとして参照されるユニークな 識別子を定義する。一つの実施形態において、イベントネーム識別子は、OST ypeとして知られている4キャラクタコードとして実施される。本開示に基づ いて当業者によって置き換えられ得る他の適切な識別子が用いられてもよい。ま た、一つの実施形態によれば、識別子のペアであってもよい。特に、本開示にお いて記述された実施の形態は2つのOSTypeを用いる。図7に示されたイベ ントネーム識別子の構造45は典型的なものである。イベントサービス識別子は 、例えば文書処理プログラムといった、イベントを定義したサービスの“サイン ”もしくは名前として機能する。そして、イベント種別識別子は、例えば新規フ ァイル生成といったような、イベント自身を識別するものである。こうして、全 てのイベントの名前の集合が、名前空間として参照されるものであるが、サイン を制御することによって管理される。 イベント構造の“何が”のフィールドは、一実施形態においてイベントサブジ ェクトとして定義されるものであるが、これは定義することが難しい。イベント マネージャの全ての可能な使用が予期できず、それゆえ、“何が”として記述さ れるかもしれないハードウエアとソフトウエアエレメントの全ての形態も予期し 得なくなるからである。幸運なことに、イベントのこの部分のためにサポートさ れる必要のある共通のオペレーションは等価判定のためのテストである。すなわ ち、ここで等価とは、ブロードキャストコンシューマによって加入のために提供 された“何が”に対する等価性である。そして、イベントマネージャ制御ユニッ ト305は加入者の構造を知る必要はなく、未解釈のバイト配列として定義され 得る。本開示に基づいて当業者に明らかな範囲で、固定長、もしくは可変長フィ ールドのような、“何が”のフィールドの適切な形態が用いられ得る。 構造の“詳細”部分は、図8における情報フィールドであり、全体としてオー プンエンドとなっており、各イベントに関してのみならず、イベントの各瞬間に おいて潜在的に変化する。こうして、この構成の一つの実施形態はオープンエン ドのバイト配列となる。 図8は、本発明の一実施形態に係るイベント構造のブロック図である。イベン ト40は、イベントネーム、イベントサブジェクト、バイトカウント、イベント 情報フィールドから構成される。イベントネームフィールドは“どの”を特定し 、イベントサブジェクトフィールドは“何が”を特定し、バイトカウント及びイ ベント情報フィールドは“どのように”を特定する。イベント情報は実データで あり、バイト数はそのデータ長を表す。 システムコール イベントプロデューサは、イベントマネージャ制御ユニット305にイベント を委ねるためのシングルコールとともに供給される。特に、そのシングルコール はイベントメッセージをイベントマネージャ制御ユニット305に送信する。本 実施形態によれば、イベントプロデューサは、そのイベントに対する応答を必要 としているすべてのコンシューマがそのシングルコールの処理を行う機会がある ことの確認を受信する。特に、そのコールが返答されると、ディストリビュータ は、すべてのシーケンシャルコンシューマがそのシングルコールを確認したこと を認知し、すべてのブロードキャストコンシューマに対してそのイベントがキュ ーされる(enqueue)。他の実施形態によれば、この確認は必要とされず省略す ることができる。本実施形態によれば、このシングルコールは、二つのコール( ファインドディストリビュータ(FindDistributer)とプロデュースイベント (ProduceEvent))に分割し、この分割によって、その種類のイベントをどの ように分配するかを知るもの識別を知ることを効率的に行える。このAPIをテ ーブル1に示す。 テーブル1とそれに続くテーブルはC言語で記述された構造定義を示している 。ここでC言語の記述例を示しているが、本発明は、当業者によって他の適合し たプログラミング言語によっても実行される。加えて、テーブル1に参照される コードは本実施形態に従う本発明の一つの実行例である。本開示に基づいて、当 業者によって他の実行方法も可能であることが理解されるであろう。 テーブル1において、OSStatusは、通常、シングルコールが完了したか否か を示すために用いられるリータン値として用いられる様式である。OptionBits は、通常、シングルコールがどのように処理されるかにおける微小変化を特定す るためにユーザに許可するコールの入力パラメータとして用いられる。 コンシューマ 本発明の実施形態に従う上述の説明によれば、ブロードキャストコンシューマ とシーケンシャルコンシューマは、それらの関係において他のイベントのコンシ ューマと異なる。ブロードキャストコンシューマは、自身がイベントの通知を受 ける限りにおいて、他のコンシューマが存在するか否かを知る必要がないばかり か、どの順番でコンシューマがイベントを通知されるかを知る必要がない。シー ケンシャルコンシューマは、自身がイベントを処理する間は、イベントについて 通知される他のコンシューマが一つもないことを必要とし、一連のシーケンスの 中でイベントを受信する場合の影響に対する能力を必要とする。加えて、多くの シーケンシャルコンシューマは、他のコンシューマによってイベントが受信され ることを阻止したり、イベント自身を変更する能力を必要とする。 本実施形態によれば、APIは“何が”に基づいてイベントをフィルタリング する方法を提供する。これは、イベントを通知されるサブジェクトの設定を制限 するブロードキャストコンシューマの許可を誰が必要とするかに基づく方法であ る。加えて、APIは、ブロードキャストコンシューマが、常時、関与するイベ ントの設定を変更することを可能とする方法を供給する。このように、APIは 、ブロードキャストコンシューマがイベントを収集するためにイベントマネージ ャ制御ユニット305をポーリングすることをサポートし、あるいは非同期通知 機能を供給するメッセージングシステムの使用によってブロードキャストコンシ ューマが非同期に通知され得ることをサポートする。 本実施形態に従うインタフェースにおいて、コンシューマは、関連するイベン トのリストを表現するコンシューマ構造を生成するためにイベントマネージャ制 御ユニット305をコールする。これらのコンシューマ構造は、呼び出し側にと っては不明瞭である(即ち、その詳細はイベントマネージャ制御ユニット305 だけが知らされるものである)。 本実施形態に従えば、このコンシューマ構造はイベントキュー320である。 APIは、ブロードキャストコンシューマがイベントキューを生成するイベント マネージャ制御ユニット305をコールすることを許可する。特に、イベントキ ュー320は、CreateBroadcastConsumerのコールの結果としてイベントマネ ージャ制御ユニット305によって生成され、DisposeBroadcastConsumerの コールの結果として消去される。本実施形態のキューの詳細は図3に示される。 イベントキューは、コンシューマ名(特定のコンシューマを識別するためにディ ストリビュータによって使用される)、コンシューマのためにイベントキューに 格納することによってイベントマネージャ制御ユニット305がバッファする最 大イベント数を含んでいる。コンシューマは、無限量のバッファリングをイベン トマネージャ制御ユニット305には委ねられないので、この後者の値を供給す ることに応答する。この値が越えるべきとされた場合は、付加的なイベントが廃 棄される。そして、コンシューマが獲得する次のイベントは、イベントマネージ ャ制御ユニット305自身からのOverrunイベントである。テーブル2のコード 例 においてこの特徴を示す。 ブロードキャストコンシューマがEventConsumerIDを持つと、関連するイ ベントの種類に加入することになる。加入処理の一部において、ブロードキャス トコンシューマは、イベントの通知をコンシューマが必要とする場合を決定する ために照合されるべきイベントネーム(EventName)とイベントサブジェクト (EventSubject)の両方を特定できる。イベントディストリビュータ340に よるイベントサブジェクト(EventSubject)の照合の方法は、処理されるイベ ントの種類に依存する。本実施形態によれば、この照合は、バイト毎の比較によ って実行することができる。また、他の適応可能な実行方法を用いてもよい、例 えば、3つの種類が異なる加入目的が同一なイベントがある場合は、即ち、同一 のコンシューマにそれらのイベントが通知される場合は、それゆえ、これらのイ ベントは、たとえビットが実際に異なっていても同一のものとして比較される。 EventConsumerIDに関連するイベントのリストは、加入ブロードキャストコ ンシューマ関数(SubscribeBroadcastConsumer)の使用によっていつでも拡 張することができる。また、イベントの種別は、非加入ブロードキャストコンシ ューマ関数(UnsubscribeBroadcastConsumer)によってリストからいつでも 取り除くことができる。特定のイベントの種類が非加入である場合、既にそのコ ンシューマに収集された種類のイベントの手続は破棄される。これをテーブル3 に示す。 イベント処理 ホールドイベント(HoldEvents)/アンホールドイベント(UnholdEvents )コールは、イベント処理において、ある特殊なケースを平易にするために供給 される。イベントの種類が保持されると、ブロードキャストコンシューマのため にこれらのイベントの依頼が収集される。しかしながら、それらのイベントが保 持されなくなるまで、それらのイベントはConsumeコールによるユーザへの返答 はなされない。この方法においては、イベントマネージャが特定の種類のイベン トがまだブロードキャストコンシューマと関連する状況を取り扱うが、これらの イベントの処理は一時的に不可能となるか、あるいは優先されない。他の実施形 態によれば、同様の機能が2つに分割されたブロードキャストコンシューマID を生成することによって提供され得る。これらの一方は非保持のイベントであり 他方は保持可能なイベントである。ブロードキャストコンシューマは、第2のE ventConsumerIDから消費する場合を選択することができる。しかしながら、 本実施形態では完全には実用的ではない、なぜなら、何がどのカテゴリに属する かを常に予想することはできないからであり、また、保持のための決定処理が、 しばしばイベントの処理サイクルから完全に取り除かれてしまうからである。本 実施形態に従うホールドイベント(HoldEvents)/アンホールドイベント(U nholdEvents)コールは、その決定処理を分割するための平易なインタフェ ースを供給する。これらのコールをテーブル4に示す。 最終的に、イベントに関係するリストが構築されると、ブロードキャストコン シューマは同期コールと非同期コールの二つのコールの一つを用いて収集された イベントを消費する。両方のコールは、キューを特定するためのコンシューマの objectIDを特定し、イベントがコピーされるバッファを提供する。更に、Asy ncコールが、新しいイベントでバッファが満たされた場合に実行される動作を記 述するEventNotifucation構造を要求する。一つの実施形態によれば、Event Notifucation構造とEventInformationPtrはオペレーティングシステムのカ ーネルによって定義される型である。供給されたバッファがイベント記述を保持 するのに十分な大きさでない場合、記述の主要な部分がバッファへとコピーされ る。そして、残りの記述は捨てられる。これらのコールをテーブル5に示す。 FlushEventsは、ブロードキャストコンシューマのために収集されたイベン トで、まだ消費されていないイベントを取り除くために用いられる。ブロードキ ャストコンシューマは、イベントネーム(EventName)(ワイルドカードを用 いることができる)とイベントサブジェクト(EventSubject)を特定する。イ ベントマネージャ制御ユニット305は、記述が照合されたイベントと未処理の 収集されたイベントを処分するが、処理はしない。このコールをテーブル6に示 す。 シーケンシャルコンシューマはAPIに対してかなり異なる要求を有している 。それらはイベントの伝達のボトルネックとなるように機能するので、それらの APIは、最大スループットを得るように設計されるべきであり、イベントマネ ージャ制御ユニット305が次のシーケンシャルコンシューマあるいはブロード キャストコンシューマにイベントを渡すことができるときを提示するために、各 イベントの応答を要求するように構成すべきである。これに基づき、本発明の一 実施形態のAPIでは、イベントは適切なコミュニケーション機能を用いて、メ ッセージとしてシーケンシャルコンシュームに渡されるものとし、これは、例え ば、上述で説明したマイクロカーネルオペレーティングシステムによって供給さ れるメッセージングシステムのようなものである。本実施形態によれば、シーケ ンシャルコンシューマは、次のイベントの要求をイベントマネージャ制御ユニッ ト305に送信し、応答のメッセージでイベント自身が返送される。本開示に基 づいて、当業者が採用し得る他の実行方法でも実現可能である。一実施形態によ れば、 シーケンシャルコンシューマは、迅速な応答時間を保証するために受信動作とプ ログラムの実行が重複することを許容する受任機能を介してあるいは非同期受信 によってメッセージを受信する。そのようなメッセージングシステムの一例は、 NuKERNEK(登録商標)によって提供される。 一実施形態によれば、メッセージングシステムがファンネリングメカニズム( funneling mechanism)を提供し、シングルポートと協動する複数のオブジェク トを有しているので、加入コールがシーケンシャルコンシューマに対しは必要と されない。その代わり、シーケンシャルコンシューマは、関連する各イベントの 種類に対するオブジェクトを生成することが要求され、また、これらのオブジェ クトはコンシューマが所望するあらゆる方法でポートと関連付けられ得る。これ らのオブジェクトは、後述するAPIを用いてイベントの種類に関連付けられる 。上記構成の他の適切な実施形態も本開示に基づいて当業者が適用し得る範囲で ある。 一実施形態に従えば、コンシューマの実際のシーケンスは、メッセージフィル タリングメカニズムの使用によって、リストメッセージ、スクリーンメッセージ 、変更メッセージ、或いは再発送メッセージに明瞭に提供される。メッセージフ ィルタは、他の処理に優先してあるフィルターの使用を許可するために所定の優 先順位で順序付けすることができる、合成されたメッセージインターセプション デバイス上のソフトウェアである。このメカニズムの詳細は、上記のSaulpaugh とSzymansk1の名で出願された出願に記載されている。 InstallSequentialConsumerコールは、与えられた名前とサブジェクトのイ ベントが与えられたオブジェクトに渡されるべきであることをイベントマネージ ャ制御ユニット305に報告するために用いられる。名前、順序、オプションパ ラメータは、これらのイベントと関係のあるシーケンシャルコンシューマにイベ ントを与える実行の順番を決定するために用いられる。RemoveSequentialCon sumerコールはインストールされたシーケンシャルコンシューマを取り除くため に用いられる。インスタレーションコールとリムーバルコールをテーブル7に示 す。 一度シーケンシャルコンシューマがインストールされ、イベントを受信し或い は消費すると、イベントマネージャ制御ユニット305が次のシーケンシャルコ ンシューマ(シーケンシャルコンシューマがそれ以上ない場合にはブロードキャ ストコンシューマ)にイベントを渡すことができるように、シーケンシャルコン シューマは、そのイベントの処理を終えたときを提示することが必要である。特 に、シーケンシャルコンシューマは、イベント処理を完了したことを示すNext Consumerコールを、イベントマネージャ制御ユニット305に対して作成する 。イベントマネージャ制御ユニット305は、次のシーケンシャルコンシューマ 、あるいは適切なブロードキャストコンシューマにイベントを渡す。そのイベン トを渡す代わりに、シーケンシャルコンシューマは、あらゆる様式のあらゆるコ ンシューマに対し分配されないようにイベントのハンドリングを宣言する能力を 有する。特に、シーケンシャルコンシューマは、上記のイベントの分配を禁止す るためのEventHandledコールを生成することができる。これらの二つのコール をテーブル8に示す。NextConsumerは、メッセージングシステムコールである ContinueMessageを用いる。このContinueMessageは、メッセージングシ ステムにおいてフィルタチェーンにおける次のオブジェクトに継続する自動フォ ワードコマンドとして実行される。また、EventHandledは、メッセージングシ ステムコールであるReplyToMessageを用いるこれは、チェーンにおけるすべ てのオブジェクトがそのメッセージを処理したことを特定する。このメカニズム の詳細は、上記のSaulpaughとSzymanskiの名で出願された出願に記載されてい る。 ディストリビュータ 上述したように、各ディストリビュータは異なる種類のイベントを処理するも のである。各ディストリビュータはそれゆえ、処理すべきイベントを知っている 必要がある。 一つの実施形態によれば、大部分のイベントが適切なシーケンシャルコンシュ ーマを介して発送され、このイベントに関連することを提示した全てのブロード キャストコンシューマにそのコピーが与えられる。デフォルト時の実施によれば 、イベントディストリビュータによるあらゆるイベントサブジェクトの整合チェ ックが全ての値に渡る直接的なバイト比較によってなされ、どのコンシューマが そのイベントを通知されなければないかを決定する。本開示に基づいて当業者に 明らかな範囲で、他の適切な実施の形態が採用され得る。 一つの実施形態によれば、デフォルトディストリビュータは、ある種のイベン トを全てのブロードキャストコンシューマに渡すべく提供される。例えば、バッ テリー低下イベントのようなイベントは、常に全ての関与するコンシューマに分 配される。デフォルトディストリビュータによって分配され得る各イベントはテ ーブル9において示されるRegisterEventWithDefaultDistributorコールに よって、デフォルトディストリビュータに登録されなければならない。このコー ルは、システムの稼働中に、イベントの種別毎に1回ずつ行なわれ、それらのイ ベント を担当するデフォルトディストリビュータに通知される。 カスタムディストリビュータは、イベントマネージャ制御ユニット305に登 録され、デフォルトディストリビュータで扱われない種類のイベントを扱う。一 つの実施形態によれば、カスタムディストリビュータをイベントマネージャ制御 ユニット305に登録することは、イベントをオブジェクトに連携させるコール によって遂行される。ここで、そのコールは、関連するイベントが発生した場合 にイベントマネージャ制御ユニット305がどのディストリビュータでそのイベ ントの分配を扱うかを知ることができるように、イベントをオブジェクトに連携 させるものである。カスタムディストリビュータは独立的にロードされたサービ スであり、プロデューサとディストリビュータ間の全てのコミュニケーションが メッセージの送出及び受信によって達成される。処理及び分配を行うべくイベン トを受信するために、各ディストリビュータはObjectIDを提供しなければな らない。イベントは、そのObjectIDに対してプロデューサから送られること になる。カスタムディストリビュータの登録及び抹消のためのコールをテーブル 10に示す。 どのブロードキャストコンシューマがプロデューサによって報告されたイベン トの通知を受け取るべきかを決定する処理には、ディストリビュータがより複雑 な試行錯誤を適用する必要のある幾つかのケースがある。サブスクリプションマ トリクスにおける情報は、ディストリビュータがどのブロードキャストコンシュ ーマに通知するかを決定するのを補佐するものであり、ディストリビュータにと って有効である。一実施形態によれば、ディストリビュータは、それを要求して いないブロードキャストコンシューマにイベントを与えることはできない。そし て、ディストリビュータはサブスクリプションマトリクスを調べ、そのイベント を要求しているコンシューマを見つける。しかしながら、ディストリビュータは 、それを要求したブロードキャストコンシューマのサブセットのみにイベントを 与えることができる。ディストリビュータがイベントの分配に影響する必要があ るであろうこの種の方法は以下のものを含む。 1. イベントサブジェクトのマッチングをとる方法は、直接的なバイ ト比較よりも複雑である。考慮される必要のあるサブジェクト識別におけるサブ ストラクチャがあるか、もしくは、扱われる必要のあるワイルドカード処理の幾 つかのフォームがある。 2. 特定のイベントは、おそらく一つであろうが、関連を提示してい るブロードキャストコンシューマのサブセットに送られることを必要としてよい 。例えば、マウスイベントは、それに関与するアプリケーションのうちの一つの 適切なアプリケーションに送られる必要がある。 3. 関連付けられたイベント結合されることを必要としてもよい。例 えば、同じウインドウに対する複数の領域更新イベントは、アプリケーションが そのイベントを実際に処理するまで結合されるべきである。 なお、これらの可能な形態は、シーケンシャルコンシューマには何の影響も及 ぼさない。シーケンシャルコンシューマが必要とされる理由の一つが分配のプロ セスに影響を与えるものだからである。言い換えれば、シーケンシャルコンシュ ーマは、それらが関与するイベントの種類に対して反応しなければならないので 、そのようにラベル付けされる。こうして、ディストリビュータが特定のシーケ ンシャルコンシューマにイベントを送らないように選択するという状況はなくな る。 それゆえ、イベントマネージャ制御ユニット305は全ての生成されたイベント を、ディストリビュータに手渡す前に、シーケンシャルコンシューマのガントレ ット(gauntlet)を介して送る。 図9A、9B、9Cは、本発明の実施形態にかかるイベントプロデューサの観 点、及びイベントディストリビュータの観点からのイベントハンドリング処理を 示すフローチャートである。 図9Aに示されるように、イベントプロデューサは最初にイベントを検出、も しくは生成する(ステップ600)。イベントプロデューサはイベント記述を生 成する(ステップS602)。そして、ブロードキャスト及びシーケンシャルコ ンシューマの双方の、適切なイベントコンシューマにイベントを送るために、イ ベントマネージャ制御ユニット305をコールする(ステップ604)。 図9Bは、本発明の一実施形態にかかるイベントマネージャ制御ユニット30 5によるイベントの処理を示す。以下では、コンピュータのエレメント間にイベ ントを送信するためにメッセージングシステムを使用した場合を説明するが、本 開示によって当業者には明らかとなる他の適切な形態によって実施されてもよい 。 ステップ606において、イベントプロデューサが、そのイベントがハンドリ ングされた時点を知ることを必要としているか否かを判断する。すなわち、その 要求を、同期或いは非同期のいずれで処理するかを判断する。もし、イベントプ ロデューサがいつそのイベントがハンドリングされたかを知る必要がなければ( そのコールの入力パラメータによって示される)、プロデューサに戻され(ステ ップ608)、そして、この図における残りのステップを非同期にて処理する( ステップS610)。イベントプロデューサが知ることを必要とする場合は、同 期による処理が行なわれる(ステップ612)。 テストは、ステップ606で送られたメッセージを非同期メッセージとするこ とによって実施される。さもなければ、それは同期メッセージである。特に、イ ベントプロデューサは、検出されたイベントに関るメッセージを送るためにイベ ントマネージャ制御ユニット305をコールする。プロデューサは応答を待つか 否かを示す値を有する入力パラメータを提供する。このケースにおいて、メッセ ージは同期して送られる。さもなければ、メッセージは非同期で送られる。取り 決めに従って、メッセージが同期として送られると、イベントマネージャ制御ユ ニット305は、そのメッセージが全てのシーケンシャルコンシューマによって 処理されるまで、コールから戻らない。もし、メッセージが非同期で送られるな ら、メッセージが送られるや否や、イベントプロデューサがメッセージが処理さ れたかどうかを知り得ないうちに、イベントマネージャ制御ユニット305は、 イベントプロデューサに戻る。 ステップ614において、イベントマネージャ制御ユニット305は、シーケ ンシャルコンシューマデータベース350内のイベント記述にマッチするエント リを有する各シーケンシャルコンシューマにイベントを送る。これは一度に一回 行なわれ、各シーケンシャルコンシューマは、イベントマネージャ制御ユニット 305をコールすることにより、次のシーケンシャルコンシューマへ送られるメ ッセージを有することができるか、あるいはイベントが処理されたことを宣言す ることができる。こうして、シーケンシャルコンシューマがそのイベントの処理 を完了した後、シーケンシャルコンシューマはそのイベントの処理を継続するべ きかどうか、もしくはそのイベントが処理されたのでそのイベント処理をストッ プするかどうかを示す(ステップ616)。そして、シーケンシャルコンシュー マがイベントをハンドリングしているかどうかの判断がイベントマネージャ制御 ユニット305によってなされる(ステップ618)。もしハンドリングされて いるならば、他のコンシューマへのイベントの分配が禁止され、処理はプロデュ ーサをコールする処理へ戻る。シーケンシャルコンシューマがイベントのハンド リングを行っていないことを示すと、シーケンシャルコンシューマが最後のもの かどうかを判断する(ステップ622)。もし最後でなければ、ディストリビュ ータはステップ616へ戻り、次のシーケンシャルコンシューマへイベントを分 配する。 次に図9Cを参照する。全てのシーケンシャルコンシューマへイベントが分配 されると(ステップ622)、イベントマネージャ制御ユニット305は、ブロ ードキャストコンシューマに分配するために、そのイベントの種類に応答するイ ベントディストリビュータにイベントを送る(ステップ624)。イベントはデ ィストリビュータへメッセージとして送られる。全てのフィルタがそれを処理し 、 何れもが応答しなくなった場合に(それによって、イベントがハンドルされたこ とを宣言する)、メッセージングシステムはそのイベントをディストリビュータ へ自動的に通過させる。例えば、この時点でイベントマネージャ制御ユニット3 05にイベントディストリビュータをコールさせるというような、本開示に基づ いて当業者が想到し得る他の適切な実施が可能である。 プロセス624を図9Dに示す。ディストリビュータはこのプロセスにおいて どのようにイベントを分配するかを決定する。一つの実施形態によれば、これは 、加入したコンシューマのどれがイベントを得るべきであるかを見極めるために 、その種類のイベントに対する全加入者を順番にならべるために、イベントマネ ージャ制御ユニット305をコールすることによってなされる。一つの状態は、 ディストリビュータが全てのもしくはいくつかのコンシューマにイベントを送る 必要がある場合であり、しかしながら、コンシューマが受信し処理するまでに、 イベントデータ自身を修正することを可能とする必要がある場合である(ステッ プ6240)。例えば、ウインドウ環境において、ウインドウが露出した場合( 例えば、一番上のウインドウが終了した場合)、ウインドウ露出イベントが生成 される。露出されたウインドウの別の部分がさらに露出され得るかもしれないの で、ウインドウ露出イベントディストリビュータは、そのイベントが処理されて しまうまでに、このイベントを修正することを可能とすることを要求する。この 場合、ディストリビュータは、実際のメッセージのためにプレイスホルダ構造を 提出し、これを適切なコンシューマに与える。 プレイスホルダ構造は、イベントを識別するためにディストリビュータによっ て用いられるレファレンスコンスタントフィールド、RefConと、ディストリビ ュータから実データを得るために用いられるObjectIDを含む。ディストリビ ュータは、プレイスホルダを生成する際にRefConフィールドの値を提供する。 そして、その値を取得し、実際のイベント記述を再度提供することを可能とする 。こうして、コンシューマが実際にプレイスホルダを消費しようとするとき、イ ベントマネージャ制御ユニット305はメッセージをRefConを含む与えられた ObjectIDに送る。ディストリビュータは、バッファに、現在の実際のイベン ト記述を入れ、コンシューマのバッファはConsumeへ渡される。この機能は選択 さ れた或いは全てのコンシューマの双方に提供されるので、テーブル11に示すよ うに2つのコールが提供される。全てのコンシューマがプレイスホルダを用いて イベントを通知されるならば(ステップ6248)、GivePlaxeholderToAll Consumersコールが使用される(ステップ6250)。もし、選択されたコンシ ューマのみがプレイスホルダを用いてイベントの通知を受けるのであれば(ステ ップ6248)、GivePlaxeholderToSelectConsumersコールが使用される (ステップ6252)。 もしディストリビュータがイベントデータを修正する必要がないなら、ステッ プ6240における判断の結果は「否」となる。そして、ステップ6242にお いて、全てのブロードキャストコンシューマがイベントを受信すべきかどうかを 判断する。なお、このような場合が常であるなら、自動的に全てのコンシューマ に通知するデフォルトディストリビュータを用いることは好ましいことである。 他方、特殊な処理がイベントのサブセットのみに要求され、そのサブセット内に 存在しないあらゆるイベントに要求されると、分配メカニズムを起動するために GiveEventToAllConsumersコールが使用され得る(ステップ6244)。こ のコールをテーブル12に示す。 メッセージを受信するためにディストリビュータがコンシューマのサブセット を選択することを必要とする状況は次のいずれかの理由で発生する。すなわち、 ディストリビュータが整合するいかなるサブジェクトをも処理する必要があるた め、あるいは、イベントの性質がステップ6240におけるテストへの応答がな いことによって検出された分配を制限することを要求するために発生する。特に 、サブジェクトフィールドのバイト毎の比較が要求されない場合、サブジェクト が整合するかどうかをディストリビュータが判断することになる。これを達成す るために、GiveEventToSelectConsumersコールが用いられる(ステップ62 46)。そして、フイルタ関数、ConsumerFilterFunction、が、その種のイベ ントに加入している各コンシューマについてコールされる(それらが記述するサ ブジェクトにかかわらず)。もし、イベントがそのコンシューマに与えられるべ きものであれば、その関数は「真」を返す。そう出なければ、「偽」を返す。こ のコールをテーブル13に示す。 ステップ6244、6246、6250、6252における各コールの後に、 ルーチンはイベントマネージャ制御ユニット305に戻る(ステップ6254) 。 再び、図9Cを参照する。ステップ625において、イベントマネージャ制御 ユニット305は図9Dにおいてどのコールが使用されたかに従ってイベントを エンキューする(enqueue)。一つの実施形態によれば、ファーストイン、ファ ーストアウト(FIFO)の順序でイベントはエンキュー、デキューされる。イ ベントコンシューマがイベントに関して動作レディ状態となると、イベントキュ ーにおける最上位のイベントをデキューして、そのイベントの要求に従った処理 がなされる。 もし、図9Bの各ステップが同期して処理される(ステップ626)と、ルー チンはステップ628にてプロデューサに戻る。さもなければ、ルーチンはプロ デューサのメッセージに応答する(ステップ630)。 図10は、本発明の一実施形態にかかるシーケンシャルコンシューマの観点に よるイベントハンドリングプロセスを示すフローチャートである。まず、シーケ ンシャルコンシューマはイベントマネージャ制御ユニット305をコールし、イ ンストールする(ステップ700)。本発明の一つの実施形態によれば、コンシ ューマはObjectIDを提供する。ObjectIDは、イベントがメッセージとして 送信される先を示す。例えば、イベント記述へのポインタとともにコールされる ファンクションポインタをコンシューマが提供可能とするというような、他の適 切な形態を採用することも可能である。また、このような適切な実施は、本開示 に基づいて当業者がなし得る範囲のものである。 シーケンシャルコンシューマは、イベントが発生するのを待つ間は、独自に処 理を行う(ステップ702)。一つの実施形態によれば、イベントがメッセージ として送られるので、与えられたオブジェクトを通してメッセージを受理、受信 するためにシーケンシャルコンシューマがメッセージングシステムをコールする 。プロセスが同期かあるいは非同期かによって、別のことがシーケンシャルコン シューマによってなされてもよい。 イベントが受信されたとき(ステップ704)、シーケンシャルコンシューマ は適切な方法でイベントに関して動作する(ステップ706)。そして、シーケ ンシャルコンシューマは、それが他のコンシューマ(シーケンシャルもしくはブ ロードキャスト)にこのイベントを報告するかどうかを、或いはそのイベントを 十分にハンドルしたので他のコンシューマはそれを見るべきではないのかどうか を判断する(ステップ707)。もしそのイベントが完了しており、他のものが それを見るべきでないと判断されたなら、イベントマネージャ制御ユニット30 5をコールすことによって、イベントハンドラメッセージが送られる(ステップ 711)。さもなければ、シーケンシャルコンシューマはイベントマネージャ制 御ユニット305をコールし、イベントが次のコンシューマに受け渡されるべき であることを通知する(ステップ709)。シーケンシャルコンシューマは、ス テップ702の待ち状態へ戻り、ループを形成する。 図11は、本発明の一実施形態に係るブロードキャストコンシューマの観点か らのイベントハンドリングプロセスを示すフローチャートである。ブロードキャ ストコンシューマはまず、イベントマネージャ制御ユニット305をコールし、 CreateConsumerコールを用いてそれ自身を登録する。登録が行われると、ディ ストリビュータは、与えられたObjectIDによって参照されるオブジェクトを 介してメッセージの受信を開始する。これらのメッセージの内容は、それらイベ ントを検出する或いは生成するプロデューサによって生成された記述である。デ ィストリビュータはイベントマネージャ制御ユニット305に、現在存在するコ ンシューマのどれがイベントを受信すべきかを提示しなければならない。一つの 実施形態において、メッセージングシステムはイベントをプロデューサより送り 出し、シーケンシャルコンシューマを経てディストリビュータに届ける。ディス トリビュータはイベントマネージャ制御ユニット305を用いて適切なキューに イベントを置く。 イベントマネージャ制御ユニット305はコンシューマのためにイベントキュ ーを生成し、戻る(ステップ802)。そして、ブロードキャストコンシューマ は、イベントマネージャ制御ユニット305をコールし、それが関連する特定の イベントの種類に加入する(ステップ804)。イベントマネージャ制御ユニッ ト305は、コンシューマのトラックをキープするためにサブスクリプションマ トリクスにエントリを追加する(ステップ806)。 コンシューマはイベントマネージャ制御ユニット305をコールし、次のイベ ントを獲得する(ステップ808)。一実施形態によれば、これは、イベントマ ネージャ制御ユニット305へのメッセージの送信をコンシューマに行わせるこ とによって実施される。このメッセージに対する応答は、そのコンシューマに対 する次のイベントとなる。コンシューマは、これを同期もしくは非同期でおこな うオプションを有する。そして、コンシューマはメッセージを同期或いは非同期 のいずれかで送る。なお、本開示に基づいて当業者が行える範囲で他の適切な形 態を適用してもよい。コンシューマは、イベントに対応する動作を行い(ステッ プ810)、処理はステップ808に戻りループを形成する。 前述の詳細な実施形態は本発明の全体の性質を十分に開示するので、当業者は 、現在の知識を適用することにより、総括的な概念から逸脱することなく、直ち に修正したり、種々のアプリケーションに適応させたりすることができる。それ ゆえ、そのような適応化、改造は、開示された実施形態の手段及び等価の範囲に 含まれるべきものである。用語の表現は説明の目的で採用されたものであり、本 発明を限定するものではないことは理解されるべきである。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AP(KE,MW,SD,SZ,UG), AM,AT,AU,BB,BG,BR,BY,CA,C H,CN,CZ,DE,DK,EE,ES,FI,GB ,GE,HU,IS,JP,KE,KG,KP,KR, KZ,LK,LR,LT,LU,LV,MD,MG,M N,MW,MX,NO,NZ,PL,PT,RO,RU ,SD,SE,SG,SI,SK,TJ,TM,TT, UA,UG,US,UZ,VN (72)発明者 ソルポー, トーマス, ユージーン アメリカ合衆国 カリフォルニア州 95120 サン ホセ, ブレト ハルト ドライブ 6938 (72)発明者 キーナン, ウィリアム, ジョン アメリカ合衆国 カリフォルニア州 94061 レッドウッド シティ ウエスト ウッド ストリート 1287

Claims (1)

  1. 【特許請求の範囲】 1. コンピュータ内で発生したイベントを検出し、イベントを発生する少な くとも1つのイベント生成部と、コンピュータ内でイベントが発生したときにそ の通知を必要とする少なくとも1つのイベントコンシューマとを含み、イベント を分配するコンピュータにおいて、 前記少なくとも1つのイベントコンシューマが通知を受けるべき特定のイベン ドセットを格納する格納手段と、 前記イベント生成部からのイベントを受信し、受信したイベントと格納された イベンドセットとを比較し、適当なイベントコンシューマに適切なイベントを分 配するイベント管理制御手段と、 上記制御手段からのイベントを受信し、前記制御手段を指揮して、適当なイベ ントコンシューマに適切なイベントを分配させる分配手段と を備えることを特徴とするイベント分配システム。 2. 前記分配手段はコンピュータ内で発生し得る各イベントの種類毎に分配 モジュールを備える ことを特徴とする請求の範囲第1項に記載の装置。 3. 複数のイベントコンシューマがコンピュータ内に含まれ、複数のコンシ ューマは、 互いのコンシューマ間について関連性を有しないブロードキャストコンシュー マと、ここで、ブロードキャストコンシューマは、他のコンシューマに対して独 立に、且つ、コンシューマがイベントの通知を受けた順には無関係に動作し、 互いに関連付けられたシーケンシャルコンシューマと、ここでシーケンシャル コンシューマは、それぞれが自身の処理を行なっている間は、イベントが他のコ ンシューマには通知されないことを要求し、他のコンシューマに関連するイベン トを受信したときには影響を及ぼす機能を要求する ことを特徴とする請求の範囲第1項に記載の装置。 4. 前記分配手段は、 ブロードキャストコンシューマがイベントを受信するまで、後続するイベント に基づいてそのイベントをモディファイする権利と共にブロードキャストコンシ ューマにイベントを送信するかを判定する手段と、 前記判定する手段による肯定判定に応じて、適当なブロードキャストコンシュ ーマに対してモディファイする権利と共にイベントを分配する手段とを備える ことを特徴とする請求項の範囲第3項に記載の装置。 5. 前記分配手段は、 イベントをブロードキャストコンシューマに、そのイベントのモディファイ権 利と共に送信するかを判定する第1の手段と、 前記判定する第1の手段による肯定判定に応じて、そのイベントが全てのブロ ードキャストコンシューマに渡されるものかを判定する第2の手段と、 前記判定する第2の手段による肯定判定に応じて、全てのブロードキャストコ ンシューマにプレイスホルダとともにイベントを分配する手段と、 前記判定する第2の手段による否定判定に応じて、選択されたブロードキャス トにイベントをプレイスホルダとともに分配する手段と、 前記判定する第1の手段の否定判定に応じて、そのイベントが全ブロードキャ ストコンシューマに対して送信するものかを判定する第3の手段と、 前記判定する第3の手段による肯定判定に応じて、そのイベントを全てのブロ ードキャストコンシューマに分配する手段と、 前記判定する第3の手段による否定判定に応じて、選択されたブロードキャス トコンシューマにイベントを分配する手段とを備える ことを特徴とする請求の範囲第3項に記載の装置。 6. 前記格納手段は、 ブロードキャストコンシューマが関連付けられているイベントの加入状態を格 納しているサブスクリプションマトリクスと、 シーケンシャルコンシューマが関連付けられたイベントのエントリを格納して いるシーケンシャルコンシューマデータベースとを備える ことを特徴とする請求の範囲第3項に記載の装置。 7. 前記格納手段は、 前記分配手段から分配されたイベントを受信する各ブロードキャストコンシュ ーマ毎のイベントキューを備え、当該キューは、対応するブロードキャストコン シューマによってイベントが消費されるまでは分配されたそのイベントを記憶し ている、 ことを特徴とする請求の範囲第3項に記載の装置。 8. 前記制御手段は、シーケンシャルコンシューマデータベースにおけるエ ントリに従って、イベントを連続してシーケンシャルコンシューマに渡す手段を 備えることを特徴とする請求の範囲第3項に記載の装置。 9. 前記制御手段は、シーケンシャルコンシューマからのイベントハンドラ メッセージの受信に応じて、イベントの渡しを禁止する手段を備える ことを特徴とする請求の範囲第8項に記載の装置。 10. コンピュータ内で発生したイベントを検出し、イベントを発生し、イベ ントの記述を発生するイベント生成部と、 コンピュータ内で発生したイベントの通知を必要とするイベントコンシューマ と、ここでイベントコンシューマは、コンシューマの第1及び第2のクラスを備 え、 イベントコンシューマに通知される特定のイベントセットを格納する格納手段 と、 イベント生成部からのイベントを受信し、受信したイベントと記憶されたイベ ントセットとを比較するイベント管理制御手段と、 前記イベント管理手段に応答して、そのイベントがイベントコンシューマに渡 すものかを決定する分配手段とを備え、 前記イベント管理制御手段は、 記憶されたイベンドセットに基づいて、適切な第1のクラスのイベントコンシ ューマにイベントを送信する第1の手段と、 前記分配手段に応じて、適切な第2のクラスのイベントコンシューマにイベン トを送信する第2の手段と を備えることを特徴とするコンピュータシステム。 11. 前記分配手段はコンピュータ内で発生し得る各イベントの種類毎に分配 モジュールを備える ことを特徴とする請求の範囲第10項に記載の装置。 12. 前記第1のクラスのコンシューマは、互いに関連性を有するシーケンシ ャルコンシューマを備え、ここで、シーケンシャルコンシューマは、それぞれが 自身の処理を行なっている間は、イベントが他のコンシューマには通知されない ことを要求し、他のコンシューマに関連するイベントを受信したときには影響を 及ぼし、 前記第2のクラスのコンシューマは、互いのコンシューマ間について関連性を 有しないブロードキャストコンシューマを備え、ここで、ブロードキャストコン シューマは、他のコンシューマに対して独立に、且つ、イベントを確認した順と は無関係に動作する ことを特徴とする請求の範囲第10項に記載の装置。 13. 前記分配手段は、 ブロードキャストコンシューマがイベントを受信するまで、イベントを、後続 のイベントに基づいてそのイベントをモディファイする権利と共にブロードキャ ストコンシューマに送信するかを判定する手段と、 前記判定する手段による肯定判定に応じて適切なブロードキャストコンシュー マに対してモディファイする権利と共にそのイベントを分配する手段とを備える ことを特徴とする請求の範囲第12項に記載の装置。 14. 前記格納手段は、 ブロードキャストコンシューマが関連付けられているイベントの加入状態を格 納しているサブスクリプションマトリクスと、 シーケンシャルコンシューマが関連付けられたイベントのエントリを格納して いるシーケンシャルコンシューマデータベースとを備える ことを特徴とする請求の範囲第12項に記載の装置。 15. 前記格納手段は、 前記分配手段から分配されたイベントを受信する各ブロードキャストコンシュ ーマ毎のイベントキューを備え、当該キューは、対応するブロードキャストコン シューマによってイベントが消費されるまで分配されたイベントを記憶する ことを特徴とする請求の範囲第12項に記載の装置。 16. 前記制御手段は、シーケンシャルコンシューマデータベースにおけるエ ントリに従って、イベントを、連続してシーケンシャルコンシューマに渡す手段 を備える ことを特徴とする請求の範囲第12項に記載の装置。 17. 前記制御手段は、シーケンシャルコンシューマからのイベントハンドラ メッセージの受信に応じて、イベントの渡しを禁止する手段を備える ことを特徴とする請求の範囲第16項に記載の装置。 18. コンピュータ内で発生したイベントを分配する方法であって、 コンピュータ内のイベント生成部によって検出されたイベントを判定し、 通知すべきイベントコンシューマの特定のイベントセットを記憶手段に格納し 、 イベント生成部からのイベントをイベント制御手段で受信し、 受信したイベントと格納されたイベンドセットとを比較し、 制御手段からのイベントをコンシューマ手段で受信し、 前記制御手段を制御して、適切なイベントコンシューマに対して適切なイベン トを分配させ、 前記制御手段を介して、適切なイベントコンシューマに適切なイベントを分配 する 各工程を備えることを特徴とする方法。 19. 前記イベントコンシューマは、ブロードキャストコンシューマ及びシー ケンシャルコンシューマを含む複数のコンシューマを備え、 前記ブロードキャストコンシューマは、他のコンシューマに対して独立に、且 つ、イベントを確認した順とは無関係に動作し、 前記シーケンシャルコンシューマは、それぞれが自身の処理を行なっている間 は、イベントが他のコンシューマには通知されないことを要求し、他のコンシュ ーマに関連するイベントを受信したときには影響を及ぼす ことを特徴とする請求の範囲第13項に記載の方法。 20. 前記分配工程は、 ブロードキャストコンシューマがイベントを受信するまで、そのイベントを、 後続するイベントに基づいてそのイベントをモディファイする権利と共に、ブロ ードキャストコンシューマに送信するかを判定し、 該判定工程による肯定判定に応じて、適切なブロードキャストコンシューマに 対してモディファイする権利と共にイベントを分配する工程を備える ことを特徴とする請求の範囲第19項に記載の方法。 21. 前記格納工程は、 ブロードキャストコンシューマが関連付けられているイベントの加入状態をサ ブスクリプションマトリクスに格納し、 シーケンシャルコンシューマが関連付けられたイベントのエントリをシーケン シャルコンシューマデータベースに格納する工程を備える ことを特徴とする請求の範囲第19項に記載の方法。 22. 更に、 ブロードキャストコンシューマに対応するイベントキュー内の分配されたイベ ントを受信し、 対応するブロードキャストコンシューマで前記イベントが消費されるまでは、 前記イベントキューに分配されたイベントを格納する工程を備える ことを特徴とする請求の範囲第19項に記載の方法。 23. 前記分配工程は、シーケンシャルコンシューマから、イベントの処理が 完了したことを示す継続メッセージの受信に応じて、シーケンシャルコンシュー マに連続してイベントを渡す工程を備える ことを特徴とする請求の範囲第19項に記載の方法。 24. 前記分配工程は、シーケンシャルコンシューマからのイベントハンドラ メッセージの受信に応じて、イベントの渡しを禁止する工程を備える ことを特徴とする請求の範囲第23項に記載の方法。
JP52984095A 1994-05-13 1995-05-15 オペレーティングシステムにおけるイベント分配装置及び方法 Expired - Lifetime JP3691515B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/242,204 US5566337A (en) 1994-05-13 1994-05-13 Method and apparatus for distributing events in an operating system
US08/242,204 1994-05-13
PCT/US1995/006074 WO1995031781A1 (en) 1994-05-13 1995-05-15 Method and apparatus for distributing events in an operating system

Publications (2)

Publication Number Publication Date
JPH10500509A true JPH10500509A (ja) 1998-01-13
JP3691515B2 JP3691515B2 (ja) 2005-09-07

Family

ID=22913863

Family Applications (1)

Application Number Title Priority Date Filing Date
JP52984095A Expired - Lifetime JP3691515B2 (ja) 1994-05-13 1995-05-15 オペレーティングシステムにおけるイベント分配装置及び方法

Country Status (6)

Country Link
US (1) US5566337A (ja)
EP (1) EP0760131B1 (ja)
JP (1) JP3691515B2 (ja)
AU (1) AU2551095A (ja)
DE (1) DE69514102T2 (ja)
WO (1) WO1995031781A1 (ja)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001022498A (ja) * 1999-04-14 2001-01-26 Matsushita Electric Ind Co Ltd イベント制御装置およびデジタル放送システム
JP2012521050A (ja) * 2009-03-16 2012-09-10 アップル インコーポレイテッド イベント認識
JP2012527054A (ja) * 2009-05-14 2012-11-01 インターナショナル・ビジネス・マシーンズ・コーポレーション データ・ストリーム処理アプリケーションの動的な構成
US9037995B2 (en) 2007-01-07 2015-05-19 Apple Inc. Application programming interfaces for scrolling operations
US9298363B2 (en) 2011-04-11 2016-03-29 Apple Inc. Region activation for touch sensitive surface
US9311112B2 (en) 2009-03-16 2016-04-12 Apple Inc. Event recognition
US9323335B2 (en) 2008-03-04 2016-04-26 Apple Inc. Touch event model programming interface
US9389712B2 (en) 2008-03-04 2016-07-12 Apple Inc. Touch event model
JP2016522946A (ja) * 2013-05-20 2016-08-04 パックサイズ,エルエルシー ローカルまたは分散型コンピュータ・システムにおける柔軟なノード構成方法およびシステム
US9483121B2 (en) 2009-03-16 2016-11-01 Apple Inc. Event recognition
US9529519B2 (en) 2007-01-07 2016-12-27 Apple Inc. Application programming interfaces for gesture operations
US9684521B2 (en) 2010-01-26 2017-06-20 Apple Inc. Systems having discrete and continuous gesture recognizers
US9733716B2 (en) 2013-06-09 2017-08-15 Apple Inc. Proxy gesture recognizer
US9798459B2 (en) 2008-03-04 2017-10-24 Apple Inc. Touch event model for web pages
US10216408B2 (en) 2010-06-14 2019-02-26 Apple Inc. Devices and methods for identifying user interface objects based on view hierarchy
US10963142B2 (en) 2007-01-07 2021-03-30 Apple Inc. Application programming interfaces for scrolling

Families Citing this family (151)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2118169A1 (en) 1993-10-27 1995-04-28 Michael R.C. Seaman Event architecture for system management in an operating system
US6202098B1 (en) * 1995-01-04 2001-03-13 International Business Machines Corporation Method and system for object oriented notification
KR100221374B1 (ko) * 1995-01-19 1999-09-15 포만 제프리 엘 이벤트를 효율적으로 처리하는 데이타 처리 시스템 및 그의 방법과 저장장치
JPH08286989A (ja) * 1995-04-19 1996-11-01 Fuji Xerox Co Ltd ネットワーク管理システム
US5710924A (en) * 1995-04-24 1998-01-20 Motorola, Inc. Method of routing messages within a multi-processing software system
US6195710B1 (en) * 1995-06-12 2001-02-27 International Business Machines Corporation Operating system having shared personality neutral resources
US6347335B1 (en) * 1995-09-22 2002-02-12 Emc Corporation System using a common and local event logs for logging event information generated by plurality of devices for determining problem in storage access operations
US5754788A (en) * 1995-12-28 1998-05-19 Attachmate Corporation Method and system for reconfiguring a communications stack
EP0880745A4 (en) * 1995-12-29 1999-04-21 Powertv Inc EVENT FILTER METHOD FOR A COMPUTER OPERATING SYSTEM IN A HOME COMMUNICATION DEVICE
GB2309103A (en) * 1996-01-09 1997-07-16 Nokia Mobile Phones Ltd Processing events
US5974573A (en) * 1996-01-16 1999-10-26 Dell Usa, L.P. Method for collecting ECC event-related information during SMM operations
US5961651A (en) * 1996-04-15 1999-10-05 Sun Microsystems, Inc. Event notification in a computing system having a plurality of storage devices
US5781737A (en) * 1996-04-30 1998-07-14 International Business Machines Corporation System for processing requests for notice of events
US5768524A (en) * 1996-04-30 1998-06-16 International Business Machines Corporation Method for processing requests for notice of events
US5768523A (en) * 1996-04-30 1998-06-16 International Business Machines Corporation Program product for processing requests for notice of events
US5878258A (en) * 1996-05-06 1999-03-02 Merrill Lynch, Pierce, Fenner & Smith Seamless application interface manager
US5748884A (en) * 1996-06-13 1998-05-05 Mci Corporation Autonotification system for notifying recipients of detected events in a network environment
US5790829A (en) * 1996-07-01 1998-08-04 Sun Microsystems, Inc. Event synchronization mechanism
US6241608B1 (en) * 1997-01-15 2001-06-05 Lawrence J. Torango Progressive wagering system
US7384336B2 (en) * 1997-01-15 2008-06-10 Torango Lawrence J Progressive system and methods
US7077746B2 (en) * 2001-06-05 2006-07-18 Torango Lawrence J Progressive wagering system
US6435968B1 (en) * 1997-03-17 2002-08-20 Lawrence J. Torango Progressive wagering system
US5832482A (en) * 1997-02-20 1998-11-03 International Business Machines Corporation Method for mining causality rules with applications to electronic commerce
FR2762917B1 (fr) * 1997-05-02 1999-06-11 Alsthom Cge Alcatel Procede d'affectation dynamique de taches a des evenements arrivant sur un ensemble de files d'attente
ZA985939B (en) * 1997-07-08 2000-01-10 Aristocrat Leisure Ind Pty Ltd Slot machine game and system with improved jackpot feature.
AU9468298A (en) * 1997-10-06 1999-04-27 Telefonaktiebolaget Lm Ericsson (Publ) Event distributor
US6216132B1 (en) * 1997-11-20 2001-04-10 International Business Machines Corporation Method and system for matching consumers to events
US6532497B1 (en) * 1998-04-14 2003-03-11 International Business Machines Corporation Separately powered network interface for reporting the activity states of a network connected client
US6347330B1 (en) * 1998-09-04 2002-02-12 International Business Machines Corporation Dynamic selective distribution of events to server receivers
GB2343266A (en) * 1998-10-29 2000-05-03 Ibm Event controller object
US6791580B1 (en) 1998-12-18 2004-09-14 Tangis Corporation Supplying notifications related to supply and consumption of user context data
US7779015B2 (en) 1998-12-18 2010-08-17 Microsoft Corporation Logging and analyzing context attributes
US7225229B1 (en) * 1998-12-18 2007-05-29 Tangis Corporation Automated pushing of computer user's context data to clients
US7046263B1 (en) 1998-12-18 2006-05-16 Tangis Corporation Requesting computer user's context data
US6920616B1 (en) 1998-12-18 2005-07-19 Tangis Corporation Interface for exchanging context data
US6842877B2 (en) 1998-12-18 2005-01-11 Tangis Corporation Contextual responses based on automated learning techniques
US9183306B2 (en) * 1998-12-18 2015-11-10 Microsoft Technology Licensing, Llc Automated selection of appropriate information based on a computer user's context
US6513046B1 (en) 1999-12-15 2003-01-28 Tangis Corporation Storing and recalling information to augment human memories
US8181113B2 (en) 1998-12-18 2012-05-15 Microsoft Corporation Mediating conflicts in computer users context data
US6801223B1 (en) 1998-12-18 2004-10-05 Tangis Corporation Managing interactions between computer users' context models
US6366926B1 (en) * 1998-12-31 2002-04-02 Computer Associates Think, Inc. Method and apparatus for the dynamic filtering and routing of events
US6922708B1 (en) * 1999-02-18 2005-07-26 Oracle International Corporation File system that supports transactions
US6925513B1 (en) * 1999-05-04 2005-08-02 Apple Computer, Inc. USB device notification
US6279046B1 (en) 1999-05-19 2001-08-21 International Business Machines Corporation Event-driven communications interface for logically-partitioned computer
US6681240B1 (en) 1999-05-19 2004-01-20 International Business Machines Corporation Apparatus and method for specifying maximum interactive performance in a logical partition of a computer system independently from the maximum interactive performance in other partitions
US6959291B1 (en) 1999-05-19 2005-10-25 International Business Machines Corporation Management of a concurrent use license in a logically-partitioned computer
US6691146B1 (en) 1999-05-19 2004-02-10 International Business Machines Corporation Logical partition manager and method
US6467007B1 (en) 1999-05-19 2002-10-15 International Business Machines Corporation Processor reset generated via memory access interrupt
US8335775B1 (en) * 1999-08-05 2012-12-18 Oracle International Corporation Versioning in internet file system
EP1085757A3 (en) * 1999-09-16 2004-03-24 Matsushita Electric Industrial Co., Ltd. A system and method of event delivery control, and a recording medium thereof
US6728715B1 (en) * 2000-03-30 2004-04-27 International Business Machines Corporation Method and system for matching consumers to events employing content-based multicast routing using approximate groups
US7464153B1 (en) * 2000-04-02 2008-12-09 Microsoft Corporation Generating and supplying user context data
AU2001249768A1 (en) 2000-04-02 2001-10-15 Tangis Corporation Soliciting information based on a computer user's context
US8001232B1 (en) * 2000-05-09 2011-08-16 Oracle America, Inc. Event message endpoints in a distributed computing environment
US6941557B1 (en) * 2000-05-23 2005-09-06 Verizon Laboratories Inc. System and method for providing a global real-time advanced correlation environment architecture
US6731313B1 (en) 2000-06-23 2004-05-04 Igt Gaming device having touch activated alternating or changing symbol
US7699699B2 (en) 2000-06-23 2010-04-20 Igt Gaming device having multiple selectable display interfaces based on player's wagers
US7695363B2 (en) 2000-06-23 2010-04-13 Igt Gaming device having multiple display interfaces
US7273415B2 (en) 2000-09-07 2007-09-25 Igt Gaming device having a bonus scheme with multiple selection groups
US6938251B1 (en) * 2000-09-29 2005-08-30 Sprint Communications Company L.P. Deferred-Synchronous messaging software in a non-threaded environment
US20020054130A1 (en) 2000-10-16 2002-05-09 Abbott Kenneth H. Dynamically displaying current status of tasks
US7331050B2 (en) * 2001-06-06 2008-02-12 Intel Corporation System and method for communicating information between application programs
US20030105801A1 (en) * 2001-11-30 2003-06-05 Telefonaktiebolaget L M Ericsson (Publ) (Signed) Method, system and agent for connecting event consumers to event producers in a distributed event management system
US7143417B2 (en) * 2002-01-10 2006-11-28 International Business Machines Corporation Notification services within a unified communications service
US8151259B2 (en) * 2006-01-03 2012-04-03 Apple Inc. Remote content updates for portable media devices
US7490329B2 (en) * 2002-04-22 2009-02-10 Thomson Licensing Remote key manager
US6939234B2 (en) * 2002-06-10 2005-09-06 Wms Gaming, Inc. Dynamic configuration of gaming system
US7485043B2 (en) 2002-06-19 2009-02-03 Igt Elimination games for gaming machines
US7177925B2 (en) * 2002-09-27 2007-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Event management system
US20040088401A1 (en) * 2002-10-31 2004-05-06 Ashutosh Tripathi Method and apparatus for providing a highly available distributed event notification mechanism
US7831199B2 (en) 2006-01-03 2010-11-09 Apple Inc. Media data exchange, transfer or delivery for portable electronic devices
US7724716B2 (en) 2006-06-20 2010-05-25 Apple Inc. Wireless communication system
US8140348B2 (en) * 2004-01-30 2012-03-20 International Business Machines Corporation Method, system, and program for facilitating flow control
US7366801B2 (en) * 2004-01-30 2008-04-29 International Business Machines Corporation Method for buffering work requests
US7650606B2 (en) * 2004-01-30 2010-01-19 International Business Machines Corporation System recovery
US7263568B2 (en) * 2004-03-31 2007-08-28 Intel Corporation Interrupt system using event data structures
US7197588B2 (en) * 2004-03-31 2007-03-27 Intel Corporation Interrupt scheme for an Input/Output device
CN100538622C (zh) * 2004-05-09 2009-09-09 意法半导体有限公司 一种提高数字电视接收设备中事件传递与处理的方法
US20060004983A1 (en) * 2004-06-30 2006-01-05 Tsao Gary Y Method, system, and program for managing memory options for devices
US8180883B1 (en) * 2004-08-02 2012-05-15 Cisco Technology, Inc. Method and system for processing directives included in management events
US7666093B2 (en) 2004-08-03 2010-02-23 Igt Gaming method and device involving progressive wagers
US8021230B2 (en) 2004-08-19 2011-09-20 Igt Gaming system having multiple gaming machines which provide bonus awards
US7963847B2 (en) 2004-08-19 2011-06-21 Igt Gaming system having multiple gaming machines which provide bonus awards
US8251791B2 (en) 2004-08-19 2012-08-28 Igt Gaming system having multiple gaming machines which provide bonus awards
WO2006023401A1 (en) 2004-08-19 2006-03-02 Igt Gaming system having multiple gaming machines which provide bonus awards
US7892093B2 (en) 2004-08-19 2011-02-22 Igt Gaming system having multiple gaming machines which provide bonus awards
US7706637B2 (en) 2004-10-25 2010-04-27 Apple Inc. Host configured for interoperation with coupled portable media player device
US7921076B2 (en) 2004-12-15 2011-04-05 Oracle International Corporation Performing an action in response to a file system event
US7370174B2 (en) * 2005-01-05 2008-05-06 Intel Corporation Method, system, and program for addressing pages of memory by an I/O device
US7536565B2 (en) 2005-01-07 2009-05-19 Apple Inc. Techniques for improved playlist processing on media devices
US7549151B2 (en) * 2005-02-14 2009-06-16 Qnx Software Systems Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
US7853957B2 (en) * 2005-04-15 2010-12-14 Intel Corporation Doorbell mechanism using protection domains
US7840682B2 (en) 2005-06-03 2010-11-23 QNX Software Systems, GmbH & Co. KG Distributed kernel operating system
US8667184B2 (en) * 2005-06-03 2014-03-04 Qnx Software Systems Limited Distributed kernel operating system
US8300841B2 (en) 2005-06-03 2012-10-30 Apple Inc. Techniques for presenting sound effects on a portable media player
US7753773B2 (en) 2005-08-26 2010-07-13 Igt Gaming device having physical concentric symbol generators which are operable to provide a plurality of different games to a player
US9640017B2 (en) 2005-08-31 2017-05-02 Igt Gaming system and method employing rankings of outcomes from multiple gaming machines to determine awards
US7828649B2 (en) 2005-09-06 2010-11-09 Igt Gaming system and method for providing group play with divided bonus features
US7500913B2 (en) 2005-09-06 2009-03-10 Igt Gaming system which provides multiple players multiple bonus awards
US7819745B2 (en) 2005-09-06 2010-10-26 Igt Gaming system which provides multiple players multiple bonus awards
US7753782B2 (en) 2005-09-06 2010-07-13 Igt Gaming system and method for providing multiple players multiple bonus awards
US7597621B2 (en) 2005-09-06 2009-10-06 Igt Gaming device having progressive awards and supplemental awards
US8128491B2 (en) 2005-09-09 2012-03-06 Igt Server based gaming system having multiple progressive awards
US8137188B2 (en) 2005-09-09 2012-03-20 Igt Server based gaming system having multiple progressive awards
US7841939B2 (en) 2005-09-09 2010-11-30 Igt Server based gaming system having multiple progressive awards
US7930369B2 (en) 2005-10-19 2011-04-19 Apple Inc. Remotely configured media device
US7680096B2 (en) * 2005-10-28 2010-03-16 Qnx Software Systems Gmbh & Co. Kg System for configuring switches in a network
US8949455B2 (en) 2005-11-21 2015-02-03 Oracle International Corporation Path-caching mechanism to improve performance of path-related operations in a repository
US8654993B2 (en) * 2005-12-07 2014-02-18 Apple Inc. Portable audio device providing automated control of audio volume parameters for hearing protection
US8255640B2 (en) 2006-01-03 2012-08-28 Apple Inc. Media device with intelligent cache utilization
US7673238B2 (en) 2006-01-05 2010-03-02 Apple Inc. Portable media device with video acceleration capabilities
US7848527B2 (en) 2006-02-27 2010-12-07 Apple Inc. Dynamic power management in a portable media delivery system
US7780520B2 (en) 2006-03-15 2010-08-24 Igt Gaming device having multiple different types of progressive awards
US8358273B2 (en) 2006-05-23 2013-01-22 Apple Inc. Portable media device with power-managed display
US7487201B1 (en) * 2006-06-30 2009-02-03 Sun Microsystems, Inc. Method and system for providing framework for Java based AJAX web applications
US8512130B2 (en) 2006-07-27 2013-08-20 Igt Gaming system with linked gaming machines that are configurable to have a same probability of winning a designated award
US8070597B2 (en) 2006-08-03 2011-12-06 Igt Gaming device and method having multiple progressive award levels and a secondary game for advancing through the progressive award levels
US8341524B2 (en) 2006-09-11 2012-12-25 Apple Inc. Portable electronic device with local search capabilities
US7729791B2 (en) * 2006-09-11 2010-06-01 Apple Inc. Portable media playback device including user interface event passthrough to non-media-playback processing
US8090130B2 (en) 2006-09-11 2012-01-03 Apple Inc. Highly portable media devices
US7674180B2 (en) 2006-09-27 2010-03-09 Igt Server based gaming system having system triggered loyalty award sequences
US7862430B2 (en) 2006-09-27 2011-01-04 Igt Server based gaming system having system triggered loyalty award sequences
US8616959B2 (en) 2006-09-27 2013-12-31 Igt Server based gaming system having system triggered loyalty award sequences
US8523665B2 (en) 2006-10-11 2013-09-03 Igt Gaming system and method having multi-level mystery triggered progressive awards
US20080108430A1 (en) 2006-11-08 2008-05-08 Igt Gaming system and method which provides players an opportunity to win a progressive award
US9047733B2 (en) 2006-11-08 2015-06-02 Igt Gaming system and method for providing multiple level progressive awards with increased odds of winning higher level progressive awards
US7963845B2 (en) 2006-11-08 2011-06-21 Igt Gaming system and method with multiple progressive award levels and a skill based determination of providing one of the progressive award levels
US8105149B2 (en) 2006-11-10 2012-01-31 Igt Gaming system and method providing venue wide simultaneous player participation based bonus game
US7840590B2 (en) * 2006-12-18 2010-11-23 Oracle International Corporation Querying and fragment extraction within resources in a hierarchical repository
US7589629B2 (en) 2007-02-28 2009-09-15 Apple Inc. Event recorder for portable media device
US8521689B2 (en) * 2007-04-20 2013-08-27 International Business Machines Corporation Generation of a set of pre-filters from a set of event subscriptions to more efficiently select events of interest
US7985133B2 (en) 2007-07-30 2011-07-26 Igt Gaming system and method for providing an additional gaming currency
US8900053B2 (en) 2007-08-10 2014-12-02 Igt Gaming system and method for providing different bonus awards based on different types of triggered events
US9142097B2 (en) 2007-10-26 2015-09-22 Igt Gaming system and method for providing play of local first game and remote second game
US20090158298A1 (en) * 2007-12-12 2009-06-18 Abhishek Saxena Database system and eventing infrastructure
US8174502B2 (en) 2008-03-04 2012-05-08 Apple Inc. Touch event processing for web pages
US8174503B2 (en) 2008-05-17 2012-05-08 David H. Cain Touch-based authentication of a mobile device through user generated pattern creation
US8271996B1 (en) * 2008-09-29 2012-09-18 Emc Corporation Event queues
US8376836B2 (en) 2008-11-07 2013-02-19 Igt Server based gaming system and method for providing deferral of bonus events
US8566044B2 (en) * 2009-03-16 2013-10-22 Apple Inc. Event recognition
US9039516B2 (en) 2009-07-30 2015-05-26 Igt Concurrent play on multiple gaming machines
US9195707B2 (en) 2010-03-15 2015-11-24 Vmware, Inc. Distributed event system for relational models
US9740587B2 (en) * 2011-01-28 2017-08-22 Hewlett-Packard Development Company, L.P. Distributing power usage data for low-level components of a computing device to subscribing programs
US8763016B2 (en) * 2011-12-19 2014-06-24 Accenture Global Services Limited External device interface abstraction
US8708804B2 (en) 2012-06-22 2014-04-29 Igt Gaming system and method providing a collection game including at least one customizable award collector
EP2728475A1 (en) * 2012-11-02 2014-05-07 Rockwell Automation Technologies, Inc. Event management
US9875618B2 (en) 2014-07-24 2018-01-23 Igt Gaming system and method employing multi-directional interaction between multiple concurrently played games
US9807143B2 (en) * 2014-08-04 2017-10-31 Avaya Inc. Systems and methods for event routing and correlation
US9972171B2 (en) 2015-09-24 2018-05-15 Igt Gaming system and method for providing a triggering event based on a collection of units from different games
CN106954191B (zh) * 2017-03-10 2019-06-07 Oppo广东移动通信有限公司 广播发送方法、装置和终端设备
US11663114B2 (en) * 2020-07-15 2023-05-30 Jpmorgan Chase Bank, N.A. Method and system for automatically testing event-driven microservices

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155842A (en) * 1989-08-14 1992-10-13 Microsoft Corporation Logical event notification method and apparatus
US5291608A (en) * 1990-02-13 1994-03-01 International Business Machines Corporation Display adapter event handler with rendering context manager
US5305454A (en) * 1991-08-12 1994-04-19 International Business Machines Corporation Notification of event handlers in broadcast or propagation mode by event management services in a computer system
US5355484A (en) * 1991-08-12 1994-10-11 International Business Machines Corporation Dynamically established event monitors in event management services of a computer system
US5237684A (en) * 1991-08-12 1993-08-17 International Business Machines Corporation Customized and versatile event monitor within event management services of a computer system
US5321837A (en) * 1991-10-11 1994-06-14 International Business Machines Corporation Event handling mechanism having a process and an action association process
US5430875A (en) * 1993-03-31 1995-07-04 Kaleida Labs, Inc. Program notification after event qualification via logical operators

Cited By (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001022498A (ja) * 1999-04-14 2001-01-26 Matsushita Electric Ind Co Ltd イベント制御装置およびデジタル放送システム
JP4522533B2 (ja) * 1999-04-14 2010-08-11 パナソニック株式会社 イベント制御装置およびデジタル放送システム
US7962568B2 (en) 1999-04-14 2011-06-14 Panasonic Corporation Event control device and digital broadcasting system
US10613741B2 (en) 2007-01-07 2020-04-07 Apple Inc. Application programming interface for gesture operations
US11449217B2 (en) 2007-01-07 2022-09-20 Apple Inc. Application programming interfaces for gesture operations
US9037995B2 (en) 2007-01-07 2015-05-19 Apple Inc. Application programming interfaces for scrolling operations
US10963142B2 (en) 2007-01-07 2021-03-30 Apple Inc. Application programming interfaces for scrolling
US10817162B2 (en) 2007-01-07 2020-10-27 Apple Inc. Application programming interfaces for scrolling operations
US9665265B2 (en) 2007-01-07 2017-05-30 Apple Inc. Application programming interfaces for gesture operations
US10481785B2 (en) 2007-01-07 2019-11-19 Apple Inc. Application programming interfaces for scrolling operations
US11954322B2 (en) 2007-01-07 2024-04-09 Apple Inc. Application programming interface for gesture operations
US10175876B2 (en) 2007-01-07 2019-01-08 Apple Inc. Application programming interfaces for gesture operations
US9448712B2 (en) 2007-01-07 2016-09-20 Apple Inc. Application programming interfaces for scrolling operations
US9760272B2 (en) 2007-01-07 2017-09-12 Apple Inc. Application programming interfaces for scrolling operations
US9529519B2 (en) 2007-01-07 2016-12-27 Apple Inc. Application programming interfaces for gesture operations
US9575648B2 (en) 2007-01-07 2017-02-21 Apple Inc. Application programming interfaces for gesture operations
US9389712B2 (en) 2008-03-04 2016-07-12 Apple Inc. Touch event model
US9323335B2 (en) 2008-03-04 2016-04-26 Apple Inc. Touch event model programming interface
US9690481B2 (en) 2008-03-04 2017-06-27 Apple Inc. Touch event model
US9720594B2 (en) 2008-03-04 2017-08-01 Apple Inc. Touch event model
US11740725B2 (en) 2008-03-04 2023-08-29 Apple Inc. Devices, methods, and user interfaces for processing touch events
US10936190B2 (en) 2008-03-04 2021-03-02 Apple Inc. Devices, methods, and user interfaces for processing touch events
US9798459B2 (en) 2008-03-04 2017-10-24 Apple Inc. Touch event model for web pages
US10521109B2 (en) 2008-03-04 2019-12-31 Apple Inc. Touch event model
US9971502B2 (en) 2008-03-04 2018-05-15 Apple Inc. Touch event model
US9965177B2 (en) 2009-03-16 2018-05-08 Apple Inc. Event recognition
US9483121B2 (en) 2009-03-16 2016-11-01 Apple Inc. Event recognition
JP2012521050A (ja) * 2009-03-16 2012-09-10 アップル インコーポレイテッド イベント認識
US11755196B2 (en) 2009-03-16 2023-09-12 Apple Inc. Event recognition
US11163440B2 (en) 2009-03-16 2021-11-02 Apple Inc. Event recognition
US9311112B2 (en) 2009-03-16 2016-04-12 Apple Inc. Event recognition
US10719225B2 (en) 2009-03-16 2020-07-21 Apple Inc. Event recognition
US9285908B2 (en) 2009-03-16 2016-03-15 Apple Inc. Event recognition
JP2012527054A (ja) * 2009-05-14 2012-11-01 インターナショナル・ビジネス・マシーンズ・コーポレーション データ・ストリーム処理アプリケーションの動的な構成
US10732997B2 (en) 2010-01-26 2020-08-04 Apple Inc. Gesture recognizers with delegates for controlling and modifying gesture recognition
US9684521B2 (en) 2010-01-26 2017-06-20 Apple Inc. Systems having discrete and continuous gesture recognizers
US10216408B2 (en) 2010-06-14 2019-02-26 Apple Inc. Devices and methods for identifying user interface objects based on view hierarchy
US9298363B2 (en) 2011-04-11 2016-03-29 Apple Inc. Region activation for touch sensitive surface
US10491687B2 (en) 2013-05-20 2019-11-26 Packsize Llc Method and system for flexible node composition on local or distributed computer systems
JP2016522946A (ja) * 2013-05-20 2016-08-04 パックサイズ,エルエルシー ローカルまたは分散型コンピュータ・システムにおける柔軟なノード構成方法およびシステム
US11429190B2 (en) 2013-06-09 2022-08-30 Apple Inc. Proxy gesture recognizer
US9733716B2 (en) 2013-06-09 2017-08-15 Apple Inc. Proxy gesture recognizer

Also Published As

Publication number Publication date
DE69514102D1 (de) 2000-01-27
JP3691515B2 (ja) 2005-09-07
DE69514102T2 (de) 2000-09-28
EP0760131A1 (en) 1997-03-05
WO1995031781A1 (en) 1995-11-23
AU2551095A (en) 1995-12-05
EP0760131B1 (en) 1999-12-22
US5566337A (en) 1996-10-15

Similar Documents

Publication Publication Date Title
JPH10500509A (ja) オペレーティングシステムにおけるイベント分配装置及び方法
US7272834B2 (en) Method for continuous I/O request processing in an asynchronous environment
US7840611B2 (en) High availability for event forwarding
JP3853592B2 (ja) 分散ウェブアプリケーションサーバ
US7953787B2 (en) System and method for providing highly available processing of asynchronous requests using distributed request and response queues and a service processor
US6868544B2 (en) Method and system for general-purpose interactive notifications
EP0838056B1 (en) Method, apparatus and electronic storage medium for managing multiple server requests and collating responses
US5590334A (en) Object oriented message passing system and method
US20040078440A1 (en) High availability event topic
US5175854A (en) Inter-applicataion interface system
US6557046B1 (en) Method and system for providing an event system infrastructure
US20020112089A1 (en) Method and system for supporting a system call and interprocess communication in a fault-tolerant,scalable distributed computer environment
US20020194287A1 (en) System and method for transmitting data content in a computer network
JP4124547B2 (ja) リモート・メソッド呼び出しシステムにおける複製サポートのための方法及びシステム
US20080307111A1 (en) Most eligible server in a common work queue environment
JP2001522086A (ja) 宣言型パラダイムをサポートするステートレスなウェブ環境におけるトランザクションを実行するための方法および装置
US8037153B2 (en) Dynamic partitioning of messaging system topics
CN111724262B (zh) 一种应用服务器后续包查询系统及其工作方法
JP3089359B2 (ja) 有効範囲を定められたプロセス間メッセージ交換のための方法および装置
CN112965796B (zh) 一种任务调度系统、方法和装置
Goscinski et al. Message passing and RPC-based interprocess communication mechanisms in the RHODOS microkernel
CN116016546A (zh) 一种在cdn中批量预热资源文件的方法及系统
JPH08137808A (ja) トランザクション処理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040330

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040630

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040816

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040930

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050517

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050616

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080624

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090624

Year of fee payment: 4

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090624

Year of fee payment: 4

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100624

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110624

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110624

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120624

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120624

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130624

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term