JP2004236288A - ピアツーピアグラフ管理インタフェースおよび方法 - Google Patents

ピアツーピアグラフ管理インタフェースおよび方法 Download PDF

Info

Publication number
JP2004236288A
JP2004236288A JP2003403827A JP2003403827A JP2004236288A JP 2004236288 A JP2004236288 A JP 2004236288A JP 2003403827 A JP2003403827 A JP 2003403827A JP 2003403827 A JP2003403827 A JP 2003403827A JP 2004236288 A JP2004236288 A JP 2004236288A
Authority
JP
Japan
Prior art keywords
call
graph
application program
receiving
parameters
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.)
Pending
Application number
JP2003403827A
Other languages
English (en)
Inventor
Todd R Manion
アール.マニオン トッド
Jeremy L Dewey
エル.デューイ ジェレミー
Robert D Donner
ディー.ドナー ロバート
Scott A Senkeresty
エー.センカレスティ スコット
Rohit Gupta
グプタ ロヒット
Upshur Parks Iii
パークス ザ サード アプシュア
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004236288A publication Critical patent/JP2004236288A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1042Peer-to-peer [P2P] networks using topology management mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1089Hierarchical topologies

Abstract

【課題】 ピアツーピア(P2P)ネットワーク内でグラフ管理を提供するアプリケーションプログラミングインターフェースおよび方法を提供すること。
【解決手段】 より具体的には、グラフの作成およびアクセス、ノードおよびグラフ情報の取出し、レコード(データ)の追加、修正、削除、管理、グラフデータのインポートおよびエクスポート、グラフノード間の直接通信、グラフへのセキュリティプロバイダの追加、存在情報の設定および取出し、イベント通知への登録、および他のユーティリティ/サポート機能のための新規な、また改善されたP2Pアプリケーションプログラミングインターフェース(API)および方法が提供される。これらのインターフェースの各々は、これらのインターフェースを使用してグラフを管理し利用するアプリケーションプログラムから渡されるさまざまなパラメータを利用する。インターフェースは、機能の成功または失敗を示す値を返す。失敗の場合、インターフェースは、失敗の原因となった問題に関する表示を提供する。
【選択図】 図2

Description

本発明は、一般にピアツーピア環境内でのグラフおよびデータレコード管理に関し、より詳細には、ピアツーピアのグラフ作成および管理のためのアプリケーションプログラミングインターフェースおよび方法、ならびに、ピアツーピアのグラフ内でのレコード(データ)およびノードの管理に関する。
インターネットに関するさまざまな通信技術によって、共通の関心を有する諸ユーザが、共同作業し、ファイルを共有し、互いにチャットし、プレゼンテーションやグループ会議のためにオーディオやビデオをマルチキャストし、複数競技者のゲームに参加することが可能になっている。しかし、現在、インターネット上のほとんどの通信は、サーバ中心の環境内で行われ、それによって通信はすべて大規模な中央サーバに流れ込み、あるいはこれを介して流通するのであり、個人はそのような通信に加入し参加するためにこのようなサーバに接続することができる。
ピアツーピア技術が再出現したため、インターネット通信の現行のサーバ中心型モデルは、急速に置き換えられつつある。実際、ピアツーピア技術は、サーバをベースとするインターネット通信の制約から解放されて、サーバのない環境でユーザが互いに接続することを可能にする。ピアツーピアをベースとするシステムでは、通信がネットワーク内のピア間で直接行われるため、ユーザの匿名性およびプライバシーを維持することができる。しかし、ピアツーピアネットワーク内では、個々の通信およびファイル共有は比較的よく確立されているが、ピアツーピア環境内での情報の確立、獲得、接続、維持、共有については十分とはいえない。
ピアツーピア通信や実際すべてのタイプの通信は、選択されたエンティティ間またはノード間で有効な通信が確立されるか否かによってその成否が左右される。ピアツーピアネットワーク内で形成されたピア(たとえば、ユーザまたはマシン)またはグループをこれらのエンティティまたはノードとすることができる。ノード間の接続によってピアツーピアのグラフを形成されるが、これにより通信および情報をノードへ渡し、またはノード間で渡すことが可能となる。しかし、エンティティは、ネットワーク内のエンティティの移動、トポロジの変化、アドレス貸し出しの更新ができないこと、並びにグループの機能または目的の変化などのために変わる可能性のある1つまたはいくつかのアドレスを有することがある。したがって、従来のアーキテクチャにおいては、このアドレスに関する問題に対し、各エンティティに安定した名前を割り当てること、および接続が必要とされるとき、この名前を「解決」して現在のアドレスにすることにより解決を図っている。この名前−アドレス変換は、非常に確固としたものでなければならず、また容易かつ高速な更新を可能にするものでなければならない。
エンティティのアドレスが、接続を試みるエンティティによって見つけられる尤度を高めるために、多数のピアツーピアプロトコルにおいて、さまざまな機構を介することによってエンティティがその個々のアドレスまたはグループアドレスを公表することが可能になっている。また、いくつかのプロトコルにおいては、ネットワーク内の他者からの要求を処理することにより、クライアントが他のエンティティのアドレスの知識を得ることが可能になっている。実際、このアドレス知識の獲得により、確固たるグラフを維持することによってこれらのピアツーピアネットワークを動作させるのに成功する。すなわち、ネットワーク内の他のピアおよびグループに関する情報が優れているほど(すなわち、グラフがより確固たるものであるほど)、特定の資源またはレコードの探索が集中する尤度が高くなる。
サーバ中心の環境の場合と同様に、ピアツーピアのグラフは、グラフ内でインターネットファイルの探索および共有を可能にするために完全に開放することができる。しかし、ピアツーピアネットワークは、分散されたユーザまたはピアのグラフとして形成されるため、ネットワーク内のピアすべてが共有情報を知ることができるようになる前に、通信またはデータ(レコード)をあるピアから別のピアに渡すことが必要である。そのような経路設定を提供するシステムとしては、UsenetおよびOSPFがある。しかし、そのような現行のシステムには、現在までのところ限界があり、ピアツーピア技術の発展と完成を制限している。さらに、ピアツーピアネットワークは、現在、適切なグラフ管理を欠いており、メンバの1つがグループを離れても、断続的にグラフを「分断」または分割することができない。そのような場合には、もはやグラフの一方からの情報を、1つピアの離脱によって生み出されたのと反対の側のピアメンバに渡すことができない。他の欠点は、そのような分離を検出するための適切な機構が存在しないことである。
したがって、当技術分野では、当技術分野に存在する上述の、および他の問題に対処するピアツーピアのグラフおよびレコードを管理するインターフェースが求められている。
本願に開示されている本発明の概念は、ピアツーピア(P2P)ネットワーク内でのグラフ管理のための新規な、また改善されたシステムおよび方法を含む。より具体的には、本発明は、グラフの作成およびアクセス、ノードおよびグラフ情報の取出し、レコード(データ)の追加、修正、削除、管理、グラフデータのインポートおよびエクスポート、グラフのノード間の直接通信、グラフへのセキュリティプロバイダの追加、存在情報の設定および取出し、イベント通知への登録、および他のユーティリティ/サポート機能のための新規な、または改善されたP2Pアプリケーションプログラミングインターフェース(API)および方法を目的とする。
本発明の一実施形態においては、ピアツーピアグラフを確立するために、またはピア間でデータを効率的かつ確実に渡すために、APIおよび方法がアプリケーション作成者に公開される。グラフ処理の基本構造は、各ノードが、グラフ内のデータの一貫したビューを確実に持つようにする。グラフ処理技術の中核部分(core piece)は、グラフノードである。ノードは、ネットワーク上の個人の特定のインスタンスを示す。ノードは互いに接続することができ、ノードのネットワークまたはグラフを形成する。ノードは、レコードの形態で相互にデータを送信することができる。
レコードは、本質的に、グラフ内のノードすべてに押し流される(送信される)データ群である。レコードがノードによって受信された後で、ノードは、そのレコードをデータベースまたはデータ記憶内に配置する。グラフ処理は、各ノードのデータベースがまったく同じデータのビューを確実に有するようにする責任を負う。グラフ処理は、各ノードを同期させておく。ノードが接続し、またグラフから切断されたとき、グラフ内で分離または「分割」が発生する可能性がある。グラフ処理はまた、これらの分離を検出し修復する責任を負う。グラフ内のノードは、望まれれば、従来のグラフ接続とは別個の接続を作成することができる。これらの直接接続は、ノードが任意のデータを互いに送信することを可能にする。最後に、グラフ処理は、アプリケーションがイベント通知を登録し、また受信することを可能にするイベンティングインフラストラクチャを有する。イベント通知は、グラフ処理が使用し、グラフ内で変化が発生した場合アプリケーションに警告する機構である。
本発明の一実施形態においては、グラフ作成/アクセス管理を提供するアプリケーションプログラミングインターフェース(API)が提供される。APIは、新しいグラフを作成し、接続のために既存のグラフを開き、接続のためにアクセスされる特定のポートを開き、指定されたIPアドレスでアクセスされるポートへの接続を開始し、開発者がグラフ用のセキュリティプロバイダを指定することを可能にし、セキュリティのないレコードをグラフに追加し、グラフ内のセキュリティのないレコードを更新し、セキュリティのないレコードをグラフから削除する。これらのインターフェースの各々は、これらのインターフェースを使用してグラフを管理し利用するアプリケーションプログラムから渡されるさまざまなパラメータを利用する。これらのインターフェースは、関数の成功または失敗を示す値を返す。失敗の場合、これらのインターフェースは、失敗の原因となった問題に関する表示を提供する。
本発明の他の実施形態においては、グラフ/ノード情報を取り出し、管理するアプリケーションプログラミングインターフェース(API)が提供される。これらのAPIは、ノード情報を取得し、ノード属性を設定し、グラフプロパティを取得し、グラフ状況を取得し、グラフプロパティを設定し、現在のグラフ時間をローカルシステム時間に変換する。これらのインターフェースの各々は、これらのインターフェースを使用してグラフを管理し利用するアプリケーションプログラムから渡されるさまざまなパラメータを利用する。インターフェースは、関数の成功または失敗を示す値を返す。失敗の場合、インターフェースは、失敗の原因となった問題に関する表示を提供する。
本発明の他の実施形態においては、レコード管理を実現するアプリケーションプログラミングインターフェース(API)が提供される。これらのAPIは、レコードを追加し、レコードを更新し、レコードを削除し、レコードを取り出し、レコードを列挙(enumerate)し、レコードを探索し、期間を延長したレコードの妥当性検査を行う。これらのインターフェースの各々は、これらのインターフェースを使用してグラフを管理し利用するアプリケーションプログラムから渡されるさまざまなパラメータを利用する。インターフェースは、関数の成功または失敗を示す値を返す。失敗の場合、インターフェースは、失敗の原因となった問題に関する表示を提供する。
本発明の他の実施形態においては、ノードがそのデータベースをエクスポートし、別のノードからデータベースをインポートすることを可能にするアプリケーションプログラミングインターフェース(API)が提供される。これらのインターフェースの各々は、これらのインターフェースを使用してグラフを管理し利用するアプリケーションプログラムから渡されるさまざまなパラメータを利用する。インターフェースは、関数の成功または失敗を示す値を返す。失敗の場合、インターフェースは、失敗の原因となった問題に関する表示を提供する。
本発明の他の実施形態においては、ノードがグラフ内のノードすべてを列挙することを可能にし、ノードがその存在をグラフ内に設定することを可能にするアプリケーションプログラミングインターフェース(API)が提供される。これらのインターフェースの各々は、これらのインターフェースを使用してグラフを管理し利用するアプリケーションプログラムから渡されるさまざまなパラメータを利用する。インターフェースは、関数の成功または失敗を示す値を返す。失敗の場合、インターフェースは、失敗の原因となった問題に関する表示を提供する。
本発明の他の実施形態においては、ユーティリティ/サポート関数を提供するアプリケーションプログラミングインターフェース(API)が提供される。これらのAPIは、一覧内の次の項目を取り出し、列挙を終了し、項目数を取得し、他のAPIによって取り出されたデータを解放する。これらのインターフェースの各々は、これらのインターフェースを使用してグラフを管理し利用するアプリケーションプログラムから渡されるさまざまなパラメータを利用する。インターフェースは、関数の成功または失敗を示す値を返す。失敗の場合、インターフェースは、失敗の原因となった問題に関する表示を提供する。
本発明の他の実施形態においては、ピア間の直接通信を可能にするアプリケーションプログラミングインターフェース(API)が提供される。これらのAPIは、直接通信を開き、直接通信を閉じ、データを送信し、ノードに接続を列挙する。これらのインターフェースの各々は、これらのインターフェースを使用してグラフを管理し利用するアプリケーションプログラムから渡されるさまざまなパラメータを利用する。インターフェースは、関数の成功または失敗を示す値を返す。失敗の場合、インターフェースは、失敗の原因となった問題に関する表示を提供する。
本発明の他の実施形態においては、イベントインフラストラクチャを提供するアプリケーションプログラミングインターフェース(API)が提供される。これらのAPIは、イベント通知に登録し、イベントを登録抹消し、イベントデータを取り出す。これらのインターフェースの各々は、これらのインターフェースを使用してグラフを管理し利用するアプリケーションプログラムから渡されるさまざまなパラメータを利用する。インターフェースは、関数の成功または失敗を示す値を返す。失敗の場合、インターフェースは、失敗の原因となった問題に関する表示を提供する。
本明細書に組み込まれ、本明細書の一部を形成する添付の図面は、本発明のいくつかの態様を示し、説明と共に本発明の原理を説明するのに有効である。
本発明について、いくつかの好ましい実施形態と共に述べることになるが、本発明をこれらの実施形態に限定する意図はない。反対に、添付の特許請求の範囲によって定義される本発明の精神および範囲内に含まれる代替の実施形態、変更される実施形態、および等価な形態のすべてを包含するものとする。
同じ参照番号は同じ要素を指す図面を参照して、好適なコンピューティング環境内で実施されるように本発明を示す。必ずしも必要ではないが、本発明については、パーソナルコンピュータによって実行されるプログラムモジュールなど、コンピュータ実行可能命令の一般的な文脈で説明を行う。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。さらに、当業者なら、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサをベースとする家電またはプログラム可能な家電、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成と共に本発明を実施することができることを理解するであろう。本発明はまた、通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散コンピューティング環境内で実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルと遠隔双方のメモリ記憶デバイス内に配置することができる。
図1は、本発明を実施することができる好適なコンピューティングシステム環境100の一例を示す。コンピューティングシステム環境100は、好適なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲についてどんな制限も暗示しないものとする。コンピューティング環境100は、例示的な動作環境100に示されている構成要素のいずれか1つまたは組合せに関してどんな依存性も要件も有すると解釈すべきでない。
本発明は、多数の他の汎用または専用コンピューティングシステム環境または構成と共に動作可能である。本発明と共に使用するのに適している可能性のある周知のコンピューティングシステム、環境、および/または構成の例には、それだけには限らないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサをベースとするシステム、セットトップボックス、プログラム可能な家電、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。
本発明について、コンピュータによって実行される、プログラムモジュールなどコンピュータ実行可能命令の全体的な状況で述べることができる。一般に、プログラムモジュールは、特定のタスクを実行する、あるいは特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明はまた、通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散コンピューティング環境内で実施することができる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含むローカルと遠隔双方のコンピュータ記憶媒体内に位置する可能性がある。
図1を参照すると、本発明を実施するための例示的なシステムが、コンピュータ110の形態で汎用コンピューティングデバイスを含む。コンピュータ110の構成要素には、それだけには限らないが、処理装置120、システムメモリ130、およびシステムメモリを含むさまざまなシステム構成要素を処理装置120に結合するシステムバス121が含まれる。システムバス121は、メモリバスまたはメモリコントローラ、周辺機器バス、およびさまざまなバスアーキテクチャのいずれかを使用するローカルバスを含むいくつかのタイプのバス構造のいずれかとすることができる。限定ではなく例を挙げると、そのようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Associate)ローカルバス、およびメザニンバスとしても知られるPCI(Peripheral Component Interconnect)バスが含まれる。
コンピュータ110は、一般に、さまざまなコンピュータ読取可能な媒体を含む。コンピュータ読取可能な媒体は、コンピュータ110によってアクセスすることができる任意の入手可能な媒体とすることができ、揮発性媒体と不揮発性媒体、取外し可能なおよび固定の媒体を共に含む。限定ではなく例を挙げると、コンピュータ読取可能な媒体は、コンピュータ記憶媒体と通信媒体を含む。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性と不揮発性、取外し可能なおよび固定の媒体が共に含まれる。コンピュータ記憶媒体には、それだけには限らないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または所望の情報を記憶するために使用することができ、コンピュータ110によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は、一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波または他の移送機構など変調データ信号に統合し、任意の情報送達媒体を含む。「変調データ信号」という用語は、情報を信号に符号化するようにその特性の1つまたは複数が設定された、または変化した信号を意味する。限定ではなく例を挙げると、通信媒体は、有線ネットワークまたは直接配線接続など有線媒体と、音響、RF、赤外線および他の無線媒体など無線媒体とを含む。上記のいずれかの組合せもまた、コンピュータ読取可能な媒体の範囲内に含まれるべきである。
システムメモリ130は、読出し専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132など揮発性および/または不揮発性メモリの形態でコンピュータ記憶媒体を含む。起動中などにコンピュータ110内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム(BIOS)133は、一般にROM131内に記憶されている。一般にRAM132は、処理装置120によって直ちにアクセス可能な、かつ/または現在動作されているデータおよび/またはプログラムモジュールを含む。限定ではなく例を挙げると、図1は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、プログラムデータ137を示す。
コンピュータ110はまた、他の取外し可能な/固定の、揮発性/不揮発性コンピュータ記憶媒体を含むことができる。例にすぎないが、図1は、固定の不揮発性磁気媒体との間で読出しまたは書込みをするハードディスクドライブ140、取外し可能な不揮発性磁気ディスク152との間で読出しまたは書込みをする磁気ディスクドライブ151、CD ROMまたは他の光媒体など取外し可能な不揮発性光ディスク156との間で読出しまたは書込みをする光ディスクドライブ155を示す。例示的な動作環境内で使用することができる他の取外し可能な/固定の、揮発性/不揮発性コンピュータ記憶媒体には、それだけには限らないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体RAM、固体ROMなどが含まれる。一般にハードディスクドライブ141は、インターフェース140など固定のメモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、一般に、インターフェース150など取外し可能なメモリインターフェースによってシステムバス121に接続されている。
上記で論じ、図1に示されたドライブとその関連コンピュータ記憶媒体は、コンピュータ110のためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータを記憶する。たとえば、図1では、ハードディスクドライブ141が、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、プログラムデータ147を記憶して示されている。これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、プログラムデータ137と同じであることも異なっていることもできることに留意されたい。ここでは、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、プログラムデータ147は、最低でも異なるコピーであることを示すために異なる番号が与えられている。ユーザは、キーボード162、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス161など、入力デバイスを介してコンピュータ110にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを含むことができる。これらの、また他の入力デバイスは、システムバスに結合されるユーザ入力インターフェース160を介して処理装置120に接続されることがしばしばであるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)など、他のインターフェースおよびバス構造によって接続することができる。モニタ191または他のタイプのディスプレイデバイスもまた、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。モニタに加えて、コンピュータはまた、スピーカ197やプリンタ196など他の周辺出力デバイスを含むことができ、これらは、出力周辺機器インターフェース195を介して接続することができる。
コンピュータ110は、リモートコンピュータ180など、1つまたは複数のリモートコンピュータに対する論理接続を使用してネットワーク環境内で動作することができる。リモートコンピュータ180は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他の共通ネットワークノードとすることができ、図1には、メモリ記憶デバイス181だけ示されているが、一般に、パーソナルコンピュータ110に関して上述した要素の多数または全部を含む。図1に表された論理接続は、ローカルエリアネットワーク(LAN)171と広域ネットワーク(WAN)173を含むが、他のネットワークを含むこともできる。そのようなネットワーク環境は、事務所、全社コンピュータネットワーク、イントラネット、インターネットで普通である。
パーソナルコンピュータ110は、LANネットワーク環境内で使用されるとき、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。コンピュータ110は、WANネットワーク環境内で使用されるとき一般に、インターネットなどWAN173を介して通信を確立するためのモデム172または他の手段を含む。モデム172は、内部にあっても外部にあってもよく、ユーザ入力インターフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク環境では、パーソナルコンピュータ110に関して図示されたプログラムモジュール、またはその一部分を、遠隔メモリ記憶デバイス内に記憶することができる。限定ではなく例を挙げると、図1は、メモリデバイス181に常駐する遠隔アプリケーションプログラム185を示す。図のネットワーク接続は例であり、コンピュータ間で通信リンクを確立する他の手段を使用することができることは理解されよう。
以下の説明では、別段の表示がない限り、本発明について、1つまたは複数のコンピュータによって実行される動き、および動作を記号で表したものを参照して述べる。したがって、そのような動きおよび動作は、「コンピュータによって実行される」と呼ばれることがあり、コンピュータの処理装置によって、構造化された形態でデータを表す電気信号が操作されることを含むことを理解されたい。この操作は、データを変換し、またはコンピュータのメモリシステム内のロケーションでデータを維持し、当業者にはよく理解できる方法で、コンピュータの動作を再構成し、または他の方法で変更する。データが維持されるデータ構造は、データの形式によって定義された特定の特性を有するメモリの物理ロケーションである。しかし、本発明について前述の文脈で述べると、当業者なら、以下で述べるさまざまな動きおよび動作をハードウェアで実施することもできることが理解され、限定をする意味ではないのである。
上記で紹介したように、ピアツーピア(P2P)プロトコルが成功するか否かは、選択されたエンティティ間で有効な通信を確立するプロトコルの能力に左右される。同様に、そのようなP2Pネットワーク内でのグループの形成は本能力に依拠する。特定のユーザは、さまざまな方法で、異なるアドレスを有するさまざまなロケーションでネットワークに接続することがあるため、好ましい手法としては、ユーザまたはグループに一意の同一性を割り当て、次いで、その同一性をプロトコルを介して特定のアドレスまたはアドレス群に解決するものがある。本発明の同一性管理システムおよび方法が特に適用されるそのようなピアツーピア名前解決プロトコル(PNRP)は、それによって本発明は限定されないが、2001年8月29日に出願された「Peer-To-Peer Name Resolution Protocol (PNRP) And Multilevel Cache For Use Therewith」という名称の同時係属の特許出願第09/942,164号、2002年4月15日に出願された「Multi-Level Cache Architecture and Cache Management Method for Peer-To-Peer Name Resolution Protocol」という名称の同時係属の特許出願第10/122,863号、および、2001年9月19日に出願された「Peer-To-Peer Group Management and Method For Maintaining Peer-To-Peer Graphs」という名称の同時係属の特許出願第09/955,923号に述べられており、これらの教示および開示は、それらを参照することによりその全体を本明細書に組み込む。
しかし、本発明のP2Pグラフ処理インターフェースおよび方法は、これら同時係属の特許出願の特定のピアツーピアプロトコルに限定されず、均等な効力で他の解決プロトコルに適用することができることを、当業者なら以下の教示から理解するであろう。同様に、2001年9月19日に出願された「Peer-To-Peer Name Resolution Protocol (PNRP) Security Infrastructure And Method」という名称の同時係属の特許出願第09/956,260号は、必ずしもネットワークに過剰なトラフィックの負担をかけることなしに、ネットワーク内のさまざまなエンティティの同一性が有効であることを保証する、基礎となるセキュリティインフラストラクチャについて述べている。P2Pグループ化環境では、2001年9月19日に出願された「Peer-To-Peer Name Resolution Protocol (PNRP) Group Security Infrastructure and Method」という名称の同時係属の特許出願第09/955,924号が、そのようなグループに使用される基礎となるセキュリティインフラストラクチャについて述べている。これら特許出願の教示および開示もまた、それらを参照することによりその全体を組み込む。しかし、本発明のインターフェースおよび方法は、そのようなPNRPに特に適用され、そのようなPNRPと相互作用するが、本発明がそれによって限定されず、P2Pグラフ管理機能を提供したいと望むどのP2Pシステムまたはプロトコルにも適用されることを、当業者なら理解するであろう。
PNRPについて述べている上述の組み込まれた同時係属の特許出願に論じられているように、および有用な背景を提供するためには個々のピア間でピア関係を確立することは、既存のピアツーピアネットワーク内でコストのかかるプロセスである。しかし、PNRPでは、各ノードが、ネットワーク内の他のノードへの参照のリストを含むルーティングテーブルを蓄積する。各ノードエントリについて、ノード識別、アドレス、ノードのキー、このノードのキーとローカルノードのキーとの間の距離を含むことができるアドレス情報が獲得される。ローカルノードは、遠隔ノードについて学習するたびに、そのノードが既知であるかどうか、既知でない場合にはエントリをルーティングテーブルに入力するかどうか検査する。各エントリは、キャッシュオーナからのその「距離」によって決定される「理想的なキャッシュレベル」を有する。新しいエントリは、その距離に対応するキャッシュレベルに追加し、あるいはエントリの「理想的なキャッシュレベル」がまだ破られていない場合には最も低いレベルに追加することができるだけである。
PNRP内の個々のピア間の通信の場合、ノードは、照会を受信すると既に訪れたノードを除いて、キーが標的に最も合致するそのルーティングテーブル内のエントリを探索する。次いで、エントリを公示したノードに照会が直接転送される。適切なエントリがない場合には、そこから要求が受信されたノードに要求が送り返され、このノードは、それ自体のテーブル内の別のエントリを試すことになる。この要求は、キーがターゲットに合致するエントリに達した場合に成功となる。最大ステップ数で標的に達しなかった場合、または、そこから要求が受信されたノードが、可能な隣接者すべてを試し、否定応答を受信した場合に不成功となる。成功した要求の場合には、中間ホップすべてによって応答が中継される。この応答は、標的キーを保持するノードのアドレスを搬送し、エントリは、中間ノードのルーティングテーブル内に挿入される。
ここで、本発明のグラフ管理システムおよび方法が特に適用される1つのP2P環境が提供されたので、次に図2について説明を行う。図2は、本発明が存在することができる例示的なP2Pフレームワーク200を示すが、そのようなフレームワークと共に使用することだけに限定されない。実際、本発明のP2Pグラフ管理システムおよび方法は、P2P同一性の完全な管理を可能にするインターフェースの調整された論理集合を必要とするフレームワークとともに、またはそれを望むさまざまなフレームワークと共に使用することができる。当然ながら、当業者なら、さまざまなアプリケーションプログラムが本発明のAPIを使用し、P2P環境内で望ましいさまざまなユーザ同一性の管理を可能にする豊かなユーザインターフェースおよび1組の関数が提供されることを理解するであろう。
図2に示されているように、基礎となるP2Pグラフ処理インターフェース202は、P2Pフレームワーク200内で必要とされる情報すべてを含むデータ記憶204を使用する。データ記憶内の情報はまた、P2Pグラフ内での生産的な参加に必要なセキュリティを提供するP2Pグラフセキュリティ管理インターフェース206によって使用される。また、P2Pシステムが機能することを可能にするために、一般に何らかの形態のP2P名前−アドレス解決208が提供される。上記で論じたように、1つのそのようなシステムが、上記の同時係属の特許出願に述べられているPNRPシステムである。本発明のP2Pグラフ処理インターフェース202もまた、このフレームワーク200内に含まれる。これらの同一性管理インターフェース210の一実施形態の説明は、本明細書と同日に出願された「Peer-To-Peer Identity Management Interfaces And Methods」という名称の同時係属の特許出願第10/309864号に含まれており、その教示および開示は、それらを参照することによりその全体を本明細書に組み込む。最後に、この例示的なフレームワーク200では、P2Pグループ内で適切な参加を可能にするために、1組のグループ化インターフェース212が提供されている。
ここで、特に本発明のシステムおよび方法によって提供されるP2Pグラフ処理インターフェース202を考察すると、APIのこのグループは、ピアツーピアグラフを確立するために、およびピア間でデータを効率的かつ確実に渡すために、アプリケーション開発者に公開される。グラフ処理の基本構造202は、各ノードが、グラフ内のデータの一貫したビューを確実に有するようにする。グラフ処理技術の中核部分は、グラフノードである。ノードは、ネットワーク上の個人の特定のインスタンスを示す。ノードは互いに接続することができ、ノードのネットワークまたはグラフを形成する。ノードは、レコードの形態で互いの間においてデータを送信する。
レコードは、本質的にグラフ内のノードすべてに押し流される(送信される)データ群である。レコードがノードによって受信された後で、ノードは、そのレコードをデータベースまたはデータ記憶内に配置する。グラフ処理は、各ノードのデータベースがまったく同じデータのビューを確実に有するようにしなければならない。グラフ処理は、各ノードを同期させておく。ノードが接続し、またグラフから切断したとき、グラフ内で分離または「分割」が発生する可能性がある。グラフ処理はまた、これらの分離を検出し修復しなければならない。グラフ内のノードは、そうするように望む場合には、従来のグラフ接続とは別個の接続を作成することができる。これらの直接接続は、ノードが任意のデータを互いに送信することを可能にする。最後に、グラフ処理は、アプリケーションがイベント通知を登録し、および受信することを可能にするイベントインフラストラクチャを有する。イベント通知は、グラフ処理が使用する機構であって、グラフ内で何かが変化したことに対してアプリケーションに警告する機構である。
ピアグラフを確立するとのユーザの最初の所望に基づいて、アプリケーションプログラムは、本発明のAPIの初期化およびクリーンアップ関数を呼び出す。これらのAPIは、グラフ処理の基本構造202の起動およびシャットダウンを行う。グラフ処理起動ルーチンにより、使用を望む基本構造の正確なバージョンをアプリケーションが指定することが可能になる。P2Pグラフ処理を使用が可能となる前に、アプリケーションは、Peer Graph Startup関数を呼び出し、どのバージョンを使用したいかをグラフ処理の基本構造202に伝えなければならない。次いで、グラフ処理の基本構造は、要求されたバージョンであって、かつサポートしている最も高いバージョンで応答する。Peer Graph Shutdown関数APIが、呼び出さなければならない最後のAPIである。これは、アプリケーションが基本構造を使い終えたことをグラフ処理の基本構造202に伝える。本発明の一実施形態においては、Peer Graph Shutdown関数への呼出しは、Peer Graph Startup関数への各呼出しに合致しなければならない。
これらの関数は、P2Pグラフ処理の基本構造に関するバージョン情報を含むピアバージョンデータ構造を使用する。この構造のパラメータは、コーラーの使用をインストール済みP2Pダイナミックリンクライブラリ(dll)が期待するP2Pプロトコルのバージョン、およびインストール済みP2Pdllがサポートできる最も高いP2Pプロトコルのバージョンである。通常、これらは同じである。
起動を開始するために、アプリケーションは、他のどの関数が呼び出されるよりも前に、まずPeer Graph Startup関数を呼び出す。この関数に渡されるパラメータは、要求されているバージョンである。これは、ピアツーピアプロトコルのバージョンのうちコーラーが使用できる最も高いバージョンである。このパラメータは、上位バイトがマイナーバージョン(改訂版)を指定し、下位バイトがメジャーバージョン番号を指定するワードであることが望ましい。この関数の出力パラメータは、P2P APIのバージョンを指定する、また、システムにインストールされているP2P dllによって提供されるサポートの詳細を受け取るピアバージョンデータ構造(上述)へのポインタである。この関数の戻り値は、動作の成功または失敗を示す。エラーメッセージは、失敗のタイプまたは理由を示す。エラーメッセージは、要求された関数を実行するのにメモリが結果的に不十分であったのエラー、サポートされていないバージョンの指定、すなわち、要求されたバージョンが、ローカルマシンにインストールされているP2Pサブシステムによってサポートされていないことに起因するエラーを含む。
シャットダウンを開始するために、アプリケーションは、Peer Graph Shutdown関数を呼び出す。この関数は、API Peer Graph Startupに対する呼出しによって割り振られたどの資源もクリーンアップする。上記で示されているように、Peer Graph Startupに対する各呼出しについて1つのPeer Graph Shutdownに対する呼出しが存在することが好ましい。この関数に必要とされるパラメータはない。この関数は、シャットダウン関数の成功または失敗の表示を返す。エラーの場合には、関数は適切なエラーコードを返す。
Peer Graph Startup関数を呼び出した後で、アプリケーションが行わなければならない次のタスクは、使用のためグラフをセットアップすることである。このため、アプリケーションは、Peer Graph Create関数またはPeer Graph Open関数の呼び出しを行う。アプリケーションが新規の構造を作成したい場合には、まずグラフのプロパティを指定しなければならない。このプロパティは、グラフをセットアップするために必要とされる基本要素を指定する。次に、アプリケーションは、ノードと関連付けるためにデータベース名を指定しなければならない。プロパティとデータベース名に加えて、アプリケーションは、グラフにセキュリティを追加するために使用したいセキュリティインターフェースを指定しなければならない。最後に、アプリケーションは、Peer Graph Create関数を呼び出し、新しいグラフを作成する。アプリケーションは、グラフを作成した後で遠隔ノードから入ってくる接続要求を「聴取」するために、Peer Graph Listen関数を呼び出さなければならない。
アプリケーションが、使用のためグラフをセットアップする第2の方法は、既存のグラフを開くことである。アプリケーションがグラフを開こうとする場合、2つのシナリオがある。第1のシナリオでは、グラフがノードによって初めて開かれようとしている(すなわち、そのグラフのためのデータがノードのデータベース内に存在しない)。この状況では、アプリケーションは、まずPeer Graph Open関数を呼び出さなければならない。この呼出しで、アプリケーションは、接続するグラフ、グラフ内で使用する同一性、グラフと関連付けるデータベースを指定しなければならない。さらに、アプリケーションは、そのグラフを元々作成したPeer Graph Create関数内に指定されているグラフのクリエータと同じセキュリティインターフェースを指定しなければならない。アプリケーションが初めてグラフを「開いた」後で、アプリケーションは、アプリケーションが(何らかの帯域外(out of band:OOB)機構を介して)「発見」したノードのIPを使用してPeer Graph Connect関数を呼び出さなければならない。ノードはまだデータベースを有していないため、Peer Graph Listen関数に対するどの呼出しも失敗することになる。(以下で論じるように)グラフ処理レイヤ202がノードを残りのグラフと同期した後で、アプリケーションは自由にPeer Graph Listen関数を呼び出し、遠隔ノードから入ってくる接続要求を「聴取」する。
第2のシナリオでは、一度グラフが発見されると、ノードがグラフを再び「開く」ことが可能となる。アプリケーションは、初めてそのグラフを開いたときと同じ情報を指定しなければならない。ここでの違いは、その以前のグラフとの関係からノードがデータベースを有しているため、Peer Graph Listen関数に対するどの呼出しも成功することになる点である。しかし、接続する他のノードが発見されなかった後で、または、この場合も、発見機構208を介して得られたIPアドレスを使用してPeer Graph Connect関数を呼び出した後に同期済みイベントを受け取った後でのみ行うべきである。
ノードは、グラフを作成し、または開いた後で、グラフハンドルを受け取る。このハンドルは、本発明の以下のグラフ処理APIのほとんどで使用される。ノードがグラフから切断したいと望むときには、Peer Graph Close関数を呼び出し、グラフを閉じるだけで十分である。
前述のグラフ起動/シャットダウンプロセスでは、アプリケーションは、ピアグラフプロパティを指定することが必要であった。これは、グラフポリシーについてのデータと他の情報を保持するPeer Graph Propertiesデータ構造を介して行う。このデータ構造に含まれる情報は、このデータ構造のサイズの指定をバイトで含む。この情報はまた、グラフ内でのピアの挙動に関連するピアグラフプロパティフラグのビットマスクを含む。これらのフラグについては、以下で論じる。たとえばリンクローカル、サイトローカルなど、どの範囲でグラフIDを公表(publish)すべきかを定義するScope Flag。アプリケーションはまた、グラフ内で送信することができるレコードの最大サイズ(データおよび属性)をこの構造内で指定すべきである。Peer Graph Create関数によって設定されることになるこのグラフの一意のグラフID識別子もまた指定しなければならない。この識別子は、マシン/ユーザの組合せについて一意でなければならない。さらに、グラフのクリエータの一意のクリエータID識別子が必要とされる。グラフのフレンドリ名(friendly name)もまたこの構造内に提供すべきであるが、これはNULLに設定することができる。グラフについて述べるための任意選択のコメントフィールドもまた、この構造内に提供される。グラフ内のレコードの存在寿命(Presence Lifetime)を制限するために、存在レコードが満了する前のレコード数が提供される。最後に、1つのグラフが含むことができる存在レコードの最大数が指定される。これのデフォルトは、実際のグラフサイズに基づいて動的に計算させることである。
上記で紹介したピアグラフプロパティフラグには、ハートビートフラグと期間延長(defer expiration)フラグが含まれる。ハートビートフラグは、グラフ作成時に指定され、グラフ内のノードがハートビートを公表し、グラフ内に存在し続けていることをグラフ内の他のノードに知らせるかどうか判定する。期間延長フラグは、グラフが接続されていないとき、ノードがそのグラフ内の少なくとも1つの他のノードに接続されるまで満了が発生しないことを示す。
一度グラフが確立されると、ノードは、何らかの形態のセキュリティを使用し、レコードの妥当性検査をして人々をグラフ内に認証する。この機能を提供する本発明のピアセキュリティインターフェースは、APIがユーザの妥当性検査をするために呼び出すことになるグラフ処理の基本構造202へのセキュリティインターフェースを指定すること、およびグラフ内のレコードを安全にし、および解放することを可能にする。さらに、このセキュリティインターフェースは、アプリケーションが、セキュリティSSPの実装を含むdllのパスを指定することを可能にする。アプリケーションがコールバックにNULLを指定した場合には、基本構造は、レコードを安全にするために関数を呼び出すかわりに、レコードのセキュリティフィールド内にCRCチェックサムを入れる。そのような場合には、レコードの妥当性検査をするために関数を呼び出すかわりに、基本構造はCRCチェックサムを検証する。
このセキュリティインターフェースに使用される構造用のパラメータは、構造のサイズ、SSPインターフェースを実装するDLLの任意選択のフルパス名、任意選択のパッケージ名を含む。また、このパラメータは、セキュリティ情報のバイト数、およびセキュリティ情報へのポインタ(グラフを作成する、または開く際に使用されることになるバイト)を含むことができる。セキュリティコンテキストへ任意選択のポインタであって、レコードを妥当性検査する必要があるとき呼び出されることになる妥当性検査レコード関数へのポインタもまた同様に含まれる。セキュリティレコードへのポインタがNULLの場合には、この妥当性検査レコードポインタもまたNULLでなければならない。さらに、レコードを安全にする必要があるとき呼び出されることになる関数へのポインタを含むことができる。しかし、妥当性検査レコード関数へのポインタがNULLの場合には、これもまたNULLでなければならない。最後に、このセキュリティインターフェース構造は、セキュアレコードコールバックによって割り振られた任意のデータを解放するために使用される関数へのポインタを含むことができる。
peer validate record callbackは、レコードの妥当性検査をするために呼び出すインターフェースを指定する。このAPIが基本構造によって呼び出されたとき、ピアレコード変更タイプの1つが渡される。これは、そのレコードに対して実行されるだけの動作である。アプリケーションは、この変更タイプに基づいてレコードを検証すべきである。アプリケーションが、レコードを検証するために依然としてより多くの情報を必要としている場合には、E_DEFFEREDを返すことができ、グラフ処理APIは、それを保留リスト(set aside list)内に入れることになる。セキュリティ機構は、そのレコードの妥当性検査をするのに十分な情報を得た後で、peer graph validate deferred records関数を呼び出さなければならない。一度この関数が呼び出されると、保留リスト内のどのレコードも、再び妥当性検査に提供されることとなる。ピアレコード妥当性検査関数のパラメータは、このレコードに関連付けられたグラフ、セキュリティコンテキストへのポインタ、妥当性検査をするレコード、妥当性検査の理由を述べるピアレコード変更タイプを含む。
ピアレコード変更タイプ(peer record change type)フラグは、変更タイプパラメータを介してコールバックに渡される。これらは、特定のレコードをどのように変更するかを関数に通知するために提供される。これは、そのタイプのレコード変更に対して作用する能力をセキュリティ関数群に与える。たとえば、これらの変更タイプは、ピアレコードの追加(レコードIDまたはレコードタイプは、データベースに追加されている)、レコードの更新(レコードIDまたはレコードタイプは、グラフ内で更新されている)、レコードの削除(レコードIDまたはレコードタイプは、グラフから削除されている)、またはレコードの満了(レコードIDまたはレコードタイプは、データベースから消滅している)を含むことができる。
peer secure record callbackは、レコードを安全にするために呼び出すインターフェースを指定する。このAPIが基本構造によって呼び出されると、ピアレコード変更タイプの1つが渡される。これは、そのレコードに対してちょうど実行された動作を反映する。次いで、アプリケーションは、この変更タイプに基づいてレコードを検証すべきである。このコールバックのパラメータは、このレコードに関連付けられたグラフ、セキュリティコンテキストへのポインタ、安全にするレコード、妥当性検査の理由を述べるピアレコード変更タイプフラグ、このレコード用のセキュリティデータ(たとえば署名)を含む。
peer free security data callbackは、セキュリティコールバックによって返されたデータを解放するために呼び出すインターフェースを指定する。そのパラメータは、このレコードに関連付けられたグラフ、セキュリティコンテキストへのポインタ、解放すべきセキュリティデータへのポインタを含む。この関数は、動作が成功した場合に成功の表示を返し、そうでない場合には、この関数は、遭遇したエラーのタイプを示すエラー値を返す。これらは、無効なパラメータに起因するエラー、メモリ量の不足、その特定のP2P IDを有するグラフがすでに存在する場合のエラーを含む。
このピアアドレスタグ構造は、グラフノードに接続するとき使用するIPアドレスについての情報を保持していることに留意されたい。この構造は、渡される構造のサイズ、および接続するノードのIPv6アドレスを示すパラメータを含む。
以上、セキュリティインターフェースを含めて、ピアグラフの作成および管理について述べたので、次に、上記で述べた関数を実施するのに必要とされる特定のインターフェースの詳細に注目して説明を行う。
上述のように、peer graph createインターフェースへの呼出しは、完全に新しいグラフを作成する。また、そのグラフに関連する情報、およびそのグラフが使用することになるセキュリティのタイプを指定する機会を提供する。この呼出しにより、グラフハンドルが割り振られるが、ネットワーク接続は確立されない。この関数を呼び出した後で、アプリケーションは、peer graph listen関数を呼び出す前に、イベントを登録する(subscribe)機会を有する。これらのイベントAPIは、アプリケーションがグラフに接続されていない場合に首尾よく呼び出すことができるAPIだけである。この期間中、他のどのAPI呼出しも、peer graph listen APIが呼び出されるまで失敗することになる。このpeer graph createインターフェースのパラメータは、グラフのすべてのプロパティ、作成時にこのグラフに関連付けるデータベースの名前、このグラフ用のセキュリティプロバイダについて必要とされる情報すべてを含むセキュリティインターフェースへのポインタを含む。このパラメータは任意選択であり、すなわちNULLとすることができる。これがNULLに設定されている場合には、APIは、上記で論じたCRCチェックサム機構を使用する。このAPIの出力は、作成されたグラフ用のハンドルに設定される。
上記で論じたpeer graph open APIは、ローカルノードまたは遠隔ノードによって以前に作成されたグラフを開く。この呼出しにより、グラフハンドルが割り振られるが、ネットワーク接続は確立されない。先のAPIの場合と同様に、アプリケーションは、このAPIを呼び出した後で、イベントを登録するための機会を有する。しかし、アプリケーションは、入ってくる接続を受け入れるために、peer graph listen APIを呼び出さなければならない。このとき初めてグラフがこのノードによって開かれた場合には、そのノードがグラフに接続し同期するまで、peer graph listen APIへのどの呼出しも失敗することになることに留意されたい。このようにして、このノードは、古くなった、または誤った情報(レコード)を新しいノードに押し流すことができない。
このpeer graph open APIのパラメータは、開くグラフの一意のグラフ識別子(マシン/ユーザの組合せについて一意でなければならない)、グラフを開く人の一意の識別子、作成時にこのグラフに関連付けるデータベースの名前を含む。このグラフ用のセキュリティプロバイダについて必要とされる情報を含むセキュリティインターフェースへのポインタもまた提供することができる。使用する場合、これは、peer graph create関数内に指定されているセキュリティインターフェースと同じとしなければならない。パラメータはまた、レコード同期優先配列(record synchronize precedence array)内のレコードタイプ数、レコードが同期される順序を示すレコードタイプの配列を含む。デフォルトの順序が使用される場合には、このパラメータをNULLにすることができる。最後に、作成されたグラフへのハンドルが提供される。このAPIは、この関数の成功または失敗の表示を返す。これらのエラー表示は、無効な引数によるエラーの表示、および接続を処理する他のグラフメンバを見つけることができないためのエラーの表示を含む。
グラフが、上述のように作成され、または開かれると、peer graph listen APIが呼び出され、次に来る接続の聴取を開始するようグラフに通知する。すなわち、このAPIを呼び出すことができるようになる前に、peer graph create APIまたはpeer graph open APIを呼び出さなければならない。やはり上記で示されているように、このとき初めてグラフが開かれた場合には、そのノードがpeer graph connect APIを介してグラフに接続し、そのレコードをグラフと同期するまで、このAPIへのどの呼出しも失敗することになる。このAPIのパラメータは、聴取を開始するグラフ、聴取するipv6スコープ、聴取するipv6スコープID、聴取するポートを含む。このAPIは、成功または失敗の表示を返す。これらのエラー表示は、無効な引数によるエラーの表示、不十分なメモリによるエラーの表示、提供されたハンドルが無効であるためのエラーの表示を含む。
ノードは、グラフ内の新しいノードに接続したいと望む場合、peer graph connect APIを呼び出す。これが初めての接続である場合には、やはりこのAPIは、グラフデータベースを同期しようと試みることになる。このAPIのパラメータは、グラフのハンドル、所与のアドレスで接続される人の一意のID(指定されたアドレスで複数の同一性が接続される可能性があるため必要とされる)、接続されるノードのアドレスなどについての詳細を含む構造へのポインタ、以下で論じる直接接続APIと共に使用される接続IDへのポインタを含む。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、不十分なメモリによるエラーの表示、提供されたポインタが無効であるとのエラーの表示を含む。
peer graph close APIは、peer graph create APIへの、またはpeer graph open APIへの呼出しによって得られたグラフハンドルを無効にする。また、このグラフについてネットワークすべてを閉鎖する。このAPIのパラメータは、切断されるグラフのハンドルである。このAPIは、成功または失敗の表示を返す。これらのエラー表示は、無効な引数によるエラーの表示、および、提供されたハンドルが無効であるとのエラーの表示を含む。
peer graph close APIは、ノードをグラフから切断することを可能にするが、そのグラフを削除するわけではない。関連グラフのデータのそのような削除を実行するためには、アプリケーションがpeer graph delete APIを呼び出す必要があるであろう。このAPIのパラメータは、データを削除するグラフの名前、データを削除するピアID、削除するグラフに関連付けられたデータベースの名前を含む。このAPIは、成功または失敗の表示を返す。これらのエラー表示は、無効な引数によるエラーの表示、提供されたハンドルが無効であるとのエラーの表示、要求された関数を実行するためのアクセスが拒絶されたとのエラーの表示を含む。
今述べた本発明のシステムおよび方法によって提供されるグラフ形成および管理機能に加えて、本発明は、アプリケーションがグラフ/ノード情報を取り出し、管理することを可能にするアプリケーションプログラミングインターフェースを提供する。この情報の管理は、ノード特有の情報を容れたピアノード情報データ構造によって容易になる。このデータ構造のパラメータは、データ構造のサイズ、その隣接者に対するノード接続を識別する一意の識別子、(上述の作成またはオープン関数の実行の間にそのノードについて設定された)ピアの識別子、ピアアドレスの配列内のアドレス数、このインスタンスがどのアドレスおよびポートについてグループトラフィックを聴取するかを示すピアアドレスの配列、この特定のノードについて述べる属性を容れるために使用されるストリングデータフィールドを含む。
このデータ構造を使用する本発明の1つのインターフェースは、peer graph get node information APIである。このインターフェースは、ユーザのいるノードについてノード特有の情報を取り出すために呼び出される。所与のマシン上に、あるグラフのいくつかのノードが存在する可能性がある、たとえば複数のユーザが所与のマシン上のグラフに参加している可能性があるために、この情報は、実際にはマシン毎ではなく、ノード特有であることに留意されたい。このインターフェースのパラメータは、グラフハンドル、アプリケーションが情報を取得したいと望むノードのノードIDを含む。ゼロに設定されている場合には、このインターフェースは、ローカルノードについての情報を取り出すことになる。この出力は、ローカルノードについての情報を含むピアノード情報データ構造である。APIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、不十分なメモリによるエラーの表示、提供されたハンドルが無効である(たとえば、ノードがもはやグラフに接続されていない)とのエラーの表示を含む。
ノードについての情報を取り出すことに加えて、本発明は、ローカルノードのインスタンスに対してアプリケーションがピアノード情報データ構造の属性を設定することを可能にする。この関数のパラメータは、グラフハンドル、およびアプリケーションがローカルノードに関連付けたい属性を示すストリングを含む。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示を含む。
ノード情報を取り出すための能力に加えて、本発明は、現行のグラフのプロパティを取り出す能力を提供する。アプリケーションは、現行のグラフプロパティを取り出すpeer graph get properties関数を呼び出すことができる。返される構造は、現行のグラフプロパティについての情報を含む。この関数のパラメータは、グラフのハンドルであって、成功時にはグラフプロパティ構造へのポインタである。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、不十分なバッファサイズによるエラーの表示を含む。
本発明はまた、peer graph get status関数への呼出しを介して、グループの状況の取出しを可能にする。この関数のパラメータは、グループへのハンドル、グループの状態として現在設定されている1組のピアグラフ状態フラグ(peer graph status flag)である。これらのフラグを使用し、ノードが接続を聴取しているか否か、ノードが他のノードに対する接続を有するか否か、ノードのデータベースが同期されているか否かを示すことができる。
情報を取り出すことに加えて、本発明はまた、アプリケーションがグラフプロパティを設定することを可能にするインターフェースを提供する。この関数のパラメータは、グラフのハンドル、グラフプロパティ構造へのポインタを含む。このインターフェースは、グラフサイズ、フレンドリ名、グラフを含むことができる存在レコードの数、存在レコードが満了する前の秒数(存在寿命)をアプリケーションが修正することを可能にするのが望ましい。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、アクセスの拒絶によるエラーの表示を含む。
本発明のシステムおよび方法はまた、現在のグラフ時間をローカルシステム時間に変換するインターフェースを提供する。このインターフェースのパラメータは、グラフのハンドル、変換されるグラフ時間へのポインタ、グラフ時間から導出されたローカルシステム時間に設定される出力を含む。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、アクセスの拒絶によるエラーの表示を含む。
以上、本発明のグラフ初期化/クリーンアップ関数、グラフ作成/アクセス関数、およびグラフ/ノード情報関数について述べたので、次に、本発明のレコード管理機能に注目して説明する。レコードは、グラフのノード間で通信する方法である。レコードは、グラフを形作り、良好な接続を確実にするために使用される。レコードは、2つの部分、1)バージョン、クリエータ、タイプを含む、レコードについての情報を有するヘッダと、2)グループ全体にわたって押し流されるアプリケーション定義データであるコンテント部とを備える。このコンテント部はまた、データについて述べる名前−値属性をアプリケーションが追加することを可能にするXML構造を含む。このフィールドは、探索APIが調べる情報を指定するために使用することができる。
本発明の一実施形態によれば、一度ノードがグラフ上で「聴取」されると、ノードは、グループ内で通信され記憶されるデータを操作することができる。アプリケーションが最初にしなければならないことは、レコードを獲得することである。アプリケーションはこれを、1)新規のレコードを作成する、または2)アクセス機能を使用する、という2つの方法のうちのいずれかで行うことができる。新規のレコードを作成するために、アプリケーションは、必要とされる情報およびデータでピアレコードを満たすことによって開始する。これを行った後で、peer graph add record関数を呼び出し、レコードをデータベースに追加する。この関数は、レコードをデータベースに追加することに加えて、グラフ内の残りのノードにレコードを押し流す。
アプリケーションは、そうする代わりに既存のレコードを獲得しようと決めた場合には、本発明のアクセス関数を使用することができる。アプリケーションがデータベースからレコードを取り出すために使用することができるそのような関数がいくつかある。第1は、peer graph get record関数である。このAPIは、アプリケーションによって指定されたレコードID(GUID)から特定のレコードを取得する。第2は、peer graph enumerate records APIまたはpeer graph search records APIなど、列挙関数を介する。peer graph enumerate records APIは、レコードタイプ、またはノードの同一性に基づいてレコードの列挙を返す。peer graph search records APIは、属性フィールド内のデータに基づいてレコードをフィルタリングするために使用される探索クエリを受け入れる。各APIは、(以下で論じる)ピアネットワーク化列挙APIと共に使用することができる列挙を返す。
レコードが作成され、または取り出された後で、アプリケーションは、レコードを更新または削除することができる。アプリケーションは、レコードの更新を望む場合、単に望むフィールドを更新し、peer graph update record APIを呼び出す。このAPIは、データベース内のレコードを更新し、グラフ内の各ノードにレコードを押し流す。最後に、peer graph delete record APIを呼び出すことによって、レコードをグラフから削除することができる。このAPIは、実際にはレコードをデータベースから除去しないことに留意されたい。そのかわりに、このAPIは、削除するためにレコードをマークし、残りのグラフにこの削除を伝える。レコードは、満了するまでデータベースから除去されない。
本発明のAPIによって使用されるレコード管理構造は、ピアデータ構造を含む。アプリケーションが見るこのレコードオブジェクトは、ピアデータ構造によって定義され、そのパラメータとして、バッファポインタによって指されるデータのサイズ(バイト)、およびデータ自体を含むバッファへのポインタを含む。ピアレコードデータ構造は、そのパラメータとして構造のサイズを含み、このサイズは、ピアレコードヘッダのサイズに設定しなければならない。また、パラメータは、レコードのタイプ、P2P基本構造によって提供されたレコードのID、アプリケーションがpeer graph add record APIまたはupdate record APIを呼び出したとき基本構造によって提供されたレコードバージョンを含む。このデータ構造はまた、レコードに適用されるべき任意の特別な処理を示すさまざまなフラグを含むことができる。レコードクリエータの一意の識別子もまた含まれ、レコードを変更する最後の人の一意の識別子も同様である。このデータ構造はまた、XMLストリングとして指定され、レコードに関連付けられる属性−値ペアの集合を含む。属性は、探索エンジンが、レコードに関連するデータを捜す所である。ここに置かれたレコードの内容についての情報は、エンジンによって見つけ出される。エンジンが属性を認識して「見つける」ために、このストリングは、探索XML方式(search XML scheme)に従わなければならない。従わない場合には、探索エンジンは、このレコードに関連する結果を返さないことになる。P2P基本構造によって提供されたときレコードが作成されたUTC時間、レコードが満了するUTC時間、レコードが最後に修正されたUTC時間もまた、この構造に含まれる。CRCチェックサムをデフォルトとして使用するピアデータ構造用のセキュリティデータもまた含まれる。最後に、このデータ構造は、実際のレコードデータを含む。
上記で論じたフラグは、自動リフレッシュと呼ばれるピアレコードフラグを含む。このフラグは、このレコードが満了しようとする際レコードを自動的にリフレッシュするよう、P2Pシステム内で使用されているグループ化API群に伝えるために使用される。設定することができる他のピアレコードフラグを削除済みと呼ぶ。このフラグは、レコードが削除済みとマークされていることを示す。
以上、本発明のレコード管理API群およびデータ構造について述べたので、次に、上述した個々のレコード管理API群の各々の詳細に注目して説明する。最初に、peer graph add record APIは、上記で紹介したように、グラフに新しいレコードを追加するために使用される。このAPIを用いて追加されたレコードは、グラフ内の各ノードに送られる。このAPIのパラメータは、グラフハンドル、レコードデータへのポインタ、およびグラフ内のレコードを一意に識別するレコードIDに対して設定されるポインタを含む。レコード内では、サイズ、タイプ、および満了だけが必要とされ、一方、データおよび属性は任意選択であることに留意されたい。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、アクセスの拒絶によるエラーの表示を含む。アクセスの拒絶は、追加することができないレコードタイプをピアが追加を試みたとき発生する。
上記で紹介したpeer update record APIは、グラフ内でレコードを更新する。さらに、この関数は、バージョン番号を更新し、グラフ内の各ノードにレコードを押し流す。この関数のパラメータは、グラフハンドル、およびレコードに関連付ける新しいデータへのポインタを含む。修正することができるレコード内のフィールドは、サイズ、フラグ、属性、満了時間(より長い満了時間に)、セキュリティデータ、およびデータ自体である。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、アクセスの拒絶によるエラーの表示を含む。
上記で説明したように、peer graph delete record APIは、レコードをグラフ内で削除済みとマークする。このAPIは、実際にはレコードをデータベースから除去しない。そのかわり、レコードを削除済みとマークしてグラフに送り出す。これは、グラフ内の各ノードがデータベースの同一のビューを確実に有するようにするために行われる。このAPIのパラメータは、グラフハンドル、削除するレコードIDへのポインタ、およびローカルフラグである。このフラグが真に設定されている場合には、このAPIは、グラフの他のノードにこの削除を送り出さない。このAPIは、そうするかわりにローカルデータベースから除去するだけである。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、アクセスの拒絶によるエラーの表示を含む。レコードを削除することは、レコードヘッダ内でピアRF無効フラグ(peer RF invalid flag)を設定してレコードを更新することにより、レコードを無効とマークして次いでそのレコードを満了させることを意味する。しかし、実際のレコードペイロードは、削除することが好ましい。
peer graph get record APIは、アプリケーションが、レコードIDを介して特定のレコードを取り出すことを可能にする。返されたレコードは、peer graph free data APIを呼び出すことによって解放すべきである。このAPIのパラメータは、グラフハンドル、取り出すレコードIDへのポインタ、取り出されたレコードへのポインタに対して設定されるポインタである。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、レコードがデータベースにないことの表示、アクセスの拒絶によるエラーの表示を含む。
peer graph enumerate records APIは、特定のタイプおよび/またはクリエータのレコードすべてにわたって反復を開始する。これは、現在時間でのレコードのスナップショットである。このAPIのパラメータは、グラフハンドル、反復を行うレコードのタイプへのポインタである。このポインタがNULLである場合には、このAPIは、全レコードにわたって反復を行うことになる。このAPIはまた、ピアIDを識別するパラメータを含む。指定されている場合には、このAPIは、そのピアIDによって作成されたレコード群だけにわたって反復を行うことになる。NULLの場合には、このAPIは、すべてのユーザによって作成されたレコードにわたって反復を行う。このAPIはまた、反復へのハンドルを生成する。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示を含む。
peer graph search records APIは、特定のレコードを探索するために使用される。このAPIのパラメータは、グラフハンドル、クエリを記述されたXMLストリング、および列挙ハンドルである。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、初期化するのに失敗したことによるエラーの表示、他のレコードがないことによるエラーの表示を含む。
新しいレコードがグラフ隣接者から入ってきたとき、peer graph validate deferred records APIは、peer graph create APIまたはpeer graph open APIへの呼出しの期間中にピアセキュリティインターフェース内で指定されたvalidate record callbackを呼び出すことによって、レコードの妥当性検査を試みることになる。セキュリティモジュールが妥当性検査を実行するのに必要とする情報すべてをまだ有していない場合がある。そのような場合には、このAPIは、レコードの妥当性検査をするのではなく、期間延長エラーメッセージを返すことになる。次に、グラフ処理レイヤは、レコードを一時期間延長テーブルに移動する。セキュリティモジュールは、妥当性検査の実行を準備する際、peer graph validate deferred records APIを呼び出し、グラフ処理レイヤにどの期間延長レコードも再提出するように依頼することができる。パラメータは、グラフハンドル、レコードID群へのポインタ内に指定されたレコードID(record idea)の数を含む。これがゼロの場合には、グラフ処理レイヤは、現在期間延長されているあらゆるレコードについてvalidate record関数を呼び出すことになる。最後に、このAPIは、再び妥当性検査すべきレコードIDの配列へのポインタのパラメータを含む。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラー、および「初期化されていない場合」のエラーの表示を含む。
以上、本発明のレコード管理API群の説明を完了したので、次に、本発明のグラフ処理API群の一部を形成するエクスポート/インポートAPIに注目して説明する。アプリケーションは、peer graph export database APIを呼び出すことにより、データベースを特定のファイルにエクスポートすることができる。アプリケーションは、ノードがグラフに少なくとも1回接続し、上記で論じたpeer graph open APIをアプリケーションが呼び出した後でのみ行うことができる。アプリケーションはまた、peer graph import database APIを呼び出すことにより、データベースをインポートすることができる。アプリケーションは、有効なグラフハンドルを得た後でのみ行うことができる。
peer graph export database APIは、異なるマシンに移動しpeer graph import database APIを呼び出すことによってそこにインポートすることができるファイル内に、グラフデータベースをエクスポートする。このAPIのパラメータは、グラフのハンドル、エクスポートされたデータが記憶されるファイルへのパスである。そのファイルがすでに存在し、いずれかのデータを含む場合には、その中のデータは上書きされることになる。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示を含む。
peer graph import database APIは、peer import graph database APIを呼び出すことによって得られるグラフデータベースを示すファイルをインポートする。このAPIは、上記で説明したpeer graph listen APIをユーザがまだ呼び出していない場合にのみ首尾よく呼び出すことができる。このAPIのパラメータは、グラフのハンドル、およびインポートするファイルへのパスを含む。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示を含む。
本発明のグラフ処理API群はまた、ノードに関係する存在情報の管理および通信を可能にする。peer graph set presence APIは、ノードがグラフに能動的に接続され、グラフを聴取していることを他のグラフメンバに通知するために使用される。このAPIのパラメータは、グラフハンドル、および真の場合にノードが「存在する」情報をそのグラフに押し流されるフラグである。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラー、および「初期化されていない場合」のエラーの表示を含む。
peer graph enumerate nodes APIは、グラフ内のノードすべての列挙を開始するために使用される。グラフポリシーに応じて、接続されている一部のノードは、その存在を公表していないために一覧(enumeration)に現れない可能性がある。このAPIのパラメータは、グラフハンドル、アプリケーションがノードの一覧を得たいと望むピアID、存在するピアにわたって反復を行うために使用される列挙ハンドルへのポインタである。アプリケーションは、peer graph get next item APIを使用して実際のピアを取り出し、peer graph end enumeration APIを使用し、この一覧に関連付けられた資源を解放する。peer graph get next item APIは、peer graph enumerate presence APIへの呼出しから返された列挙ハンドルに対して使用されたとき、ピアノード情報タイプ(type peer node information)のデータを返すことになる。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、および「初期化されていない場合」のエラーの表示を含む。
本発明のグラフ処理API群はまた、ユーティリティ/サポート関数を含む。これらは、2タイプのユーティリティ/サポート関数である。第1は列挙サポートであり、第2はメモリサポートである。列挙関数は、アプリケーションが受け取ったピア一覧への任意のハンドルに対して作用する。ピア一覧へのハンドルは、peer graph enumerate records APIおよびpeer graph search recordsなどの関数から得ることができる。一度一覧が得られると、アプリケーションは、peer graph get item count APIを呼び出すことによって、一覧内のアイテム数を取得することができる。一覧からアイテムを取得するために、アプリケーションは、peer graph get next item APIを呼び出さなければならない。アプリケーションは、一覧から受け取りたいアイテムの数を指定することができる。アプリケーションが、一覧内にあるものより多くのアイテムを要求した場合には、この関数は、一覧内のアイテムの数を返す。メモリサポート関数は、peer graph free data関数である。アプリケーションは、グラフ処理APIからデータを受け取った場合には、この関数を使用してデータを「解放」しなければならない。さらに、peer graph get next item APIは、このAPIを使用して解放しなければならないデータを返す。
peer graph get next item APIは、ピア一覧へのハンドルを返す任意のAPIへの呼出しによって開始された反復内で次のアイテムを取得する。そのようなAPIは、peer graph enumerate records API、peer graph search records API、peer graph enumerate neighbors API、peer graph enumerate presence APIを含む。返されたアイテムはすべて、peer graph free data APIへの単一の呼出しを使用して解放しなければならない。アプリケーションは、返されるレコードの範囲を要求することができる。このAPIは、要求されたレコードの数以下を返すことになる。返されるデフォルト数は1である。このAPIのパラメータは、列挙ハンドル、読み取るアイテムの数(戻りの際、読み取られたアイテムの実際の数が含まれる)、アイテムの配列へのポインタである。返される実際のデータは、一覧のタイプによって決まる。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、並びに「アイテムが1つもない場合」、および「初期化されていない場合」のエラーの表示を含む。
peer graph end enumeration APIは、一覧に関連付けられたどの資源も終了させ、解放する。一覧が1つもアイテムを含まない場合には、アイテムが1つもないことを示すエラーが返される。このAPIの唯一のパラメータは、クリーンアップする一覧へのハンドルである。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効なハンドルによるエラーの表示を含む。
peer graph get item count APIは、一覧内の最大数のアイテムを取り出すために使用される。一覧において反復している間に、いくつかのアイテムが無効になる可能性があるため、peer graph get next item APIから返されるアイテムの数は、ここで返されるアイテム数より少ない可能性がある。これは、ハンドルが最初に作成されたとき、一覧内のアイテムの数を示す。この基本構造の動的な性質のため、peer graph get next item APIを介して取り出されるアイテムの数がこの数に等しくなる保証はない。このAPIのパラメータは、グラフハンドル、一覧内のレコードの数である。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示を含む。
peer graph free data APIは、上記で説明したさまざまなグラフ処理API群によって返された資源を解放する。グラフ処理APIによって返されたどのデータも、このAPIを使用して解放しなければならない。このAPIのパラメータは、解放するアイテムへのポインタである。
本発明のシステムおよび方法はまた、ノード対ノード直接通信を実現する。直接通信API群は、データを押し流す必要なしに、ノードが互いにメッセージを送信することを可能にする。アプリケーションは、隣接者(すなわち、グラフ処理の基本構造のためアプリケーションが接続を有するノード)または直接接続(すなわち、アプリケーションが直接通信APIと接続を開始したためローカルノードに接続されている遠隔ノード)にデータを送信することができる。アプリケーションは、直接接続の生成を所望の場合、まずpeer graph open direct connection APIを呼び出さなければならない。これは接続を確立する。一度接続が確立されると、ノードは、peer graph send data APIを介して、接続上でデータを送信することができる。アプリケーションは、この送信API内の「タイプ」パラメータを介して送信されるデータのタイプを記載することができることに留意されたい。アプリケーションは、直接接続を終えた後で、peer graph close direct connection APIを呼び出して接続を解体しなければならない。直接接続は、グラフの維持を考慮していない。アプリケーションはまた、隣接者フラグを指定すること、およびpeer graph send data APIを使用することによって、隣接者ノードにデータを送信することができる。アプリケーションは、直接接続確立/クローズ関数のどちらも呼び出す必要がない。
これらの直接通信API群は、ピア接続情報構造と呼ばれる直接通信構造を使用する。この構造のパラメータは、渡される構造のサイズ、この構造が参照する接続のタイプ、この接続の接続ID、接続される他端のノードのノードID、アプリケーションが接続を有するノードのピアID、および接続のアドレスを含む。接続のタイプは、2つのフラグによって示される。ピア接続隣接者フラグ(peer connection neighbor flag)は、この接続が隣接者接続であることを指定し、ピア接続直接フラグ(peer connection direct flag)は、この接続が直接接続であることを指定する。
peer graph open direct connection APIは、上述の直接接続を生成する。グラフ処理API群は、データを送信するために、アプリケーションがグラフ内のノードとの接続を確立することを可能にする。この接続は、グラフ維持に役立たない。このAPIのパラメータは、グラフのハンドル、あるアドレスで接続される人の一意のID(指定されたアドレスで複数の同一性が接続される可能性があるため必要とされる)、接続されるノードのアドレスなどについての詳細を含む構造へのポインタ、および直接接続の接続IDを含む。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、および「所与のIDを有するピアが存在しない場合」のエラーの表示を含む。また、ピアノードが接続を拒否したことを示すためのエラーがある。
peer graph close direct connection APIは、特定の直接接続を閉鎖する。このAPIのパラメータは、グラフのハンドル、および切断する隣接者のIDである。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、および「所与のIDを有する接続が存在しない場合」のエラーの表示を含む。
peer graph send data APIは、接続されている隣接者または直接接続にデータを送信するために使用される。この関数は、データがネットワークレイヤに渡されると直ちに戻ることになる。換言すれば、グラフ処理レイヤは、他方の側からの肯定応答を待たない。このAPIのパラメータは、グラフのハンドル、データを送信する接続の一意の識別子、送信されるデータのアプリケーション定義「タイプ」、次のパラメータによって指されるバイト数、隣接者に送信する実際のデータを含む。このポイントツーポイントデータを受け取るための機構の特徴は、ピアグラフイベント入来データタイプ(type peer graph event incoming data)のイベントに登録することにある。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、および「接続が存在しない場合」のエラーの表示を含む。
peer graph enumerate connections APIは、そのパラメータとして、グラフのハンドル、上記で論じたピア接続フラグに基づいて列挙する接続のタイプ、および接続の一覧へのポインタを含む。このAPIは、成功または失敗の表示を返す。このエラー表示は、無効な引数によるエラーの表示、および「接続が存在しない場合」のエラーの表示を含む。
本発明のイベントインフラストラクチャは、グラフとそれに関連付けられたデータの変更についてアプリケーションに通知することを可能にする。アプリケーションが変更について通知を受け取りたい場合には、アプリケーションが最初にしなければならないことは、通知を受けたいイベントを特定する登録構造を完成させることである。この登録により、アプリケーションは、通知を受けたいイベントタイプを指定することが可能になる。イベントが、関連付けの可能な特定のタイプのデータを有する場合には、これもまた登録内で指定される。たとえば、アプリケーションは、特定のレコードタイプの変更について通知するために登録することができる。そのためには、アプリケーションは、イベントタイプとしてピアグラフイベントレコード変更済み(peer graph event record changed)イベント、および通知を受けたいレコードタイプのGUIDを指定する登録構造を作成する。
アプリケーションは、登録構造を得た後で、peer graph register event APIを呼び出し、そのイベントを関連付けたいイベントハンドルを指定する。あるイベントハンドルにいくつかのイベントを関連付けることができることに留意されたい。一度アプリケーションが関心のあるイベントが発生したならば、イベントハンドルは、イベントが発生したことを知らされる。次いで、アプリケーションは、そのイベントに関連付けられたデータを取り出すために、peer graph get event data APIを呼び出さなければならない。このAPIは、2つの重要なデータを含む構造を返す。第1は、イベントに関連付けられた登録であり、第2は、そのイベントに関連付けられたデータである。アプリケーションは、アイテムが1つもないことを示すエラーメッセージが発生するまで、引き続きpeer graph get event dataを呼び出すべきである。アプリケーションは、特定のハンドルに関連付けられたイベントについてもはや通知を望まないとき、peer graph un−register event APIを呼び出すことによって、単にその関心を登録抹消する。
本発明のイベントインフラストラクチャは、7つのデータ構造を使用する。第1は、ピアグラフイベント登録(peer graph event registration)構造である。アプリケーションは、イベント通知に登録するとき、通知登録を解釈するために必要とされるコンテキストデータを含み、および通知が発生すると通知に関連するデータを返すために使用されるピアイベント登録構造の配列を提供する。この構造のパラメータは、ピアが関心のあるイベントのタイプ(下記で指定されるイベントタイプの1つでなければならない)、およびレコードタイプを含む。指定されたイベントタイプがレコードに作用する場合には、指定されたレコードタイプのレコードに対してだけイベントを発するように、このレコードタイプを指定することができる。このパラメータは、すべてのレコードタイプについてイベントを発生させるためにNULLとすることができる。このフィールドは、レコードに対して作用するイベントタイプについて無視される。この登録は、アプリケーションが通知を受けたいイベントタイプを取る。
イベントタイプは、グラフが変更済み状況を有する(接続された、など)、グラフプロパティ構造内のフィールドが変更された(このイベントが発せられた場合には、アプリケーションはすでに変更を有し、peer graph get properties APIを使用して、更新された構造を取得しなければならないため、データは使用可能でない)、レコードタイプ(または特定のレコード)が何らかの形で変更された、ピアの直接接続が変更された、ピア隣接者との接続が変更された、直接または隣接者接続から(フラッディングではなく)データが受信された、グラフが不安定になった(クライアントは、新しいノード上でpeer graph connect APIを呼び出すことによって応答すべきである)、グラフ内でノードの存在状況が変更された、およびある種のレコードタイプの同期がとられたことに関するイベントを含むことができる。
アプリケーションは、一度イベント通知を受け取ると、データをそのイベントに関連付けることができる。データはすべて、ピアグラフイベントデータ(peer graph event data)構造内に一般化される。イベントに応じて、ユニオン内の適切なフィールドが書き込まれる(fill out)。ユニオン内のフィールドの1つを除くすべては、この構造へのポインタである。ユニオンの各メンバが定義される。構造内のどれも「設定」することができない。イベントタイプはイベントに対応するイベントデータであり、状態フィールドは、ピアグラフイベント状態変更(peer graph event status change)イベントが発せられた場合に書き込まれる。これは、ノードのグラフとの接続に関して何かが起こったことを意味する。入来データフィールドは、ピアグラフイベント隣接者データ(peer graph event neighbor data)またはピアグラフイベント直接データ(peer graph event direct data)イベントが発せられた場合に書き込まれる。これは、隣接者または直接接続から送られたのではなくノードがデータを受信したことを意味する。レコード変更データフィールドは、ピアグラフイベントレコード変更(peer graph event record change)イベントが発せられた場合に書き込まれる。これは、アプリケーションが通知を依頼したレコードまたはレコードタイプが変更されたことを意味する。接続変更データフィールドは、ピアグラフイベント隣接者接続(peer graph event neighbor connection)またはピアグラフイベント直接接続(peer graph event direct connection)イベントが発せられた場合に書き込まれる。これは、隣接者または直接接続状態の何らかの面が変更されたことを意味する。ノード変更データフィールドは、ピアグラフイベントノード変更済み(peer graph event node changed)イベントが発せられた場合に書き込まれる。これは、グラフ存在状態内の何らかのノードが変更されたことを意味する。同期データフィールドは、ピアグラフイベント同期済み(peer graph event synchronized)イベントが発せられた場合に書き込まれる。これは、何らかのレコードタイプが同期するのを終えたことを意味する。
ピアイベント入来データ(peer event incoming data)構造では、ユニオンは、入来データイベントが発せられた場合にデータへのポインタを含む。これは、隣接者または直接接続からの押し流しでなくノードがデータを受信したことを意味する。この構造のフィールドは、構造のサイズ、データが来た接続の一意の識別子、入来データのアプリケーション定義データタイプ、および受け取った実際のデータを含む。
ピアイベントレコード変更データ(peer event record change data)は、ピアグラフイベントレコード変更(peer graph event record change)イベントが発せられた場合にユニオンがそれへのポインタを含む構造である。これは、アプリケーションが通知を依頼したレコードまたはレコードタイプが変更されたことを意味する。この構造は、構造のサイズ、アプリケーションがイベントを登録したレコードまたはレコードタイプに発生した変更のタイプ、変更された一意のレコードID、および変更された一意のレコードタイプを含む。ピアレコード変更タイプは、レコードIDまたはレコードタイプがデータベースに追加されたことを示すためのピアレコード追加済み(peer record added)タイプ、レコードIDまたはレコードタイプがグラフ内で更新されたことを示すためのピアレコード更新済み(peer record updated)タイプ、レコードIDまたはレコードタイプがグラフから削除されたことを示すためのピアレコード削除済み(peer record deleted)タイプ、およびレコードIDまたはレコードタイプがデータベースから消滅したことを示すためのピアレコード満了済み(peer record expired)タイプを含む。
ピアイベント接続変更データ(peer event connection change data)構造は、ピアグラフイベント隣接者接続(peer graph event neighbor connection)イベントまたはピアグラフイベント直接接続(peer graph event direct connection)イベントが発せられた場合にユニオンがそれへのポインタを含む構造である。これは、隣接者または直接接続状態の何らかの面が変更されたことを意味する。この構造は、構造のサイズ、隣接者または直接接続が受けた変更のタイプ、変更元の接続の一意の識別子、および変更元のノードの一意の識別子を含む。ピア接続状況タイプは、新しいノードがローカルノードに接続されたことを示すピア接続済み(peer connected)タイプ、接続が切断された(ローカルノードによって、または遠隔ノードによって行うことができる)ことを示すピア切断済み(peer disconnected)タイプ、およびそのノードへの接続の試みが失敗したことを示すピア接続失敗(peer connection failed)タイプを含む。
ピアイベントノード変更データ(peer event node change data)構造は、ピアグラフイベントノード変更済み(peer graph event node changed)イベントが発せられた場合にユニオンがそれへのポインタを含む構造である。これは、グラフ内の何らかのノードが、その存在状態を変更したことを意味する。この構造は、構造のサイズ、ノードの新しい存在状態(ピア存在変更タイプ)、変更されたノードのグラフの一意のID、および変化したノードのピアIDを含む。ピア存在変更タイプは、ノードがグラフ内に存在するようになったことを示すピア存在変更接続済み(peer presence change connected)タイプ、ノードがグラフから消えたことを示すピア存在変更切断済み(peer presence change disconnected)タイプ、およびノードがその情報(たとえば、属性)を更新したことを示すピア存在変更更新済み(peer presence change updated)タイプを含む。
ピアイベント同期済みデータ(peer event synchronized data)構造は、構造のサイズ、および同期されたレコードのタイプを含む。
以上、イベントインフラストラクチャと、その中で使用されるデータ構造について述べたので、次に、個々のAPI群の詳細に注目して説明する。peer graph register event APIは、グラフおよびイベントタイプに関連する変更について通知を受けることへのピアの関心を登録する。このAPIのパラメータは、グラフのハンドル、新しいイベントに基づいて伝えられるイベントハンドルを含む。イベントハンドルは、自動リセットとすべきである。伝えられたとき、アプリケーションは、取り出すアイテムが1つもないことの表示が返されるまで、peer graph get event data APIを呼び出さなければならない。また、パラメータは、ピアイベント登録データ構造の数のカウント、要求されている通知についてのデータを含むピアイベント登録データ構造の配列へのポインタ、および通知を登録抹消するためのpeer un−register event handle APIへの呼出しの中で使用することができるピアイベントハンドルを含む。このAPIは、成功または失敗の表示を返す。この失敗表示は、無効な引数による失敗の表示を含む。
peer graph un−register event APIは、グラフおよびレコードタイプに関連する変更について通知を受けることへのアプリケーションの関心を登録抹消する。このAPIのパラメータは、peer register event handle APIへの呼出しから得られたハンドルである。このAPIは、成功または失敗の表示を返す。この失敗表示は、無効な引数による失敗の表示を含む。
peer graph get event data APIは、アプリケーションがイベントを取り出すことを可能にする。取り出すイベントが1つもないことを示す表示が返される。イベントはすべて、データをピアグラフイベントデータ構造の形態で受け取る。どのイベントが発せられたかに応じて、対応するデータ構造が返される。このAPIのパラメータは、peer register event handle APIへの呼出しによって得られたハンドル、および通知についてのデータを含む。
Microsoft Windows(登録商標) XPオペレーティングシステムに特に適した本発明のインターフェースおよび方法の一実施形態においては、API群を以下のようにすることができる。
Figure 2004236288
Figure 2004236288
Figure 2004236288
Figure 2004236288
本発明のさまざまな実施形態に関する前記説明は、例示および説明のために提供されている。消尽、または開示されたその実施形態に本発明を限定することは意図されていない。上記の示唆に鑑みて、多数の修正形態または変形形態が可能である。考察した実施形態は、本発明の原理とその実際的な応用を最もよく示し、それによって、さまざまな実施形態で、および企図されている特定の使用に適したさまざまな修正形態と共に、当業者が本発明を使用することを可能にするように選択され述べられた。そのような修正形態および変形形態はすべて、添付の特許請求の範囲が公平に、法的に、正当に権利を与えられる広さに従って解釈されたとき、添付の特許請求の範囲によって決定される本発明の範囲内にある。
本発明が常駐する例示的なコンピュータシステムを一般的に示すブロック図である。 本発明のシステムおよび方法が特に適用されるピアツーピア(P2P)インターフェースフレームワークを示す簡略化されたフレームワーク図である。
符号の説明
100 コンピューティングシステム環境
110 コンピュータ
120 処理装置
130 システムメモリ
121 システムバス
131 ROM
132 RAM
133 基本入出力システム(BIOS)
134 オペレーティングシステム
135 アプリケーションプログラム
136 他のプログラムモジュール
137 プログラムデータ
140 インターフェース
141 ハードディスクドライブ
144 オペレーティングシステム
145 アプリケーションプログラム
146 他のプログラムモジュール
147 プログラムデータ
150 インターフェース
151 磁気ディスクドライブ
152 取外し可能な不揮発性磁気ディスク
155 光ディスクドライブ
156 取外し可能な不揮発性光ディスク
160 ユーザ入力インターフェース
161 ポインティングデバイス
162 キーボード
170 ネットワークインターフェースまたはアダプタ
171 ローカルエリアネットワーク(LAN)
172 モデム
173 広域ネットワーク(WAN)
180 リモートコンピュータ
181 メモリ記憶デバイス
185 遠隔アプリケーションプログラム
190 ビデオインターフェース
191 モニタ
195 出力周辺機器インターフェース
196 プリンタ
197 スピーカ
200 P2Pフレームワーク
202 P2Pグラフ処理インターフェース
204 データ記憶
206 P2Pグラフセキュリティ管理インターフェース
208 P2P名前−アドレス解決
210 同一性管理インターフェース
212 グループ化インターフェース

Claims (80)

  1. アプリケーションプログラムとサーバプロセスとの間で通信を行って、ピアツーピアグラフを管理する方法であって、
    前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ管理呼出しを受信するステップと、
    前記グラフ管理呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記グラフ管理呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とする方法。
  2. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ管理呼出しを受信するステップは、グラフのプロパティ群、作成時に前記グラフに関連付けるデータベースの名前、前記グラフ用のセキュリティプロバイダについての情報、および前記グラフへのハンドルを含む複数の呼出しパラメータを有するグラフ作成呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項1に記載の方法。
  3. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ管理呼出しを受信するステップは、開かれるグラフの識別子である第1の一意の識別子、前記グラフを開く人の識別子である第2の一意の識別子、前記グラフ用のセキュリティプロバイダについての情報、配列内のレコードタイプ数、レコードが同期される順序を示すレコードタイプの配列、および前記グラフへのハンドルを含む複数の呼出しパラメータを有するグラフオープン呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項1に記載の方法。
  4. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ管理呼出しを受信するステップは、聴取するグラフへのハンドル、聴取するIPv6スコープ、聴取するIPv6スコープ識別子、および聴取するポートを含む複数の呼出しパラメータを有するグラフ聴取呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項1に記載の方法。
  5. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ管理呼出しを受信するステップは、接続されるグラフのハンドル、1つのIPアドレスで接続される人の一意の識別、前記人についての情報を含むデータ構造へのポインタ、および接続識別へのポインタを含む複数の呼出しパラメータを有するグラフ接続呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項1に記載の方法。
  6. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ管理呼出しを受信するステップは、切断するグラフへのハンドルを含む複数の呼出しパラメータを有するグラフクローズ呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項1に記載の方法。
  7. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ管理呼出しを受信するステップは、データを削除するグラフの名前、データを削除するピア識別、および削除するグラフに関連付けられたデータベースの名前を含む複数の呼出しパラメータを有するグラフ削除呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項1に記載の方法。
  8. アプリケーションプログラムとサーバプロセスの間で通信を行って、ピアツーピアグラフを管理する方法であって、
    前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフおよびノード情報管理呼出しを受信するステップと、
    前記グラフおよびノード情報管理呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記グラフおよびノード情報管理呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とする方法。
  9. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフおよびノード情報管理呼出しを受信するステップは、グラフハンドル、情報が望まれるノードのノード識別、および前記ノードについての情報を含むピアノード情報データ構造へのポインタを含む複数の呼出しパラメータを有するノード情報取得呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項8に記載の方法。
  10. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフおよびノード情報管理呼出しを受信するステップは、グラフハンドル、および前記ノードに関連付ける属性を表すストリングを含む複数の呼出しパラメータを有するノード属性設定呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項8に記載の方法。
  11. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフおよびノード情報管理呼出しを受信するステップは、グラフハンドル、およびグラフプロパティへのポインタを含む複数の呼出しパラメータを有するグラフプロパティ取得呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項8に記載の方法。
  12. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフおよびノード情報管理呼出しを受信するステップは、グループハンドル、現在前記グループの状況として設定されている1組のピアグラフ状況フラグを含む複数の呼出しパラメータを有するグラフ状況取得呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項8に記載の方法。
  13. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフおよびノード情報管理呼出しを受信するステップは、グラフハンドル、およびグラフプロパティデータ構造へのポインタを含む複数の呼出しパラメータを有するグラフプロパティ設定呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項8に記載の方法。
  14. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフおよびノード情報管理呼出しを受信するステップは、グラフハンドル、変換されるグラフ時間へのポインタ、およびグラフ時間から導出されたローカルシステム時間へのポインタを含む複数の呼出しパラメータを有するグラフ時間からのシステム変換呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項8に記載の方法。
  15. アプリケーションプログラムとサーバプロセスの間で通信をおこなって、ピアツーピアグラフを管理する方法であって、
    前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップと、
    前記レコード管理呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記レコード管理呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とする方法。
  16. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップは、グラフハンドル、レコードデータへのポインタ、およびグラフ内のレコードを一意に識別するレコード識別へのポインタを含む複数の呼出しパラメータを有するレコード追加呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項15に記載の方法。
  17. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップは、グラフハンドル、およびレコードに関連付ける新しいデータへのポインタを含む複数の呼出しパラメータを有するレコード更新呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項15に記載の方法。
  18. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップは、グラフハンドル、削除するレコードのレコード識別へのポインタ、および前記レコードがローカルデータベース内にあるかどうかの表示を含む複数の呼出しパラメータを有するレコード削除呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項15に記載の方法。
  19. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップは、グラフハンドル、取り出すレコードのレコード識別へのポインタ、および前記取り出されたレコードへのポインタを含む複数の呼出しパラメータを有するレコード取得呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項15に記載の方法。
  20. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップは、グラフハンドル、反復を行うレコードのタイプへのポインタ、レコードを反復すべきピア識別へのポインタ、および反復へのハンドルを含む複数の呼出しパラメータを有するレコード列挙呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項15に記載の方法。
  21. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップは、グラフハンドル、クエリが記述されたXMLストリング、および列挙ハンドルを含む複数の呼出しパラメータを有するレコード探索呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項15に記載の方法。
  22. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップは、グラフハンドル、再び妥当性検査をすべきレコード識別の配列内のレコード数、および再び妥当性検査をすべきレコード識別の前記配列を含む複数の呼出しパラメータを有する期間延長レコード妥当性検査呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項15に記載の方法。
  23. アプリケーションプログラムとサーバプロセスの間で通信を行って、ピアツーピアグラフを管理する方法であって、
    グラフハンドル、およびエクスポートされるデータを記憶すべきファイルへのパスを含む複数の呼出しパラメータを有するエクスポートデータベース呼出しを、前記アプリケーションプログラムから受信するステップと、
    前記エクスポートデータベース呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記エクスポートデータベース呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とする方法。
  24. アプリケーションプログラムとサーバプロセスの間で通信を行って、ピアツーピアグラフを管理する方法であって、
    グラフハンドル、およびインポートするファイルへのパスを含む複数の呼出しパラメータを有するインポートデータベース呼出しを、前記アプリケーションプログラムから受信するステップと、
    前記インポートデータベース呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記インポートデータベース呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とする方法。
  25. アプリケーションプログラムとサーバプロセスの間で通信を行って、ピアツーピアグラフを管理する方法であって、
    グラフハンドル、およびノードについての存在情報を前記グラフに押し流す必要性に関する表示を含む複数の呼出しパラメータを有する存在設定呼出しを、前記アプリケーションプログラムから受信するステップと、
    前記存在設定呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記存在設定呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とする方法。
  26. アプリケーションプログラムとサーバプロセスとの間で通信を行って、ピアツーピアグラフを管理する方法であって、
    グラフハンドル、ノードの一覧が望まれるピア識別、および存在するピアにわたって反復を行うために使用される列挙ハンドルへのポインタを含む複数の呼出しパラメータを有するノードの一覧呼出しを、前記アプリケーションプログラムから受信するステップと、
    前記ノードの一覧呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記ノードの一覧呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とする方法。
  27. アプリケーションプログラムとサーバプロセスとの間で通信を行って、ピアツーピアグラフを管理する方法であって、
    前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフユーティリティ機能呼出しを受信するステップと、
    前記グラフユーティリティ機能呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記グラフユーティリティ機能呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とする方法。
  28. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフユーティリティ機能呼出しを受信するステップは、列挙ハンドル、読み取るための複数のアイテムの計数値、および読み取られるためのアイテムの配列へのポインタを含む複数の呼出しパラメータを有する次のアイテム取得呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項27に記載の方法。
  29. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフユーティリティ機能呼出しを受信するステップは、クリーンアップするための一覧へのハンドルを含む複数の呼出しパラメータを有する列挙終了呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項27に記載の方法。
  30. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフユーティリティ関数呼出しを受信するステップは、グラフハンドル、および一覧内のいくつかのレコードの数を含む複数の呼出しパラメータを有するアイテム数取得呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項27に記載の方法。
  31. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフユーティリティ関数呼出しを受信するステップは、解放すべきアイテムへのポインタを含む複数の呼出しパラメータを有するデータ解放呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項27に記載の方法。
  32. アプリケーションプログラムとサーバプロセスとの間で通信を行って、ピアツーピアグラフを管理する方法であって、
    前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ直接通信管理呼出しを受信するステップと、
    前記グラフ直接通信管理呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記グラフ直接通信管理呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とする方法。
  33. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ直接通信管理呼出しを受信するステップは、グラフハンドル、所与のアドレスで接続される人の一意の識別、前記接続される人についての詳細を含む構造へのポインタ、および前記直接接続の通信識別を含む複数の呼出しパラメータを有する直接通信オープン呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項32に記載の方法。
  34. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ直接通信管理呼出しを受信するステップは、グラフハンドル、および切断する隣接者の識別を含む複数の呼出しパラメータを有する直接接続クローズ呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項32に記載の方法。
  35. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ直接通信管理呼出しを受信するステップは、グラフハンドル、データを送信する接続の一意の識別子、送信すべきデータのアプリケーション定義タイプ、前記データのバイト数、および前記隣接者に送信する前記データを含む複数の呼出しパラメータを有するデータ送信呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項32に記載の方法。
  36. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ直接通信管理呼出しを受信するステップは、グラフハンドル、列挙する接続のタイプ、および前記接続の一覧へのポインタを含む複数の呼出しパラメータを有する接続列挙呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項32に記載の方法。
  37. アプリケーションプログラムとサーバプロセスとの間で通信を行って、ピアツーピアグラフを管理する方法であって、
    前記アプリケーションプログラムから、複数の呼出しパラメータを有するイベントインフラストラクチャ管理呼出しを受信するステップと、
    前記イベントインフラストラクチャ管理呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記イベントインフラストラクチャ管理呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とする方法。
  38. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するイベントインフラストラクチャ管理呼出しを受信するステップは、グラフハンドル、新しいイベントに基づいて伝えられるNTイベントハンドル、ピアイベント登録構造の数、要求されている通知についてのデータを含むピアイベント登録構造の配列、および通知を登録抹消するための呼出しの中で使用することができるピアイベントハンドルへのポインタを含む複数の呼出しパラメータを有するイベント登録呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項37に記載の方法。
  39. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するイベントインフラストラクチャ管理呼出しを受信するステップは、登録抹消する前記イベントのピアイベントハンドルを含む複数の呼出しパラメータを有するイベント登録抹消呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項37に記載の方法。
  40. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するイベントインフラストラクチャ管理呼出しを受信するステップは、ピアイベントハンドル、および前記イベントデータへのポインタを含む複数の呼出しパラメータを有するイベントデータ取得呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項37に記載の方法。
  41. ピアツーピアグラフを管理するステップを実行するコンピュータ実行可能命令を有するコンピュータ読取可能な媒体であって、
    前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ管理呼出しを受信するステップと、
    前記グラフ管理呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記グラフ管理呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とするコンピュータ読取可能な媒体。
  42. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ管理呼出しを受信するステップは、グラフのプロパティ群、作成時に前記グラフに関連付けるデータベースの名前、前記グラフ用のセキュリティプロバイダについての情報、および前記グラフへのハンドルを含む複数の呼出しパラメータを有するグラフ作成呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項41に記載のコンピュータ読取可能な媒体。
  43. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ管理呼出しを受信するステップは、開かれるグラフの識別子である第1の一意の識別子、前記グラフを開く人の識別子である第2の一意の識別子、前記グラフ用のセキュリティプロバイダについての情報、配列内のレコードタイプ数、レコードが同期される順序を示すレコードタイプの配列、および前記グラフへのハンドルを含む複数の呼出しパラメータを有するグラフオープン呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項41に記載のコンピュータ読取可能な媒体。
  44. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ管理呼出しを受信するステップは、聴取するグラフへのハンドル、聴取するIPv6スコープ、聴取するIPv6スコープ識別子、および聴取するポートを含む複数の呼出しパラメータを有するグラフ聴取呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項41に記載のコンピュータ読取可能な媒体。
  45. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ管理呼出しを受信するステップは、接続されるグラフのハンドル、1つのIPアドレスで接続される人の一意の識別、前記人についての情報を含むデータ構造へのポインタ、および接続識別へのポインタを含む複数の呼出しパラメータを有するグラフ接続呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項41に記載のコンピュータ読取可能な媒体。
  46. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ管理呼出しを受信するステップは、切断するグラフへのハンドルを含む複数の呼出しパラメータを有するグラフクローズ呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項41に記載のコンピュータ読取可能な媒体。
  47. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ管理呼出しを受信するステップは、データを削除するグラフの名前、データを削除するピア識別、および、削除するグラフに関連付けられたデータベースの名前を含む複数の呼出しパラメータを有するグラフ削除呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項41に記載のコンピュータ読取可能な媒体。
  48. ピアツーピアグラフを管理するステップを実行するコンピュータ実行可能命令を有するコンピュータ読取可能な媒体であって、
    前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフおよびノード情報管理呼出しを受信するステップと、
    前記グラフおよびノード情報管理呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記グラフおよびノード情報管理呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とするコンピュータ読取可能な媒体。
  49. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフおよびノード情報管理呼出しを受信するステップは、グラフハンドル、情報が望まれるノードのノード識別、および前記ノードについての情報を含むピアノード情報データ構造へのポインタを含む複数の呼出しパラメータを有するノード情報取得呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項48に記載のコンピュータ読取可能な媒体。
  50. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフおよびノード情報管理呼出しを受信するステップは、グラフハンドル、および前記ノードに関連付ける属性を表すストリングを含む複数の呼出しパラメータを有するノード属性設定呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項48に記載のコンピュータ読取可能な媒体。
  51. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフおよびノード情報管理呼出しを受信するステップは、グラフハンドル、およびグラフプロパティへのポインタを含む複数の呼出しパラメータを有するグラフプロパティ取得呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項48に記載のコンピュータ読取可能な媒体。
  52. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフおよびノード情報管理呼出しを受信するステップは、グループハンドル、および現在前記グループの状況として設定されている1組のピアグラフ状況フラグを含む複数の呼出しパラメータを有するグラフ状況取得呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項48に記載のコンピュータ読取可能な媒体。
  53. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフおよびノード情報管理呼出しを受信するステップは、グラフハンドル、およびグラフプロパティデータ構造へのポインタを含む複数の呼出しパラメータを有するグラフプロパティ設定呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項48に記載のコンピュータ読取可能な媒体。
  54. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフおよびノード情報管理呼出しを受信するステップは、グラフハンドル、変換されるグラフ時間へのポインタ、およびグラフ時間から導出されたローカルシステム時間へのポインタを含む複数の呼出しパラメータを有するグラフ時間からのシステム変換呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項48に記載のコンピュータ読取可能な媒体。
  55. ピアツーピアグラフを管理するステップを実行するコンピュータ実行可能命令を有するコンピュータ読取可能な媒体であって、
    前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップと、
    前記レコード管理呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記レコード管理呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とするコンピュータ読取可能な媒体。
  56. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップは、グラフハンドル、レコードデータへのポインタ、およびグラフ内のレコードを一意に識別するレコード識別へのポインタを含む複数の呼出しパラメータを有するレコード追加呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項55に記載のコンピュータ読取可能な媒体。
  57. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップは、グラフハンドル、およびレコードに関連付ける新しいデータへのポインタを含む複数の呼出しパラメータを有するレコード更新呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項55に記載のコンピュータ読取可能な媒体。
  58. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップは、グラフハンドル、削除するレコードのレコード識別へのポインタ、および前記レコードがローカルデータベース内にあるかどうかの表示を含む複数の呼出しパラメータを有するレコード削除呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項55に記載のコンピュータ読取可能な媒体。
  59. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップは、グラフハンドル、取り出すレコードのレコード識別へのポインタ、および前記取り出されたレコードへのポインタを含む複数の呼出しパラメータを有するレコード取得呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項55に記載のコンピュータ読取可能な媒体。
  60. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップは、グラフハンドル、反復を行うレコードのタイプへのポインタ、レコードを反復すべきピア識別へのポインタ、および反復へのハンドルを含む複数の呼出しパラメータを有するレコード列挙呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項55に記載のコンピュータ読取可能な媒体。
  61. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップは、グラフハンドル、クエリが記述されたXMLストリング、および列挙ハンドルを含む複数の呼出しパラメータを有するレコード探索呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項55に記載のコンピュータ読取可能な媒体。
  62. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するレコード管理呼出しを受信するステップは、グラフハンドル、再び妥当性検査をすべきレコード識別の配列内のレコード数、および再び妥当性検査をすべきレコード識別の前記配列を含む複数の呼出しパラメータを有する期間延長レコード妥当性検査呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項55に記載のコンピュータ読取可能な媒体。
  63. ピアツーピアグラフを管理するステップを実行するコンピュータ実行可能命令を有するコンピュータ読取可能な媒体であって、
    グラフハンドル、およびエクスポートされるデータを記憶すべきファイルへのパスを含む複数の呼出しパラメータを有するエクスポートデータベース呼出しを、前記アプリケーションプログラムから受信するステップと、
    前記エクスポートデータベース呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記エクスポートデータベース呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とするコンピュータ読取可能な媒体。
  64. ピアツーピアグラフを管理するステップを実行するコンピュータ実行可能命令を有するコンピュータ読取可能な媒体であって、
    グラフハンドル、およびインポートするファイルへのパスを含む複数の呼出しパラメータを有するインポートデータベース呼出しを、前記アプリケーションプログラムから受信するステップと、
    前記インポートデータベース呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記インポートデータベース呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とするコンピュータ読取可能な媒体。
  65. ピアツーピアグラフを管理するためのステップを実行するコンピュータ実行可能命令を有するコンピュータ読取可能な媒体であって、
    グラフハンドル、およびノードについての存在情報を前記グラフに押し流す必要性に関する表示を含む複数の呼出しパラメータを有する存在設定呼出しを、前記アプリケーションプログラムから受信するステップと、
    前記存在設定呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記存在設定呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とするコンピュータ読取可能な媒体。
  66. ピアツーピアグラフを管理するステップを実行するコンピュータ実行可能命令を有するコンピュータ読取可能な媒体であって、
    グラフハンドル、ノードの一覧が望まれるピア識別、および存在するピアにわたって反復を行うために使用される列挙ハンドルへのポインタを含む複数の呼出しパラメータを有するノードの一覧呼出しを、前記アプリケーションプログラムから受信するステップと、
    前記ノードの一覧呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記ノードの一覧呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とするコンピュータ読取可能な媒体。
  67. ピアツーピアグラフを管理するステップを実行するコンピュータ実行可能命令を有するコンピュータ読取可能な媒体であって、
    前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフユーティリティ機能呼出しを受信するステップと、
    前記グラフユーティリティ機能呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記グラフユーティリティ機能呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とするコンピュータ読取可能な媒体。
  68. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフユーティリティ機能呼出しを受信するステップは、列挙ハンドル、読み取るための複数のアイテムの計数値、および読み取られるためのアイテムの配列へのポインタを含む複数の呼出しパラメータを有する次のアイテム取得呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項67に記載のコンピュータ読取可能な媒体。
  69. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフユーティリティ機能呼出しを受信するステップは、クリーンアップするための一覧へのハンドルを含む複数の呼出しパラメータを有する列挙終了呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項67に記載のコンピュータ読取可能な媒体。
  70. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフユーティリティ機能呼出しを受信するステップは、グラフハンドル、および一覧内のいくつかのレコードの数を含む複数の呼出しパラメータを有するアイテム数取得呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項67に記載のコンピュータ読取可能な媒体。
  71. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフユーティリティ機能呼出しを受信するステップは、解放すべきアイテムへのポインタを含む複数の呼出しパラメータを有するデータ解放呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項67に記載のコンピュータ読取可能な媒体。
  72. ピアツーピアグラフを管理するステップを実行するコンピュータ実行可能命令を有するコンピュータ読取可能な媒体であって、
    前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ直接通信管理呼出しを受信するステップと、
    前記グラフ直接通信管理呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記グラフ直接通信管理呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とするコンピュータ読取可能な媒体。
  73. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ直接通信管理呼出しを受信するステップは、グラフハンドル、所与のアドレスで接続される人の一意の識別、前記接続される人についての詳細を含む構造へのポインタ、および前記直接接続の通信識別を含む複数の呼出しパラメータを有する直接通信オープン呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項72に記載のコンピュータ読取可能な媒体。
  74. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ直接通信管理呼出しを受信するステップは、グラフハンドル、および切断する隣接者の識別を含む複数の呼出しパラメータを有する直接接続クローズ呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項72に記載のコンピュータ読取可能な媒体。
  75. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ直接通信管理呼出しを受信するステップは、グラフハンドル、データを送信する接続の一意の識別子、送信すべきデータのアプリケーション定義タイプ、前記データのバイト数、および前記隣接者に送信する前記データを含む複数の呼出しパラメータを有するデータ送信呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項72に記載のコンピュータ読取可能な媒体。
  76. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するグラフ直接通信管理呼出しを受信するステップは、グラフハンドル、列挙する接続のタイプ、および前記接続の一覧へのポインタを含む複数の呼出しパラメータを有する接続列挙呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項72に記載のコンピュータ読取可能な媒体。
  77. ピアツーピアグラフを管理するステップを実行するコンピュータ実行可能命令を有するコンピュータ読取可能な媒体であって、
    前記アプリケーションプログラムから、複数の呼出しパラメータを有するイベントインフラストラクチャ管理呼出しを受信するステップと、
    前記イベントインフラストラクチャ管理呼出しを構文解析し、前記パラメータを取り出すステップと、
    前記イベントインフラストラクチャ管理呼出しの成功/失敗を示す値を前記アプリケーションプログラムに返すステップと
    を備えたことを特徴とするコンピュータ読取可能な媒体。
  78. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するイベントインフラストラクチャ管理呼出しを受信するステップは、グラフハンドル、新しいイベントに基づいて伝えられるNTイベントハンドル、ピアイベント登録構造の数、要求されている通知についてのデータを含むピアイベント登録構造の配列、および通知を登録抹消するための呼出しの中で使用することができるピアイベントハンドルへのポインタを含む複数の呼出しパラメータを有するイベント登録呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項77に記載のコンピュータ読取可能な媒体。
  79. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するイベントインフラストラクチャ管理呼出しを受信するステップは、登録抹消する前記イベントのピアイベントハンドルを含む複数の呼出しパラメータを有するイベント登録抹消呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項77に記載のコンピュータ読取可能な媒体。
  80. 前記アプリケーションプログラムから、複数の呼出しパラメータを有するイベントインフラストラクチャ管理呼出しを受信するステップは、ピアイベントハンドル、および前記イベントデータへのポインタを含む複数の呼出しパラメータを有するイベントデータ取得呼出しを、前記アプリケーションプログラムから受信するステップを含むことを特徴とする請求項77に記載のコンピュータ読取可能な媒体。
JP2003403827A 2002-12-04 2003-12-02 ピアツーピアグラフ管理インタフェースおよび方法 Pending JP2004236288A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/309,865 US7430747B2 (en) 2002-12-04 2002-12-04 Peer-to peer graphing interfaces and methods

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011043134A Division JP2011188486A (ja) 2002-12-04 2011-02-28 ピアツーピアグラフ管理インタフェースおよび方法

Publications (1)

Publication Number Publication Date
JP2004236288A true JP2004236288A (ja) 2004-08-19

Family

ID=32467934

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2003403827A Pending JP2004236288A (ja) 2002-12-04 2003-12-02 ピアツーピアグラフ管理インタフェースおよび方法
JP2011043134A Withdrawn JP2011188486A (ja) 2002-12-04 2011-02-28 ピアツーピアグラフ管理インタフェースおよび方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2011043134A Withdrawn JP2011188486A (ja) 2002-12-04 2011-02-28 ピアツーピアグラフ管理インタフェースおよび方法

Country Status (3)

Country Link
US (1) US7430747B2 (ja)
EP (2) EP2527997A3 (ja)
JP (2) JP2004236288A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150133498A (ko) * 2014-05-20 2015-11-30 한양대학교 산학협력단 프로그램의 시그니처를 생성하는 시그니처 생성 장치 및 방법, 시그니처의 악성 코드를 검출하는 악성 코드 검출 장치 및 방법

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7539697B1 (en) 2002-08-08 2009-05-26 Spoke Software Creation and maintenance of social relationship network graphs
US7613812B2 (en) 2002-12-04 2009-11-03 Microsoft Corporation Peer-to-peer identity management interfaces and methods
US7437440B2 (en) * 2003-01-27 2008-10-14 Microsoft Corporation Peer-to-peer networking framework application programming interfaces
US7139760B2 (en) * 2003-01-27 2006-11-21 Microsoft Corporation Peer-to-peer record structure and query language for searching and discovery thereof
US7398307B2 (en) * 2003-04-30 2008-07-08 Hewlett-Packard Development Company, L.P. Method and system for managing a network
US20040254977A1 (en) * 2003-06-13 2004-12-16 Microsoft Corporation Extensible peer-to-peer graphing messages
US7397922B2 (en) 2003-06-27 2008-07-08 Microsoft Corporation Group security
US7581010B2 (en) * 2003-07-14 2009-08-25 Microsoft Corporation Virtual connectivity with local connection translation
US7769866B2 (en) 2003-07-14 2010-08-03 Microsoft Corporation Virtual connectivity with subscribe-notify service
US7624421B2 (en) * 2003-07-31 2009-11-24 Microsoft Corporation Method and apparatus for managing and displaying contact authentication in a peer-to-peer collaboration system
US20050283753A1 (en) * 2003-08-07 2005-12-22 Denise Ho Alert triggers and event management in a relationship system
US7188254B2 (en) * 2003-08-20 2007-03-06 Microsoft Corporation Peer-to-peer authorization method
US8260857B2 (en) * 2003-10-23 2012-09-04 Microsoft Corporation One to many data projection system and method
US7496648B2 (en) * 2003-10-23 2009-02-24 Microsoft Corporation Managed peer name resolution protocol (PNRP) interfaces for peer to peer networking
US7949996B2 (en) * 2003-10-23 2011-05-24 Microsoft Corporation Peer-to-peer identity management managed interfaces and methods
US7716273B2 (en) * 2003-10-24 2010-05-11 Microsoft Corporation Systems and methods for projecting content from computing devices
US8688803B2 (en) 2004-03-26 2014-04-01 Microsoft Corporation Method for efficient content distribution using a peer-to-peer networking infrastructure
KR100694079B1 (ko) * 2005-01-08 2007-03-12 학교법인 대양학원 유무선 통합 네트워크에서 p2p 서비스를 위한 데이터다운로드 방법 및 그 노드
US7647394B2 (en) * 2005-02-15 2010-01-12 Microsoft Corporation Scaling UPnP v1.0 device eventing using peer groups
US7640329B2 (en) * 2005-02-15 2009-12-29 Microsoft Corporation Scaling and extending UPnP v1.0 device discovery using peer groups
US20060193265A1 (en) * 2005-02-25 2006-08-31 Microsoft Corporation Peer-to-peer name resolution protocol with lightweight traffic
US7826396B2 (en) 2005-03-07 2010-11-02 Miller John L System and method for implementing PNRP locality
US7493413B2 (en) * 2005-03-15 2009-02-17 Microsoft Corporation APIS to build peer to peer messaging applications
US7543023B2 (en) * 2005-03-15 2009-06-02 Microsoft Corporation Service support framework for peer to peer applications
US7912959B2 (en) * 2005-03-15 2011-03-22 Microsoft Corporation Architecture for building a peer to peer messaging platform
US7656810B2 (en) 2005-03-25 2010-02-02 Microsoft Corporation System and method for monitoring and reacting to peer-to-peer network metrics
US20060239206A1 (en) * 2005-04-22 2006-10-26 Microsoft Corporation Apparatus and method for network identification among multiple applications
US7571228B2 (en) * 2005-04-22 2009-08-04 Microsoft Corporation Contact management in a serverless peer-to-peer system
US7616594B2 (en) * 2005-04-22 2009-11-10 Microsoft Corporation Wireless device discovery and configuration
US7817647B2 (en) * 2005-04-22 2010-10-19 Microsoft Corporation Flower-petal resolutions for PNRP
US8036140B2 (en) * 2005-04-22 2011-10-11 Microsoft Corporation Application programming interface for inviting participants in a serverless peer to peer network
US20060242235A1 (en) * 2005-04-22 2006-10-26 Microsoft Corporation Presence monitoring in a serverless peer-to-peer system
US7716630B2 (en) * 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7877350B2 (en) 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US20070050450A1 (en) * 2005-08-29 2007-03-01 Microsoft Corporation Interfacing an applet with a collaboration program
US7594031B2 (en) 2005-09-15 2009-09-22 Microsoft Corporation Network address selection
US20070073859A1 (en) * 2005-09-29 2007-03-29 Microsoft Corporation Peer name resolution and discovery
US8255546B2 (en) * 2005-09-30 2012-08-28 Microsoft Corporation Peer name resolution protocol simple application program interface
US8108548B2 (en) * 2005-12-22 2012-01-31 Microsoft Corporation Methodology and system for file replication based on a peergroup
US20070240050A1 (en) * 2006-04-10 2007-10-11 Graphwise, Llc System and method for presenting to a user a preferred graphical representation of tabular data
US20070250590A1 (en) * 2006-04-21 2007-10-25 Microsoft Corporation Ad-hoc proxy for discovery and retrieval of dynamic data such as a list of active devices
GB2437574B (en) * 2006-04-28 2008-06-25 Motorola Inc Receiver for use in wireless communications and method of operation of the receiver
EP2527983A3 (en) 2006-08-10 2013-06-12 Ab Initio Technology LLC Distributing services in graph-based computations
US8706667B2 (en) * 2007-07-26 2014-04-22 Ab Initio Technology Llc Transactional graph-based computation with error handling
WO2009151502A2 (en) * 2008-04-08 2009-12-17 Allgress, Inc. Enterprise information security management software used to prove return on investment of security projects and activities using interactive graphs
US20100185769A1 (en) * 2009-01-16 2010-07-22 Amlogic Co., Ltd. Methods for Downloading a File to Consumer Electronic Devices via a Peer-to-peer Network
CN105843684B (zh) * 2009-02-13 2020-03-03 起元技术有限责任公司 管理任务执行
US8516594B2 (en) * 2009-04-24 2013-08-20 Jeff Bennett Enterprise information security management software for prediction modeling with interactive graphs
US20100293203A1 (en) * 2009-05-18 2010-11-18 Henry Roberts Williams User interface for graph database data
US8667329B2 (en) * 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
CN101729675B (zh) * 2009-12-24 2014-01-01 中兴通讯股份有限公司 基于彩信业务的适配方法及适配器装置
WO2011159759A1 (en) 2010-06-15 2011-12-22 Ab Initio Technology Llc Dynamically loading graph-based computations
EP2413254A1 (en) * 2010-07-27 2012-02-01 Alcatel Lucent System and method for accessing collaborative multimedia content
US8902761B2 (en) * 2010-12-15 2014-12-02 At&T Intellectual Property I, L.P. Method and apparatus for providing long term evolution network topology management
CN102523254B (zh) * 2011-11-29 2014-08-13 曙光信息产业(北京)有限公司 一种云计算环境自动分配系统资源的方法
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9507682B2 (en) 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
EP3092557B1 (en) 2013-12-05 2024-03-27 AB Initio Technology LLC Managing interfaces for dataflow graphs composed of sub-graphs
CN104407873B (zh) * 2014-12-05 2017-10-20 努比亚技术有限公司 基于日历管理应用的方法及装置
US9304835B1 (en) 2014-12-31 2016-04-05 International Business Machines Corporation Optimized system for analytics (graphs and sparse matrices) operations
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10936674B2 (en) * 2015-08-20 2021-03-02 Airwatch Llc Policy-based trusted peer-to-peer connections
US10585943B2 (en) 2015-11-24 2020-03-10 Cisco Technology, Inc. Network-wide, location-independent object identifiers for high-performance distributed graph databases
WO2017112654A2 (en) 2015-12-21 2017-06-29 Ab Initio Technology Llc Sub-graph interface generation
US10333786B2 (en) * 2016-07-15 2019-06-25 Dell Products L.P. System and method for refreshing an information handling system using many to one peer based communication
TWI685272B (zh) 2017-09-27 2020-02-11 關隆股份有限公司 無線系統的連線方法
US11290481B2 (en) 2020-07-09 2022-03-29 Bank Of America Corporation Security threat detection by converting scripts using validation graphs
US20220334891A1 (en) * 2021-04-14 2022-10-20 Nvidia Corporation Application programming interface to modify incomplete graph code
US20230011957A1 (en) * 2021-07-09 2023-01-12 Vmware, Inc. Detecting threats to datacenter based on analysis of anomalous events
US20230222010A1 (en) * 2022-01-10 2023-07-13 Nvidia Corporation Application programming interface to indicate execution of graph nodes

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10149398A (ja) * 1996-09-09 1998-06-02 Hewlett Packard Co <Hp> マップ構築システムおよびマップ構築方法
JPH11205331A (ja) * 1998-01-14 1999-07-30 Fujitsu Ltd ネットワークの制御装置
JPH11265369A (ja) * 1998-03-18 1999-09-28 Nippon Telegr & Teleph Corp <Ntt> 相互関係表示装置
JPH11345130A (ja) * 1998-04-29 1999-12-14 Hewlett Packard Co <Hp> 複数のデ―タストアの同期をとってデ―タ整合性を達成する方法
JP2000151715A (ja) * 1998-11-05 2000-05-30 Toyo Commun Equip Co Ltd ネットワーク制御方法
JP2000222373A (ja) * 1999-01-29 2000-08-11 Internatl Business Mach Corp <Ibm> マルチクラスタ化コンピュ―タ・システムを構成及び管理する方法及び装置
JP2002281086A (ja) * 2001-03-19 2002-09-27 Kddi Corp トラヒック監視方法およびシステム
JP2003518667A (ja) * 1999-12-22 2003-06-10 インテル・コーポレーション ネットワークデバイスのためのオープンアーキテクチャにおいて、専有転送要素が標準的制御要素と相互運用することを可能にするための方法および装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047280A (en) * 1996-10-25 2000-04-04 Navigation Technologies Corporation Interface layer for navigation system
US5987376A (en) 1997-07-16 1999-11-16 Microsoft Corporation System and method for the distribution and synchronization of data and state information between clients in a distributed processing system
US6061692A (en) * 1997-11-04 2000-05-09 Microsoft Corporation System and method for administering a meta database as an integral component of an information server
US6920455B1 (en) * 1999-05-19 2005-07-19 Sun Microsystems, Inc. Mechanism and method for managing service-specified data in a profile service
US7159223B1 (en) * 2000-05-12 2007-01-02 Zw Company, Llc Methods and systems for applications to interact with hardware
US7065587B2 (en) 2001-04-02 2006-06-20 Microsoft Corporation Peer-to-peer name resolution protocol (PNRP) and multilevel cache for use therewith
US7493363B2 (en) 2001-09-19 2009-02-17 Microsoft Corporation Peer-to-peer group management and method for maintaining peer-to-peer graphs
US7068789B2 (en) 2001-09-19 2006-06-27 Microsoft Corporation Peer-to-peer name resolution protocol (PNRP) group security infrastructure and method
US7299351B2 (en) 2001-09-19 2007-11-20 Microsoft Corporation Peer-to-peer name resolution protocol (PNRP) security infrastructure and method
US7613812B2 (en) 2002-12-04 2009-11-03 Microsoft Corporation Peer-to-peer identity management interfaces and methods

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10149398A (ja) * 1996-09-09 1998-06-02 Hewlett Packard Co <Hp> マップ構築システムおよびマップ構築方法
JPH11205331A (ja) * 1998-01-14 1999-07-30 Fujitsu Ltd ネットワークの制御装置
JPH11265369A (ja) * 1998-03-18 1999-09-28 Nippon Telegr & Teleph Corp <Ntt> 相互関係表示装置
JPH11345130A (ja) * 1998-04-29 1999-12-14 Hewlett Packard Co <Hp> 複数のデ―タストアの同期をとってデ―タ整合性を達成する方法
JP2000151715A (ja) * 1998-11-05 2000-05-30 Toyo Commun Equip Co Ltd ネットワーク制御方法
JP2000222373A (ja) * 1999-01-29 2000-08-11 Internatl Business Mach Corp <Ibm> マルチクラスタ化コンピュ―タ・システムを構成及び管理する方法及び装置
JP2003518667A (ja) * 1999-12-22 2003-06-10 インテル・コーポレーション ネットワークデバイスのためのオープンアーキテクチャにおいて、専有転送要素が標準的制御要素と相互運用することを可能にするための方法および装置
JP2002281086A (ja) * 2001-03-19 2002-09-27 Kddi Corp トラヒック監視方法およびシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150133498A (ko) * 2014-05-20 2015-11-30 한양대학교 산학협력단 프로그램의 시그니처를 생성하는 시그니처 생성 장치 및 방법, 시그니처의 악성 코드를 검출하는 악성 코드 검출 장치 및 방법
KR101583932B1 (ko) 2014-05-20 2016-01-11 한양대학교 산학협력단 프로그램의 시그니처를 생성하는 시그니처 생성 장치 및 방법, 시그니처의 악성 코드를 검출하는 악성 코드 검출 장치 및 방법

Also Published As

Publication number Publication date
JP2011188486A (ja) 2011-09-22
EP2527997A3 (en) 2017-11-29
EP2527997A2 (en) 2012-11-28
EP1434144A2 (en) 2004-06-30
EP1434144A3 (en) 2009-07-22
US20040111469A1 (en) 2004-06-10
US7430747B2 (en) 2008-09-30

Similar Documents

Publication Publication Date Title
JP2004236288A (ja) ピアツーピアグラフ管理インタフェースおよび方法
US7596625B2 (en) Peer-to-peer grouping interfaces and methods
US7437440B2 (en) Peer-to-peer networking framework application programming interfaces
US7263560B2 (en) Decentralized peer-to-peer advertisement
US9648101B2 (en) Synchronization of web service endpoints in a multi-master synchronization environment
US7640329B2 (en) Scaling and extending UPnP v1.0 device discovery using peer groups
US7647394B2 (en) Scaling UPnP v1.0 device eventing using peer groups
US7783777B1 (en) Peer-to-peer content sharing/distribution networks
US8204992B2 (en) Presence detection using distributed indexes in peer-to-peer networks
US7206934B2 (en) Distributed indexing of identity information in a peer-to-peer network
US7657597B2 (en) Instant messaging using distributed indexes
US7484225B2 (en) System and method for describing and identifying abstract software modules in peer-to-peer network environments
US8977686B2 (en) Distributed routing table interface
US7401153B2 (en) Peer-to-peer computing architecture
US7487509B2 (en) System and method for providing multiple embodiments of abstract software modules in peer-to-peer network environments
EP1253766B1 (en) Peer group name server
US20040030794A1 (en) System and method for multiplatform implementation of abstract software modules in peer-to-peer network environments
JP2009534939A (ja) アクティブなデバイスのリストなど動的データの発見および取出しのためのアドホックプロキシ
BRPI0620114A2 (pt) dispositivo de comunicaÇço de rede, mÉtodo para comunicaÇço, e, programa armazenado em um meio de legÍvel por mÁquina
US20140089383A1 (en) Method and system for automatic detecting and resolving apis
CN114025005B (zh) 一种数据通讯方法、系统、电子设备及存储介质
Harrison et al. The web services resource framework in a peer-to-peer context
Srinivasan et al. BonAHA: service discovery framework for mobile Ad-Hoc applications
Tsietsi Prototyping a peer-to-peer session initiation protocol user agent
Heinzer Distributed iServer Architecture Based on Peer-to-Peer Concepts

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090814

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090821

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100122

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100422

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100427

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100524

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100527

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100622

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100625

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100722

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101026

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110228

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20110301

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110301