(57)【要約】  複数のコンテンツノードと、コンテンツルーターのコマンドメモリとの間で情報に対する変更をルーティングするための方法、装置及びシステム。コンテンツノードは、ユーザ装置（例えば、移動電話）及びユーザアカウント（例えば、ｅメールアカウント）である。コンテンツノードは、１つ以上のコンテンツタイプ、例えば、ｅメール、連絡先、タスク、事象、及びライブラリーアイテムを保持する。コマンドメモリは、コンテンツルーティングシステム内の衝突検出、回避、及びエラー処理に集中する。【選択図】      図２【特許請求の範囲】
【請求項１】
複数のコンテンツノードとコマンドメモリとの間で情報に対する変更をルーティングするためのコンテンツルーティングシステムにおいて、
記憶及び転送ロジックを備え、該ロジックは、
第１のコンテンツノードからの入コマンドを処理し、その入コマンドのコンテンツタイプ及び１つ以上のルーティングパラメータに基づき行先コンテンツノードのセットを選択し、そしてその選択された行先コンテンツノードの各々に対する出コマンドを発生するための処理ロジックと、
前記処理ロジックに結合されて、前記入コマンドと、前記出コマンドのセットとを保持するためのコマンドメモリと、
を含むものであり、更に、
前記処理ロジックに結合されて、前記１つ以上のルーティングパラメータを保持するための接続データセットコンフィギュレーション、
を備えたコンテンツルーティングシステム。
【請求項２】
第１プロトコルとコマンドプロトコルとの間で変換を行なうプロトコル変換ロジックを更に備えた、請求項１に記載のコンテンツルーティングシステム。
【請求項３】
前記プロトコル変換ロジックは、共通のプロトコルと前記コマンドプロトコルとの間で変換を行なうプロトコルアダプタを含む、請求項２に記載のコンテンツルーティングシステム。
【請求項４】
前記共通のプロトコルとコマンドプロトコルとの間の変換は、複数のコマンドを有する共通のプロトコル内のメッセージを、前記コマンドプロトコル内の個別のコマンドへ変換することを含む、請求項３に記載のコンテンツルーティングシステム。
【請求項５】
前記第１プロトコルとコマンドプロトコルとの間の変換は、複数のコマンドを有する第１プロトコル内のメッセージを、前記コマンドプロトコル内の個別のコマンドへ変換することを含む、請求項２に記載のコンテンツルーティングシステム。
【請求項６】
前記プロトコル変換ロジックは、更に、前記第１プロトコルと共通のプロトコルとの間で変換を行なうためのゲートウェイを含む、請求項２に記載のコンテンツルーティングシステム。
【請求項７】
前記プロトコル変換ロジックは、
前記第１プロトコルと共通のプロトコルとの間で変換を行なうためのゲートウェイと、
前記共通のプロトコルと前記コマンドプロトコルとの間で変換を行なうためのプロトコルアダプタと、
を含む請求項２に記載のコンテンツルーティングシステム。
【請求項８】
前記１つ以上のルーティングパラメータは、前記コンテンツノードの能力に基づくパラメータを含む、請求項１に記載のコンテンツルーティングシステム。
【請求項９】
前記コンテンツタイプは、連絡先コンテンツタイプであり、そして前記１つ以上のルーティングパラメータは、電話番号が要求されたことを指示するパラメータを含む、請求項１に記載のコンテンツルーティングシステム。
【請求項１０】
前記コンテンツタイプは、事象コンテンツタイプであり、そして前記１つ以上のルーティングパラメータは、将来の所定の期間内に生じるルーティング事象を指示するパラメータを含む、請求項１に記載のコンテンツルーティングシステム。
【請求項１１】
前記コンテンツタイプは、タスクコンテンツタイプであり、そして前記１つ以上のルーティングパラメータは、将来の所定の期間内に行なうべきルーティングタスクを指示するパラメータを含む、請求項１に記載のコンテンツルーティングシステム。
【請求項１２】
前記コンテンツタイプは、ｅメールコンテンツタイプであり、そして前記１つ以上のルーティングパラメータは、コンテンツノードがいっぱいであるかどうかを指示するパラメータを含む、請求項１に記載のコンテンツルーティングシステム。
【請求項１３】
前記コンテンツタイプは、ｅメールコンテンツタイプであり、そして前記１つ以上のルーティングパラメータは、１つ以上のアタッチメントをもつｅメールメッセージを阻止することを示すパラメータを含む、請求項１に記載のコンテンツルーティングシステム。
【請求項１４】
前記コンテンツタイプは、メディアライブラリーコンテンツタイプであり、そして前記１つ以上のルーティングパラメータは、特定のメディアタイプのルーティングコマンドを指示するパラメータを含む、請求項１に記載のコンテンツルーティングシステム。
【請求項１５】
前記処理ロジックに結合され、通知信号をゲートウェイに送信するための通知ロジックを更に備えた、請求項１に記載のコンテンツルーティングシステム。
【請求項１６】
前記プロトコルアダプタは、リモートプロセデュアコーリング（ＲＰＣ）プロトコルインターフェイスを使用することを含む、請求項３に記載のコンテンツルーティングシステム。
【請求項１７】
前記ＲＰＣプロトコルは、ＸＭＬ−ＲＰＣプロトコルを含む、請求項１６に記載のコンテンツルーティングシステム。
【請求項１８】
前記コマンドメモリは、入コマンドを保持するための入待ち行列と、出コマンドのセットを保持するための出待ち行列とを含む、請求項１に記載のコンテンツルーティングシステム。
【請求項１９】
前記コマンドメモリは、入コマンドと、出コマンドのセットとを保持するためのデータベースを含み、各コマンドは、コマンドの状態を識別する属性を有する、請求項１に記載のコンテンツルーティングシステム。
【請求項２０】
前記状態は、入待ち行列の状態及び出待ち行列の状態を含む、請求項１９に記載のコンテンツルーティングシステム。
【請求項２１】
前記状態は、更に、出イン・トランシット待ち行列の状態を含む、請求項２０に記載のコンテンツルーティングシステム。
【請求項２２】
前記状態は、更に、入イン・トランシット待ち行列の状態を含む、請求項２０に記載のコンテンツルーティングシステム。
【請求項２３】
前記処理ロジックは、前記入コマンドと前記コマンドメモリ内のコマンドとの間の衝突を回避するように動作できる、請求項１に記載のコンテンツルーティングシステム。
【請求項２４】
前記処理ロジックは、選択された行先コンテンツノードへ出コマンドを送信する前に、入コマンドを受け取るように動作できる、請求項１に記載のコンテンツルーティングシステム。
【請求項２５】
前記処理ロジックは、選択された行先コンテンツノードから入コマンドのセットを受け取るように動作できると共に、前記行先コンテンツノードへ１つ以上の出コマンドを送信する前に、入コマンドのセットと、１つ以上の出コマンドとの間の衝突を回避する、請求項１に記載のコンテンツルーティングシステム。
【請求項２６】
１つ以上のコンテンツノードに結合するためのゲートウェイサーバーを更に備えた、請求項１に記載のコンテンツルーティングシステム。
【請求項２７】
前記ゲートウェイサーバーは、１つ以上のユーザ装置に結合するための装置ゲートウェイサーバーを含む、請求項２６に記載のコンテンツルーティングシステム。
【請求項２８】
前記ゲートウェイサーバーは、１つ以上のユーザアカウントに結合するためのサーバーゲートウェイサーバーを含む、請求項２６に記載のコンテンツルーティングシステム。
【請求項２９】
前記ゲートウェイサーバーは、
１つ以上のユーザ装置に結合するための装置ゲートウェイサーバーと、
１つ以上のユーザアカウントに結合するためのサーバーゲートウェイサーバーと、
を備えた請求項２６に記載のコンテンツルーティングシステム。
【請求項３０】
前記記憶及び転送ロジックを前記装置ゲートウェイサーバー及びサーバーゲートウェイサーバーに接続するためのプロトコルアダプタを更に備えた、請求項２９に記載のコンテンツルーティングシステム。
【請求項３１】
複数のコンテンツノードとコマンドメモリとの間で情報に対する変更をルーティングする方法において、コンテンツルーターでは、
第１コンテンツノードから入コマンドを受け取り、
前記第１コンテンツノードに関連したコマンドメモリに前記入コマンドを記憶し、
前記入コマンドのコンテンツタイプと、行先コンテンツノード及びコンテンツタイプに関連したルーティングパラメータとに基づき、行先コンテンツノードのセットを選択し、
更に、その選択された行先コンテンツノードの各々に対して、
出コマンドを発生し、
衝突が生じない場合に前記出コマンドを前記コマンドメモリに記憶する、
という段階を備えた方法。
【請求項３２】
前記入コマンドを処理する段階を更に備え、この処理は、前記入コマンドと、前記第１コンテンツノードに関連した前記コマンドメモリ内の衝突コマンドとの間の衝突を回避することを含み、更に、前記入コマンドの記憶は、前記処理されたコマンドを記憶することを含む、請求項３１に記載の方法。
【請求項３３】
前記衝突の回避は、前記コマンドメモリから前記衝突コマンドを除去することを含む、請求項３２に記載の方法。
【請求項３４】
前記衝突の回避は、前記入コマンドを、前記コマンドメモリからの前記衝突コマンドと合併することを含む、請求項３２に記載の方法。
【請求項３５】
前記衝突の回避は、前記入コマンドを破棄することを含む、請求項３２に記載の方法。
【請求項３６】
前記衝突の回避は、前記入コマンドを破棄し、そして前記コマンドメモリから前記衝突コマンドを除去することを含む、請求項３２に記載の方法。
【請求項３７】
前記入コマンドは、ｅメールメッセージを削除するためのコマンドを含み、
前記コマンドメモリにおける衝突コマンドは、同じｅメールメッセージに関連したコマンドを含み、そして
前記衝突の回避は、前記コマンドメモリから衝突コマンドを除去することを含む、請求項３２に記載の方法。
【請求項３８】
前記コマンドメモリにおける衝突コマンドは、ｅメールメッセージを追加するためのコマンドを含み、
前記入コマンドは、ｅメールメッセージの読み取りフラグを更新するためのコマンドを含み、そして
前記衝突の回避は、前記コマンドメモリからの衝突コマンド及び入コマンドを合併させることを含む、請求項３２に記載の方法。
【請求項３９】
前記入コマンドを前記合併されたコマンドに置き換え、そして前記コマンドメモリにおける衝突コマンドを除去する段階を更に備えた、請求項３８に記載の方法。
【請求項４０】
前記入コマンドを破棄し、そして前記コマンドメモリにおける衝突コマンドを前記合併されたコマンドに置き換える段階を更に備えた、請求項３８に記載の方法。
【請求項４１】
出コマンドを処理する段階を更に備え、この出コマンドの処理は、出コマンドと、選択された行先コンテンツノードに関連したコマンドメモリ内の衝突コマンドとの間の衝突を回避することを含み、そして出コマンドの記憶は、処理された出コマンドを記憶することを含む、請求項３１に記載の方法。
【請求項４２】
前記衝突の回避は、前記コマンドメモリから衝突コマンドを除去することを含む、請求項４１に記載の方法。
【請求項４３】
前記衝突の回避は、前記コマンドメモリからの衝突コマンドを出コマンドに合併させることを含む、請求項４１に記載の方法。
【請求項４４】
前記衝突の回避は、出コマンドを破棄することを含む、請求項４１に記載の方法。
【請求項４５】
前記衝突の回避は、出コマンドを破棄し、そして前記コマンドメモリから衝突コマンドを除去することを含む、請求項４１に記載の方法。
【請求項４６】
前記出コマンドは、ｅメールメッセージを削除するためのコマンドを含み、
前記コマンドメモリからの衝突コマンドは、同じｅメールメッセージに関連したコマンドを含み、そして
前記衝突の回避は、前記コマンドメモリから衝突コマンドを除去することを含む、請求項４１に記載の方法。
【請求項４７】
前記コマンドメモリからの衝突コマンドは、ｅメールメッセージを追加するためのコマンドを含み、
前記出コマンドは、ｅメールメッセージの読み取りフラグを更新するためのコマンドを含み、そして
前記衝突の回避は、前記コマンドメモリからの衝突コマンドと出コマンドを合併させることを含む、請求項４１に記載の方法。
【請求項４８】
前記出コマンドを前記合併されたコマンドに置き換え、そして前記コマンドメモリにおけるコマンドを除去する段階を更に備えた、請求項４７に記載の方法。
【請求項４９】
前記出コマンドを破棄し、そして前記コマンドメモリにおけるコマンドを前記合併されたコマンドに置き換える段階を更に備えた、請求項４７に記載の方法。
【請求項５０】
入待ち行列から、第１コンテンツノードに関連したコマンドメモリの入イン・トランシット待ち行列へ入コマンドを移動させる段階を更に備えた、請求項３１に記載の方法。
【請求項５１】
入コマンドが破棄されることを決定し、そして
入イン・トランシット待ち行列から入コマンドを破棄する、
という段階を更に備えた請求項５０に記載の方法。
【請求項５２】
入コマンドの処理に関係したエラー状態を検出し、そして
エラー状態の検出に応答して、入イン・トランシット待ち行列から、第１コンテンツノードに関連した入待ち行列へ入コマンドを移動する、
という段階を更に備えた請求項５０に記載の方法。
【請求項５３】
出待ち行列から、選択された行先コンテンツノードに関連したコマンドメモリの出イン・トランシット待ち行列へ出コマンドを移動させる段階を更に備えた、請求項３１に記載の方法。
【請求項５４】
出コマンドが破棄されることを決定し、そして
出イン・トランシット待ち行列から出コマンドを破棄する、
という段階を更に備えた請求項５３に記載の方法。
【請求項５５】
選択された行先コンテンツノードにより出コマンドが受け取られたという確認を受け取り、そして
前記確認を受け取るのに応答して前記出イン・トランシット待ち行列から出コマンドを破棄する、
という段階を更に備えた請求項５３に記載の方法。
【請求項５６】
出コマンドの配送に関係したエラー状態を検出し、そして
前記エラー状態の検出に応答して、出イン・トランシット待ち行列から、前記選択された行先コンテンツノードに関連した出待ち行列へ出コマンドを移動させる、
という段階を更に備えた請求項５３に記載の方法。
【請求項５７】
処理ロジック及びコマンドメモリを含むコンテンツルーティングシステムに使用するためのプログラムコードを含むコンピュータプログラム製品であって、コンテンツルーティングシステムは、複数のコンテンツノードとコマンドメモリとの間で情報に対する変更をルーティングするためのものであるコンピュータプログラム製品において、
第１コンテンツノードから入コマンドを受け取るためのプログラムコードと、
前記第１コンテンツノードに関連したコマンドメモリに前記入コマンドを記憶するためのプログラムコードと、
前記入コマンドのコンテンツタイプ、並びに行先コンテンツノード及びコンテンツタイプに関連したルーティングパラメータに基づいて、行先コンテンツノードのセットを選択するためのプログラムコードと、更に、
前記選択された行先コンテンツノードの各々に対して、
出コマンドを発生するためのプログラムコードと、
前記出コマンドを前記コマンドメモリに記憶するためのプログラムコードと、
を備えたコンピュータプログラム製品。
【請求項５８】
入コマンドを処理するためのプログラムコードを更に備え、この処理のためのプログラムコードは、入コマンドと、第１コンテンツノードに関連したコマンドメモリ内のコマンドとの間の衝突を回避するためのプログラムコードを含み、そして前記入コマンドの記憶は、処理されたコマンドを記憶することを含む、請求項５７に記載のコンピュータプログラム製品。
【請求項５９】
前記衝突の回避は、前記コマンドメモリから衝突コマンドを除去することを含む、請求項５８に記載のコンピュータプログラム製品。
【請求項６０】
前記衝突の回避は、入コマンドを、前記コマンドメモリからの衝突コマンドと合併させることを含む、請求項５８に記載のコンピュータプログラム製品。
【請求項６１】
前記衝突の回避は、入コマンドを破棄することを含む、請求項５８に記載のコンピュータプログラム製品。
【請求項６２】
前記衝突の回避は、入コマンドを破棄し、そして前記コマンドメモリから衝突コマンドを除去することを含む、請求項５８に記載のコンピュータプログラム製品。
【請求項６３】
前記入コマンドは、ｅメールメッセージを削除するためのコマンドを含み、
前記コマンドメモリのコマンドは、同じｅメールメッセージに関連したコマンドを含み、そして
前記衝突を回避するプログラムコードは、前記コマンドメモリから衝突コマンドを除去するためのプログラムコードを含む、請求項５８に記載のコンピュータプログラム製品。
【請求項６４】
前記コマンドメモリのコマンドは、ｅメールメッセージを追加するためのコマンドを含み、
前記入コマンドは、ｅメールメッセージの読み取りフラグを更新するためのコマンドを含み、そして
前記衝突を回避するプログラムコードは、前記コマンドメモリからの衝突コマンド及び前記入コマンドを合併させるプログラムコマンドを含む、請求項５８に記載のコンピュータプログラム製品。
【請求項６５】
前記入コマンドを前記合併されたコマンドに置き換えそして前記コマンドメモリのコマンドを除去するためのプログラムコードを更に備えた、請求項６４に記載のコンピュータプログラム製品。
【請求項６６】
前記入コマンドを破棄しそして前記コマンドメモリのコマンドを前記合併されたコマンドに置き換えるプログラムコードを更に備えた、請求項６４に記載のコンピュータプログラム製品。
【請求項６７】
出コマンドを処理するためのプログラムコードを更に備え、この出コマンドを処理するためのプログラムコードは、出コマンドと、選択された行先コンテンツノードに関連したコマンドメモリのコマンドとの間の衝突を回避するためのプログラムコードを含み、そして出コマンドを記憶するためのプログラムコードは、処理された出コマンドを記憶するためのプログラムコードを含む、請求項５８に記載のコンピュータプログラム製品。
【請求項６８】
衝突を回避するためのプログラムコードは、コマンドメモリから衝突コマンドを除去するためのプログラムコードを含む、請求項６７に記載のコンピュータプログラム製品。
【請求項６９】
衝突を回避するためのプログラムコードは、コマンドメモリからの衝突コマンドを出コマンドに合併させるプログラムコードを含む、請求項６７に記載のコンピュータプログラム製品。
【請求項７０】
衝突を回避するためのプログラムコードは、出コマンドを破棄するプログラムコードを含む、請求項６７に記載のコンピュータプログラム製品。
【請求項７１】
衝突を回避するためのプログラムコードは、出コマンドを破棄しそしてコマンドメモリから衝突コマンドを除去するプログラムコードを含む、請求項６７に記載のコンピュータプログラム製品。
【請求項７２】
前記出コマンドは、ｅメールメッセージを削除するためのコマンドを含み、
前記コマンドメモリからの衝突コマンドは、同じｅメールメッセージに関係したコマンドを含み、そして
衝突を回避するためのプログラムコードは、コマンドメモリから衝突コマンドを除去するプログラムコードを含む、請求項６７に記載のコンピュータプログラム製品。
【請求項７３】
コマンドメモリからの衝突コマンドは、ｅメールメッセージを追加するためのコマンドを含み、
前記出コマンドは、ｅメールメッセージの読み取りフラグを更新するためのコマンドを含み、そして
衝突を回避するためのプログラムコードは、コマンドメモリからの衝突コマンドと出コマンドとを合併させるプログラムコードを含む、請求項６７に記載のコンピュータプログラム製品。
【請求項７４】
前記出コマンドを前記合併されたコマンドに置き換えそして前記コマンドメモリのコマンドを除去するためのプログラムコードを更に備えた、請求項２３に記載のコンピュータプログラム製品。
【請求項７５】
前記出コマンドを破棄しそして前記コマンドメモリのコマンドを前記合併されたコマンドに置き換えるプログラムコードを更に備えた、請求項２３に記載のコンピュータプログラム製品。
【請求項７６】
入待ち行列から、第１コンテンツノードに関連したコマンドメモリにおける入イン・トランシット待ち行列へ入コマンドを移動するためのプログラムコードを更に備えた、請求項５７に記載のコンピュータプログラム製品。
【請求項７７】
入コマンドを破棄することを決定するためのプログラムコードと、
入イン・トランシット待ち行列から入コマンドを破棄するためのプログラムコードと、
を備えた請求項７６に記載のコンピュータプログラム製品。
【請求項７８】
入コマンドの処理に関係したエラー状態を検出するプログラムコードと、
エラー状態の検出に応答して、入イン・トランシット待ち行列から、第１コンテンツノードに関連した入待ち行列へ入コマンドを移動するプログラムコードと、
を更に備えた請求項７６に記載のコンピュータプログラム製品。
【請求項７９】
出待ち行列から、選択された行先コンテンツノードに関連したコマンドメモリの出イン・トランシット待ち行列へ出コマンドを移動させるプログラムコードを更に備えた、請求項５７に記載のコンピュータプログラム製品。
【請求項８０】
出コマンドを破棄することを決定するためのプログラムコードと、
出イン・トランシット待ち行列から出コマンドを破棄するためのプログラムコードと、
を更に備えた請求項７９に記載のコンピュータプログラム製品。
【請求項８１】
選択された行先コンテンツノードにより出コマンドが受け取られたという確認を受け取るプログラムコードと、
前記確認を受け取るのに応答して前記出イン・トランシット待ち行列から出コマンドを破棄するプログラムコードと、
を更に備えた請求項７９に記載のコンピュータプログラム製品。
【請求項８２】
出コマンドの配送に関係したエラー状態を検出するプログラムコードと、
前記エラー状態の検出に応答して、出イン・トランシット待ち行列から、前記選択された行先コンテンツノードに関連した出待ち行列へ出コマンドを移動させるプログラムコードと、
を更に備えた請求項７９に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ装置及びアカウントを維持することに係り、より詳細には、複数の装置及びネットワーク構成のアカウントからアクセスできる情報を同期させることに係る。
【０００２】
関連出願へのクロスレファレンス：本出願は、次のものに関連している。即ち、本出願と同時に出願されたMarco BOERRIES氏等の“CONTENT ROUTER ASYNCHRONOUS EXCHANGE”と題する米国特許出願第１１／１８２，３１３号（代理人整理番号第３２４２１−２００１５．００号）；本出願と同時に出願されたBjoron EBBESEN氏等の“CONTENT ROUTER REPOSITORY”と題する米国特許出願第１１／１８２，６６５号（代理人整理番号第３２４２１−２００１６．００号）；本出願と同時に出願されたVenkatachary SRINIVASAN氏等の“CONTENT ROUTER FOR WARDING”と題する米国特許出願第１１／１８２，３１１号（代理人整理番号第３２４２１−２００１９．００号）；本出願と同時に出願されたMatthias BREUER氏等の“CONTENT ROUTER NOTIFICATION”と題する米国特許出願第１１／１８２，２８８号（代理人整理番号第３２４２１−２００２０．００号）；及び本出願と同時に出願されたMeher TENDJOUKIAN氏等の“CONTENT ROUTER GATEWAY”と題する米国特許出願第１１／１８３，０７３号（代理人整理番号第３２４２１−２００２６．００号）。これらは、各々、参考としてここに援用する。
【背景技術】
【０００３】
既知のルーター及び同期システムは、１つのノードから受け取られたペイロードデータを分析して、そのデータの全部又は一部分を第２のノードへ転送すべきかどうか決定するものではない。例えば、ルーターは、それが受け取ったアドレスと、ルーティングテーブルとを使用して、どの行先ノードが到来するパケットのコピーを受け取るかを決定する。既知のルーターは、パケットのアドレスに基づいてルーティングを決定する。更に、既知のルーターは、パケットを保持するための長期間メモリを備えていない。従って、第２のノードもルーターに接続されている間に第１のノードがパケットをルーターへ送出しない限り、パケットが第２のノードにより受け取られない。
【０００４】
同期システムは、１つ以上のハンドヘルド装置にミラーリングするレコードのセットのマスターコピーを保持する。１つの装置に変更が生じそしてその装置がその変更されたレコードを同期システムへ転送した後に、同期システムは、そのマスターコピーを更新し、これは、次いで、他の装置が同期システムと同期したときに他の装置に得られる。既知の同期システムは、同期された全レコードのマスターコピーを保持しなければならない。例えば、ハンドヘルドオーガナイザーは、ＰＣの同期ツールで動作することができる。オーガナイザー及びＰＣは、両方とも、全レコードのマスターコピーを維持する。従って、マスターコピーを複数の位置に維持することができる。更に、同期システムが、同期システムに同時に接続されていない装置と共に機能すべき場合には、同期システムが各新たなレコードのコピーを保持する必要がある。レコードが、オーディオファイル又は映像ファイルを表わす場合には、同期システムは、実質的な量の記憶装置を必要とする。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
そこで、コンテンツの行先を同期させる改良されたシステムがあれば、好都合であり、特に、融通性を高め、複雑さを低減し及び／又は性能を改善できるシステムがあることも好都合であろう。
【課題を解決するための手段】
【０００６】
従って、本発明は、好ましくは、上述した１つ以上の欠点の軽減、緩和又は排除を単独で行なうか、或いは組み合せて行うものである。
【０００７】
本発明の第１の態様によれば、複数のコンテンツノードとコマンドメモリとの間で情報に対する変更をルーティングするためのコンテンツルーティングシステムにおいて、記憶及び転送ロジックを備え、これは、第１のコンテンツノードからの入コマンドを処理し、その入コマンドのコンテンツタイプ及び１つ以上のルーティングパラメータに基づき行先コンテンツノードのセットを選択し、そしてその選択された行先コンテンツノードの各々に対する出コマンドを発生するための処理ロジックと、処理ロジックに接続されて入コマンド及び出コマンドのセットを保持するコマンドメモリとを含み、更に、処理ロジックに接続されて１つ以上のルーティングパラメータを保持する接続データセットコンフィギュレーションを備えたコンテンツルーティングシステムが提供される。
【０００８】
ある実施形態は、第１プロトコルと共通プロトコルとの間で変換するためのゲートウェイと、共通プロトコルとコマンドプロトコルとの間で変換するためのプロトコルアダプタとを備えている。
【０００９】
ある実施形態は、入コマンドを保持するための入待ち行列、及び出コマンドのセットを保持するための出待ち行列を有するコマンドメモリを備えている。ある実施形態は、入コマンドと、出コマンドのセットとを保持するためのデータベースを備え、各コマンドは、コマンドの状態を識別する属性を有する。ある実施形態は、出イン・トランシット待ち行列状態を含む。ある実施形態は、入イン・トランシット待ち行列状態を含む。
【００１０】
本発明の第２の態様によれば、複数のコンテンツノードとコマンドメモリとの間で情報に対する変更をルーティングする方法において、コンテンツルーターでは、第１コンテンツノードから入コマンドを受け取り、第１コンテンツノードに関連したコマンドメモリに入コマンドを記憶し、入コマンドのコンテンツタイプと、行先コンテンツノード及びコンテンツタイプに関連したルーティングパラメータとに基づいて、行先コンテンツノードのセットを選択し、更に、その選択された行先コンテンツノードの各々に対して、出コマンドを発生し、その出コマンドをコマンドメモリに記憶することを含む方法が提供される。
【００１１】
本発明の第３の態様によれば、処理ロジック及びコマンドメモリを含むコンテンツルーティングシステムに使用するためのプログラムコードを含むコンピュータプログラム製品であって、コンテンツルーティングシステムは、複数のコンテンツノードとコマンドメモリとの間で情報に対する変更をルーティングするためのものであるコンピュータプログラム製品において、第１コンテンツノードから入コマンドを受け取るためのプログラムコードと、第１コンテンツノードに関連したコマンドメモリに入コマンドを記憶するためのプログラムコードと、入コマンドのコンテンツタイプ、並びに行先コンテンツノード及びコンテンツタイプに関連したルーティングパラメータに基づいて、行先コンテンツノードのセットを選択するためのプログラムコードと、更に、その選択された行先コンテンツノードの各々に対して、出コマンドを発生するためのプログラムコードと、その出コマンドをコマンドメモリに記憶するためのプログラムコードと、を備えたコンピュータプログラム製品が提供される。
【００１２】
以下、添付図面を参照して、本発明の実施形態を一例として詳細に説明する。
【発明を実施するための最良の形態】
【００１３】
以下の説明では、本発明の幾つかの実施形態を示す添付図面を参照する。他の実施形態も利用でき、それらは、機械的、組成的、構造的、電気的なものでよく、又、本開示の精神及び範囲から逸脱せずに動作上の変更がなされ得ることを理解されたい。以下の詳細な説明は、本発明をこれに限定するものではなく、本発明の実施形態の範囲は、特許請求の範囲のみにより限定される。
【００１４】
以下の詳細な説明の幾つかの部分は、コンピュータメモリ上で遂行できるデータビットに対するオペレーションの手順、ステップ、論理ブロック、処理、及び他の象徴的表現に関して表わされる。手順、コンピュータ実行ステップ、論理ブロック、プロセス、等は、ここでは、希望の結果を導くステップ又はインストラクションの自己一貫性シーケンスであると考えられる。ステップは、物理量の物理的操作を利用するものである。これらの量は、コンピュータシステムにおいて記憶、転送、合成、比較、その他、操作することのできる電気、磁気又は無線信号の形態をとることができる。これら信号は、しばしば、ビット、値、エレメント、記号、キャラクタ、項、数字、等と称される。各ステップは、ハードウェア、ソフトウェア、ファームウェア、又はその組み合せによって遂行することができる。
【００１５】
図１Ａは、ルーティングシステムを示す。ルーター１００は、パケット１２０をルーティングするのに使用されるルーティングモジュール１０１及びルーティングテーブル１０２を備えている。ルーター１００は、パケット１２０に付加されたアドレス情報と、ルーティングテーブル１０２の両方を使用して、どのデータシンク１４０−１ないし１４０−３が入パケット１２０の転送コピーを受け取るか決定する。ルーター１００は、パケット１２０をパケット１３０−１ないし１３０−３として転送する。既知のルーターは、入パケット１２０に含まれたコンテンツのタイプに基づいてルーティングを決定するのではなく、パケット１２０に付加されたアドレス情報に基づいてルーティングを決定する。
【００１６】
図１Ｂは、ＰＣ１５０及び複数のデータホルダ１６０を含む同期システムを示す。データホルダ１６０は、クレードルを経てＰＣ１５０に接続されたハンドヘルドオーガナイザーでよい。ユーザは、第１データホルダ１６０−１へ新たな連絡先を入力する等の情報の変更を行うことができる。周期的に、ユーザは、データホルダ１６０をＰＣ１５０へ接続し、そしてＰＣ１５０のＣＰＵ１５１を使用して各データホルダ１６０を同期させる。第１データホルダ１６０−１は、ＣＰＵ１５１とでデータ１７０−１を交換する。ＣＰＵ１５１は、更新された情報及び新たな情報をデータ１７１としてセーブする。ＰＣ１５０は、これを通して同期されるデータ１７１の持続的コピー１５２を累積する。第２のデータホルダ１６０−２がＰＣ１５０と同期されると、ＣＰＵ１５１は、第２のデータホルダ１６０−２を、第１のデータホルダ１６０−１からセーブされた情報で更新する。データホルダ１６０−１及び１６０−２の両方が同期された後でも、同期システムは、たとえ変更された情報がもはや同期に必要とされなくても、変更された情報のコピーを持続的コピー１５２として保存する。既知の同期システムは、同期システムを通して同期されたデータの完全な持続的コピー１５２を保持する。
【００１７】
図２は、本発明の実施形態によりネットワーク１０を経て複数のコンテンツノード３００−１ないし３００−３に結合されたコンテンツルーター２００を示す。このコンテンツルーター２００は、ネットワーク１０にアタッチできる同様の及び異なるコンテンツノード３００−１ないし３００−３の同期を容易にする。コンテンツルーター２００は、ハードウェア及び／又はソフトウェアで実施される単一のネットワークコンポーネントでよい。或いは又、コンテンツルーター２００は、ネットワーク編成のコンポーネント２００のシステムでもよい。コンテンツルーター２００は、ネットワーク１０を横切って送られたコマンド４００−１ないし４００−３を使用して情報を通信する。ネットワーク１０は、コマンド４００を使用して、各コンテンツノード３００−１ないし３００−３をコンテンツルーター２００に接続する。ネットワーク１０は、相互接続されたイントラネット、インターネット、及び移動無線ネットワークのような異種のワイヤード及び／又はワイヤレスネットワークの寄せ集めでよい。或いは又、ネットワーク１０は、単一のネットワークでもよい。更に、コンテンツルーター２００は、２つ以上の個別のネットワークをブリッジしてもよい。
【００１８】
コマンド４００−１は、コンテンツノード３００−１からのメッセージ内で通信されてもよい。メッセージは、コンテンツノード３００−１に利用できるプロトコルを使用してビットのシーケンスとしてエンコードされてもよい。メッセージは、コマンドのセグメントを含み、この場合に、複数のメッセージが集積されて、完全なコマンドを形成する。或いは又、メッセージは、複数のコマンドを含んでもよい。コンテンツノード３００により使用されるあるプロトコルでは、１つ以上のメッセージが１つ以上のコマンドを表わしてもよい。コンテンツルーター２００は、コンテンツノード３００により使用されるメッセージプロトコルと、コンテンツルーター２００により内部で使用されるコマンド構造又はプロトコルとの間を変換することができる。
【００１９】
コンテンツノード３００から、ユーザは、コマンドを使用して、コンテンツ又はメタデータ（即ちコンテンツに関する情報）を入力、記憶、アクセス、更新、変更、及び／又は削除することができる。コンテンツは、連絡先、カレンダー事象、タスク、ｅメール及び／又はライブラリーアイテムのような種々のコンテンツタイプの１つを有してもよい。更に、コンテンツは、連絡先、カレンダー事象、又はタスクを含むパーソナル情報マネージメント（ＰＩＭ）コンテンツタイプを有してもよい。ライブラリーアイテムは、写真映像、オーディオファイル、ビデオクリップ、映画又はドキュメントのようなメディアオブジェクトを含んでもよいし、又はそのようなアイテムのグループ、例えば、写真のアルバム又はホームムービーのコレクションであってもよい。メタデータは、このようなコンテンツに関する情報を含む。
【００２０】
コンテンツノード３００は、サーバー上のユーザアカウントでよい。このようなコンテンツノード３００は、単一のコンテンツタイプのコンテンツにアクセスすることができる。例えば、ユーザアカウントは、ｅメールサーバー上のパーソナルｅメールアカウント（例えば、Ｙａｈｏｏ！（登録商標）メール）でもよいし、写真サーバー上のファミリー写真アルバムアカウント（例えば、Ｙａｈｏｏ！（登録商標）フォト）でもよいし、ＰＩＭサーバー上のＰＩＭアカウント（例えば、Ｙａｈｏｏ！（登録商標）アドレスブック又はＹａｈｏｏ！（登録商標）ノートパッド）でもよいし、或いはマルチメディアライブラリーサーバー上の音楽ライブラリーアカウント（例えば、Ｙａｈｏｏ！（登録商標）ミュージック）でもよい。更に、コンテンツノード３００は、２つ以上のコンテンツタイプにアクセスできるユーザアカウントでもよい。例えば、ユーザアカウントは、Ｙａｈｏｏ！（登録商標）ユーザアカウントのように、ｅメール、ＰＩＭ情報、カレンダー情報、及びノードパッドにアクセスすることができる。
【００２１】
コンテンツノード３００は、ユーザ装置でもよい。このようなユーザ装置は、ワイヤード装置、例えば、ホームパーソナルコンピュータ、オフィスＰＣ、デジタルカメラ、又はセットトップボックスでもよいし、或いはワイヤレス装置、例えば、移動電話、ラップトップ、ハンドヘルドＰＣ、又はワイヤレス能力を伴うデジタルカメラでもよい。ある装置は、ワイヤード及びワイヤレスの両方の能力を有してもよく、一方、他の装置は、ワイヤード能力又はワイヤレス能力を有してもよい。あるユーザ装置は、単一のコンテンツタイプにアクセスしてもよい。他のユーザ装置は、２つ以上のコンテンツタイプにアクセスすることができる。
【００２２】
コンテンツノード３００は、情報を組織するユーザ装置でよく、これは、Ｂｌａｃｋｂｅｒｒｙ（登録商標）又はＴｒｅｏ（登録商標）のようなＰＩＭ装置や、更に限定された情報マネージメントサービスを与える更に専用の移動電話を含んでもよい。情報マネージメントサービスは、例えば、カレンダー、アドレスブック、タスク及びノートのようなＰＩＭサービスを含んでもよい。カレンダーは、通常、対応する日付及び時刻範囲に関連した事象（例えば、ミーティング、誕生日、休日）のような時間関係組織属性を維持する。アドレスブックは、通常、個人（例えば、人間や会社エンティティやペットのような法的「個人」）、場所（例えば、個人の住所）、又は他の連絡先情報属性（例えば、電話番号）に関係した組織的属性を維持する。
【００２３】
図３は、本発明の実施形態により１つのコンテンツノード３００−１における変更を、コンテンツルーター２００を経て、コンテンツノード３００の選択されたセットへ伝播する経路を示す。コンテンツノード３００のセットは、コンテンツノードのナルセット、単一コンテンツノード、１つ以上のコンテンツノードのサブセット、又は全てのコンテンツノードを含んでもよい。コンテンツノード３００は、データのソース（データソース）、データのシンク（データシンク）、又はその両方の組み合せとして働く。この場合には、コンテンツノード３００−１は、データソースとして働き、一方、コンテンツノード３００−２、３００−３、３００−６及び３００−８は、データシンクとして働く。コンテンツノード３００−１への変更は、コンテンツ又はメタデータの追加、変更又は削除を含む多数の事象の１つを表わす。
【００２４】
図示されたように、コンテンツノード３００−１は、コンテンツ又はメタデータのソースとして働く。コンテンツノード３００−１は、変更されたコンテンツ、又はコンテンツへの変更のメタデータ指示を含むコマンド４００−１を発生し、これは、コンテンツルーター２００へ通信される。コンテンツノード３００−１は、コマンド４００−１をコンテンツルーター２００へプッシュしてもよいし、又はコマンド４００−１に対してコンテンツルーター２００によりポーリングされてもよい。
【００２５】
コンテンツルーター２００は、コマンド４００−１のコンテンツを検査する。入コマンド４００−１のコンテンツに基づいて、コンテンツルーター２００は、考えられるコンテンツノード３００−２ないし３００−８のどれに変更を通知するかを選択する。この例では、コンテンツルーター２００は、コンテンツノード３００−２、３００−３、３００−６及び３００−８を選択し、次いで、入コマンド４００−１を出コマンド４００−２、４００−３、４００−６及び４００−８へ変換し、変更の指示を配布する。出コマンド４００−２、４００−３、４００−６及び４００−８は、入コマンド４００−１と同じコンテンツを含んでもよいし、含まなくてもよい。更に、コンテンツルーター２００は、それを通して同期される全てのコンテンツの持続的コピーを保持しない。
【００２６】
コンテンツノード３００−１は、ユーザ装置（ＰＩＭ装置のような）でもよいし、又はコンテンツ及び／又はメタデータの１つ以上のデータベースを含むユーザアカウント（Ｙａｈｏｏ！アカウントのような）でもよい。例えば、コンテンツノード３００−１がアドレスブックを含む場合には、変更が、新しい連絡先でもよいし、修正された連絡先でもよいし、又は削除された連絡先でもよい。コンテンツノード３００−１がカレンダーを含む場合には、変更が、アポイントメントのような新たな事象でもよいし、修正された事象でもよいし、又は削除された事象でもよい。コンテンツノード３００−１がタスクリストを含む場合には、変更が、新たなタスクでもよいし、修正されたタスクでもよいし、又は削除されたタスクでもよい。同様に、コンテンツノード３００−１がノートパッドである場合には、変更が、新たなノートでもよいし、修正されたノートでもよいし、又は削除されたノートでもよい。又、変更は、注視された株のリスト、ブックマークされたウェブページのリスト、又はホームページのコンフィギュレーションのような情報の集合体の追加、修正又は削除でもよい。
【００２７】
コンテンツノード３００−１がｅメールアカウントである場合には、変更は、ｅメールアカウントがインターネットから到来するｅメールメッセージのような新たなコンテンツを受け取ったこと、又は既存のｅメールを削除するような、コンテンツを削除したことでよい。ユーザは、メッセージの状態を未読み取りから読み取りへ変更し、メッセージを未読み取りとマークし、又は重要度レベルをセットするように、メタデータを更新してもよい。同様に、コンテンツノード３００−１が移動電話である場合には、変更は、ワイヤレスネットワークから新たなページャーメッセージ又は新たなＳＭＳメッセージのような新たなコンテンツを受け取ることでもよいし、又はユーザがメッセージを削除するような、コンテンツを削除することでもよい。
【００２８】
更に、コンテンツノード３００−１がメディアライブラリーである場合には、変更は、ユーザが、写真映像、オーディオファイル、ビデオクリップ、映画又はドキュメントのようなメディアオブジェクトを追加し、修正し又は削除したことを指示してもよいし、或いは写真アルバム又はホームムービーのコレクションのようなアイテムのグループでもよい。例えば、変更は、ユーザが写真映像に字幕を追加するか又は新たな歌をロードしたことを指示してもよい。メディアオブジェクトは、参考としてここに援用する、Marco BOERRIES氏等を発明者とする、２００５年５月１３日に出願された“MEDIA OBJECT ORGANIZATION ACROSS INFORMATION MANAGEMENT SERVICES”と題する関連米国特許出願第１１／１２９，６９７号に更に説明されている。
【００２９】
変更を記述するときに、コンテンツノード３００−１は、実際の新たなコンテンツ又は修正されたコンテンツを送出することができる。ある実施形態では、コンテンツノード３００−１は、むしろ、メタデータを送信する。このようなメタデータは、変更されたコンテンツの特性、変更されたコンテンツの変換コピー、及び／又はメモリ内のコンテンツに対する参照、例えば、ハイパーリンク又はアドレスポインタを含む。実際のコンテンツに代わって参照を送信することで、受信側コンテンツノード３００−２は、コンテンツそれ自体をコンテンツルーター２００に通す必要なく、送信側コンテンツノード３００−１からのコンテンツにアクセスすることが許される。
【００３０】
コンテンツルーター２００は、ユーザ装置又はユーザアカウントのような多数のｅメール・ケーパブル(email-capable)コンテンツノード３００の間でｅメールのルーティングを容易にする。ユーザの第１ｅメールアカウント、例えば、パーソナルｅメールアカウントで受け取られたｅメールは、コンテンツルーター２００を経て、ユーザの第２アカウント、例えば、第２コンテンツノード上のワークｅメールアカウントへ転送される。同様に、ユーザの第２ｅメールアカウントで受け取られたｅメールは、コンテンツルーター２００を経てユーザの第１ｅメールアカウントへ転送される。又、ユーザは、第３ｅメールアカウント、例えば、Ｙａｈｏｏ！（登録商標）ｅメールアカウントを追加し、そして第３アカウントでインターネットから受け取ったｅメールメッセージを第１及び第２アカウントへルーティングするようにコンテンツルーター２００を構成することができる。
【００３１】
図４は、本発明の実施形態によるユーザ接続ｅメールアカウント３２０−１ないし３２０−３を示し、例示的スクリーンショット２０を含む図である。アウトルックアカウントのような幾つかのコンテンツノード３２０は、ユーザが複数のｅメールボックス又はフォルダを設定できるようにする。接続インボックスを伴う２つのｅメールアカウント３２０−１及び３２０−２と、接続インボックスをもたない１つのｅメールアカウント３２０−３が示されている。接続ｅメールアカウントは、コンテンツルーター２００へ情報を報告し、そしてコンテンツルーター２００から情報を受け取ることができる。
【００３２】
例えば、コンテンツノード（３２０−１、３２０−２又は３２０−３）は、新たな到来ｅメールをコマンド（各々３１、３２又は３３）においてコンテンツルーター２００へ報告する。各入コマンド（３１、３２又は３３）に応答して、コンテンツルーター２００は、行先コンテンツノード（例えば、各々３２０−１及び３２０−２）のセットを選択し、そして各選択されたコンテンツノード（各々３２０−１及び３２０−２）のインボックスを行先とする出コマンド（３４及び３５）を形成する。
【００３３】
ユーザのパーソナルｅメールアカウント３２０−１からのスクリーンショット２０は、コンテンツルーター２００を通さずにインターネットから直接受け取られたｅメールメッセージを保持するためのインボックス２１と、コンテンツルーター２００から受け取られたｅメールメッセージを保持するための接続インボックス２２とを示している。接続インボックス２２は、ユーザの接続ｅメールアカウント３２０−１ないし３２０−３の各々から合流されるｅメールを含む。接続インボックス２２を見ることにより、ユーザは、ユーザの多数の接続ｅメールアカウントを行先とする全てのｅメールを１つのフォルダにおいて素早く見ることができる。従って、接続インボックス２２は、ユーザの多数の接続ｅメールアカウントを横切ってユーザへ送られた全てのｅメールに対してウインドウとして見ることができる。
【００３４】
又、ユーザは、ｅメール能力を有する各コンテンツノード３００に対して個別のフォルダ又はインボックスを含むようにｅメールアカウントを構成することもできる。ここで、スクリーンショット２０は、パーソナルｅメールコンテンツノード３２０−１からのｅメールに対するインボックス２３と、ワークｅメールコンテンツノード３２０−２からのｅメールに対するインボックス２４と、Ｙａｈｏｏ！（登録商標）ｅメールコンテンツノード３２０−３からのｅメールに対するインボックス２５を示している。個別のフォルダを使用することで、ユーザは、１つのコンテンツノードからの個々のｅメールアカウント、例えば、ユーザアカウント３２０−１を管理することができる。
【００３５】
図５及び６は、本発明の実施形態による記憶及び転送ロジック２１０との接続、及びそれにより遂行される処理を示す。記憶及び転送ロジック２１０は、各コンテンツノード３００をコンテンツルーター２００に同時に結合する必要なく、複数の接続コンテンツノード３００が、１つのコンテンツノード３００における情報の変更を、コンテンツルーター２００を経て他のコンテンツノード３００へ通信できるようにする。記憶及び転送ロジック２１０は、特定のコンテンツノードからデカップルすることができる。即ち、記憶及び転送ロジック２１０は、コンテンツノードがユーザ装置であるかユーザアカウントであるかに関らず、又はコンテンツノードがクライアントとして動作するかサーバーとして動作するかに関らず、各コンテンツノードを同様に取り扱うことができる。更に、記憶及び転送ロジック２１０は、衝突検出のタスクをコンテンツノードから離すよう移動させ、衝突検出及び回避のタスクを記憶及び転送ロジック２１０内に集中化させる。
【００３６】
記憶及び転送ロジック２１０は、ハードウェア、実行可能なコード、又はその両方の組み合せで実施されてもよい。記憶及び転送ロジック２１０は、ＶＬＳＩ及び／又はＦＰＧＡハードウェアを含んでもよい。記憶及び転送ロジック２１０は、スタンドアローンサーバー又はサーバーのネットワークを含んでもよい。記憶及び転送ロジック２１０は、汎用中央処理ユニット（ＣＰＵ）で実施されてもよいし、或いは減少インストラクションセットコンピュータ（ＲＩＳＣ）で実施されてもよい。記憶及び転送ロジック２１０は、オンチップ又はオフチップメモリ、例えば、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、Ｅ2ＰＲＯＭ、等を含んでもよい。又、記憶及び転送ロジック２１０は、磁気メモリ、例えば、ハードディスクドライブ、を含んでもよいし、光学メモリを含んでもよい。実行可能なコードは、スクリプト、ソフトウェア、ファームウェア、及び／又はマシンコードから導出されてもよい。
【００３７】
図５のコンテンツルーター２００は、接続データセットコンフィギュレーション５００及びレポジトリー６００に結合された記憶及び転送ロジック２１０を備えている。この記憶及び転送ロジック２１０は、関連コンテンツノード３００−１ないし３００−４に結合されてもよい。図６は、１０００で始まる入コマンドにより記憶及び転送ロジック２１０においてトリガーされる事象のシーケンスを示す。これらのアクションは、１００１において入コマンドを処理し、１００２において出コンテンツノードを選択し、１００３において出コマンドを発生し、１００４において出コマンドを処理し、そして１００５においてその処理された出コマンドを送出することを含む。コマンドが到来するものか出て行くものかは、記憶及び転送ロジック２１０の観点から見える。
【００３８】
１０００において、報告すべき変更を有するコンテンツノード３００−１が新たなコマンド４００−１を記憶及び転送ロジック２１０へ送信するときに、事象シーケンスが開始する。コンテンツノード３００−１は、変更（例えば、含まれた新たなｅメールメッセージを追加するコマンド）を他のコンテンツノードへ送信しない。むしろ、コンテンツノード３００−１は、変更を記憶及び転送ロジック２１０へ送信し、これは、新たなｅメールメッセージ又は新たなｅメールメッセージの一部分を、コンテンツノードの対応セットへ送信するための出コマンドのセットを生成してもよいし、しなくてもよい。
【００３９】
１００１において、記憶及び転送ロジック２１０は、コンテンツノード３００−１からの入コマンド４００−１を処理する。入コマンド４００−１の処理は、発信側コンテンツノード３００−１の制限又は特殊な能力に基づいてコマンドを変換することを含む。コマンドを変換するときには、記憶及び転送ロジック２１０は、コマンドの１つ以上の分離可能なセグメントを保持するレポジトリー６００と、コマンドを処理するときに使用する変換ルールを含む接続データセットコンフィギュレーション５００とを使用する。入コマンド及び出コマンドの変換は、図７Ａ、７Ｂ、８Ａ及び８Ｂを参照して更に説明する。
【００４０】
又、入コマンド４００−１の処理は、入コマンド４００−１と、記憶及び転送ロジック２１０で保留となっているコマンドとの間の衝突の検出及び回避も含む。記憶及び転送ロジック２１０は、作用を受けるべく待機している複数の保留中コマンドをメモリに保持してもよい。保留中コマンドは、特定のコンテンツノード３００から既に受け取られて処理された入コマンドで、記憶及び転送ロジック２１０による更なる処理を待機しているコマンドである。更に、保留中コマンドは、入コマンドに応答して記憶及び転送ロジック２１０により発生されるコマンドでもよい。これらの発生されたコマンドは、出コマンド（例えば、４００−２又は４００−４）として特定のコンテンツノード３００へ送信されるのを待機している。
【００４１】
衝突の回避は、新たなコマンド４００−１を破棄し、保留中コマンドを削除し、及び／又は新たなコマンド４００−１を保留中コマンドと集積させることを含む。衝突は、新たな入コマンド４００−１が、実行を保留している既に受け取られた入コマンドと衝突する場合に生じる。例えば、既に受け取られた入コマンドは、コンテンツノード３００−１によりインターネットから受け取られる新たなｅメールを追加するためのコマンドである。その後続の入コマンドは、例えば、ユーザがコンテンツノード３００−１においてそのインボックスからｅメールを削除した場合に、その同じｅメールを削除するためのものである。同じｅメールを削除すべきその後続コマンドが受け取られたときに、新たなｅメールを追加すべきコマンドが記憶及び転送ロジック２１０において依然保留中である場合には、衝突が生じる。このようなケースでは、両コマンドを破棄することで衝突が回避される。或いは又、後続の入コマンドが、同じ新たなｅメールを追加すべきものであった場合には、記憶及び転送ロジック２１０は、その二重コマンドを検出し、その二重コマンドの一方を破棄することで衝突を回避する。
【００４２】
又、衝突は、新たな入コマンド４００−１が、特定のコンテンツノード３００に対する出コマンドとして既に発生されたコマンドと衝突する場合にも生じ得る。例えば、記憶及び転送ロジック２１０は、アドレスブックの連絡先を更新するために保留中の出コマンドを保持することがある。新たな入コマンドは、その同じ連絡先を完全に削除するものである。記憶及び転送ロジック２１０は、衝突を検出し、そして保留中の出コマンド（連絡先更新）を除去しそして新たな入コマンド（連絡先削除）をセーブすることによりこの衝突を回避する。新たな入コマンドは、最終的に処理され、そして連絡先削除アクションは、出コマンドとして他の接続コンテンツノード３００へ伝播される。
【００４３】
又、記憶及び転送ロジック２１０は、入コマンド４００−１を、コンテンツノード３００に対する保留中コマンドと集積してもよい。例えば、既に受け取られた入コマンド４００−１は、新たなタスクをタスクリストに追加する。その後続の入コマンド４００−１は、このタスクをある仕方で修正する。記憶及び転送ロジック２１０は、この衝突を検出し、そして後続の入コマンド（修正タスク）から以前の入コマンド（追加タスク）へ修正を組み込むことにより衝突を回避する。それにより集積されるコマンドは、修正されたタスクの追加となる。それにより得られる集積されたコマンドが、以前の入コマンドに置き換わる。或いは又、以前の入コマンドが破棄され、そしてそれにより生じる集積されたコマンドが新たな入コマンドとしてセーブされてもよい。衝突の検出及び回避は、図９Ａ−９Ｃ及び図１０Ａ−１０Ｄを参照して更に説明する。
【００４４】
１００２において、記憶及び転送ロジック２１０は、出コンテンツノードのセット、ここでは、コンテンツノード３００−２及び３００−４を選択する。出コンテンツノードを選択すると、記憶及び転送ロジック２１０は、接続データセットコンフィギュレーション５００を再び使用することができ、これは、ルーティングルールに使用されるルーティングパラメータも含む。ルーティングルール及び接続データセットコンフィギュレーション５００は、図１１を参照して更に説明する。
【００４５】
１００３において、記憶及び転送ロジック２１０は、各選択されたコンテンツノード３００−２及び３００−４に対して各々出コマンド４００−２及び４００−４を発生する。選択されたコンテンツノードの能力及びコンフィギュレーションに基づいて、記憶及び転送ロジック２１０は、処理された入コマンドを、その選択された行先コンテンツノードの制限又は要件に適するように改造することができる。例えば、行先コンテンツノードの制限に基づいて、記憶及び転送ロジック２１０は、レポジトリー６００を使用して、入コマンド４００−１の分離可能なセグメントを保持すると共に、そのセグメントを変更するか又は出コマンドから排除することができる。逆に、コンテンツルーター２００は、情報の付加的なセグメントを出コマンドに挿入してもよい。
【００４６】
コンテンツルーター２００は、ユーザ定義ルール、システム定義ルール、又は既知のコンテンツノード制限に基づいてコマンドを改造することができる。コンテンツルーター２００は、入コマンド４００−１内で見つかった情報に基づいてコマンドを変更することができる。コンテンツルーター２００は、ユーザのアカウント又は装置からアクセスできる位置、時間又は他の情報のようなメタデータを出コマンドに付加することができる。コンテンツルーター２００は、コマンドがどのように変更されたかのレコードを保持し、関連コマンドが返送される場合に変更を逆転できるようにする。あるケースでは、コンテンツルーター２００は、変更せずにコマンドを通過させる。
【００４７】
１００４において、記憶及び転送ロジック２１０は、出コマンドを処理する。１００１における入コマンドと同様に、記憶及び転送ロジック２１０は、新たな出コマンドと保留中の入コマンド及び出コマンドとの間で衝突検出及び回避を同様に遂行する。
【００４８】
１００５において、記憶及び転送ロジック２１０は、出コマンド４００を各コンテンツノード３００へ送信する。出コマンド４００の送信は、コンテンツノード３００へ通知をシグナリングすることを含む。要求（要求−応答プロトコルにおける）とは異なり、通知とは、送信者が、通知が受信されたという応答も確認も期待しない信号である。この点において、通知は、いったん送信されると完了であるという点で自蔵される。更に、通知は、ソフトウェア（例えば、セマフォ、フラグ又はソフトウェア信号インストラクション）及び／又はハードウェア（例えば、ハードウェアライン又はレジスタ）で実施することができる。通知は、出コマンド４００のコンテンツタイプを含むことができる。コンテンツノードがＩＰアドレスでネットワーク１０に接続された場合には、記憶及び転送ロジック２１０は、出コマンドが保留中であることをコンテンツノードに通知するためにＨＴＴＰコマンドを送信する。コンテンツノードがＳＭＳ能力を有する移動電話である場合には、記憶及び転送ロジック２１０は、ＳＭＳメッセージを経て通知を送信することができる。
【００４９】
コンテンツノード３００−１は、コマンド４００−１において１つ以上のセグメントを有するコンテンツを送信する。コンテンツルーター２００から流れ出るデータの量を最小にするために、記憶及び転送ロジック２１０は、コマンドの１つ以上のセグメントを、オリジナルセグメントそれ自体を転送するのではなくオリジナルコンテンツへ戻るリンクを与える１つ以上の対応する参照に置き換えることができる。或いは又、コンテンツノード３００−１は、コンテンツそれ自体を含むのではなく、コンテンツのソースに対する１つ以上の参照を含んでもよい。
【００５０】
コンテンツに対する参照（例えば、コンテンツノード３００−１に存在する新たな写真に対する参照）を受け取るコンテンツノード３００−４は、コンテンツノード３００−１からコンテンツを検索するためにピア・ツー・ピア転送４５０に着手する。このように、コンテンツルーター２００は、両コンテンツノードがネットワーク１０に同時に接続される間にピア・ツー・ピア転送４５０の形態で２つのコンテンツノード間のコンテンツの転送を容易にすることができる。
【００５１】
コンテンツノードの制限又は要件のために、記憶及び転送ロジック２１０は、コマンドの分離可能なセグメントを、コンテンツノードへ送信する前に、変更し、置き換え、又は排除することにより、コマンドを適応させることができる。例えば、あるコンテンツノードは、コマンドのあるセグメントを処理、使用又は記憶することができない。ある実施形態では、記憶及び転送ロジック２１０は、以下に述べる３つの方法（そのうちのあるものはレポジトリーを使用する）の１つを使用して、限定された能力をもつコンテンツノードを受け容れることができる。又、記憶及び転送ロジック２１０は、たとえコンテンツノードが入コマンド全体を取り扱うことができても、コンテンツノードにおけるメモリの制限や、記憶及び転送ロジック２１０とコンテンツノードとの間の帯域巾制約、等の他の理由で、これら方法を使用することができる。
【００５２】
あるケースでは、コンテンツルーター２００は、コンテンツノード３００を新たなコマンドに対してポーリングするように構成される。コンテンツルーター２００は、コンテンツノード３００を周期的にポーリングして、何らかの変更が生じたかどうか決定することができる。ポーリングの周期は、ネットワークへの接続のタイプ又は予想コストに基づくものである。例えば、コンテンツノード３００が、ＳＭＳ接続を経てネットワークに接続された移動電話である場合には、２４時間ごとにポーリングが行われる。移動電話がＧＰＲＳデータネットワーク接続を経てネットワークに接続された場合には、２０分ごとにポーリングが行われる。移動電話が、インターネットにワイヤード接続されたドッキングステーションに配置された場合には、数秒ごとから数分ごとにポーリングが行なわれる。
【００５３】
あるケースでは、コンテンツノード３００がファイアウオールの後方にあるので、記憶及び転送ロジック２１０からコンテンツノード３００への通知が阻止される。コマンドを受け取るために、コンテンツノード３００は、コンテンツルーター２００をポーリングするように構成される。コンテンツノード３００が、保留中の出コマンド４００に対してポーリングするときには、記憶及び転送ロジック２１０は、コンテンツノード３００が処理するための１つのコマンド又はコマンドのバッチで応答する。コマンド４００の構造は、図１３及び図１４Ａ−１４Ｉを参照して更に説明する。記憶及び転送ロジック２１０との間でのコマンドの通知及び交換は、図１５Ａ−１５Ｃ及び図１６Ａ−１６Ｄを参照して更に説明する。
【００５４】
第１の方法によれば、記憶及び転送ロジック２１０は、非適合の又は望ましからぬセグメントをペイロードから剥離し、そしてその剥離したセグメントをレポジトリー６００にセーブすることにより、制限能力のコンテンツノードを受け容れることができる。従って、レポジトリー６００は、将来使用できるコマンドのセグメントを保持することができる。これらのセグメントが後で必要になった場合には、記憶及び転送ロジック２１０は、それらをレポジトリー６００からアクセスする。この方法は、図７Ａ及び７Ｂを参照して、以下で説明する。
【００５５】
図７Ａ及び７Ｂは、本発明の実施形態によりレポジトリー６００に結合された記憶及び転送ロジック２１０を示す。コンテンツノード３００の制限又は要件のために、記憶及び転送ロジック２１０は、コマンドのあるセグメントを、コンテンツノード３００へ送信する前に、排除することにより、そのコマンドを適応させることができる。コマンドを適応させる前に、記憶及び転送ロジック２１０は、非変更セグメント又は全コマンドのコピーをレポジトリー６００に保存することができる。従って、レポジトリー６００は、将来使用できるコマンドの１つ以上のセグメントを保持することができる。他の実施形態によれば、セグメントは、ｅメールにおけるファイルのようなセグメントをコマンドから除去するのにも利用できる。例えば、図８Ａを参照して以下に述べるように、入コマンドからファイルを除去することができる。或いは又、ファイル中継サーバー及び図１２Ｅを参照して以下に述べるように、入コマンドからファイルを除去することができる。
【００５６】
図７Ａは、レポジトリー６００を使用して第１コンテンツノード３００−１からの入コマンド４００−１の分離可能なセグメントを保持するための記憶及び転送ロジック２１０を示す。コマンドが、分離可能で且つ個別であるコンテンツを含むときには、その分離可能なコンテンツをコマンドから離れてパーズし又は断片的に変更することができる。例えば、ある連絡先は、フルネーム（第１セグメント４０１）、家の電話番号（第２セグメント４０２）、及び仕事場の電話番号（第３セグメント４０３）を含むことができる。これらセグメントの各々は、分離可能で且つ個別のものである。即ち、これらセグメントの１つ以上を除去し及び／又は変更し及び／又は合成して、変更されたコマンドを形成することができる。例えば、移動電話のような特定のコンテンツノードが、単一の電話番号しか取り扱えないという制限を有する場合には、記憶及び転送ロジック２１０は、入コマンドから仕事場の電話番号（第３）を、それに対応する出コマンドを準備するときに、除去することができる。又、記憶及び転送ロジック２１０は、仕事場の電話番号を、将来使用するために、レポジトリー６００に入れることもできる。
【００５７】
別の例として、入コマンドは、ｅメール本体及びアタッチされたファイルを有する新たなｅメールメッセージのようなコンテンツを含む。アタッチされたファイルは、ｅメール本体とは分離可能で且つ個別のものである。記憶及び転送ロジック２１０は、この新たなｅメールを第２のコンテンツノード３００−２に追加するための出コマンド４００−２を発生することができる。第２のコンテンツノード３００−２への出コマンド４００−２は、ｅメール本体を含むが、ファイルに対する参照だけである。
【００５８】
図示されたように、入コマンド４００−１は、その一部分について、縮約された出コマンド４００−２として第２コンテンツノード３００−２へ転送される。入コマンド４００−１は、コンテンツ及び／又はメタデータの３つのセグメント４０１、４０２及び４０３を含む例示的ペイロード４４１を備えている。記憶及び転送ロジック２１０は、第３セグメント４０３のコピーをレポジトリー６００に記憶すると共に、第１セグメント４０１及び第２セグメント４０２を含むが第３セグメント４０３を切り取ったペイロード４５１を伴う出コマンド４００−２を準備する。コンテンツルーター２００は、例えば、行先コンテンツノード３００−２の制限のために、第３セグメント４０３を切り取る。このような制限は、コンテンツノード３００−２が、制限された量の割り当てられた記憶容量を有するか、又は所定のフォーマットにある全てのアタッチメントを除去する一般的な変換ルールを有することを含む。
【００５９】
別の例として、ユーザは、新たな連絡先をコンテンツノード３００−１に追加することができる。コンテンツノード３００−１は、ペイロード４４１を含む連絡先追加コマンド４４０を送信し、これは、コンテンツノード３００−１において生成される連絡先を表わす。ペイロード４４１は、３つの情報セグメント４０１ないし４０３を含む。第１セグメント４０１は、ファーストネーム（名）及びラストネーム（姓）を保持する構造でよい。第２セグメント４０２は、電話番号である。第３セグメント４０３は、ウェブページへのハイパーリンクである。行先コンテンツノード３００−２がハイパーリンクを受け取ることができない場合には、記憶及び転送ロジック２１０は、ハイパーリンクを含む第３セグメント４０３を剥離する。それ故、記憶及び転送ロジック２１０から送られるペイロード４５１は、記憶及び転送ロジック２１０により受け取られるペイロード４４１とは異なる。記憶及び転送ロジック２１０は、第３セグメント４０３を、考えられる将来の使用のために、レポジトリー６００に記憶する。例えば、記憶及び転送ロジック２１０は、以下に述べるように、ユーザがペイロード４５１のセグメントを変更した後であって且つ記憶及び転送ロジック２１０がその変更を第１コンテンツノード３００−１へ転送する前に、レポジトリー６００にアクセスすることができる。
【００６０】
図７Ｂは、第２コンテンツノード３００−２からのオリジナルの第１セグメント４０１及び更新された第２セグメント４０２Ａを含む入コマンド４００−２Ａに応答して、レポジトリー６００からのセグメントにアクセスする記憶及び転送ロジック２１０を示す。第２セグメント４０２は、コンテンツノード３００−２においてｅメールアタッチメントのようなセグメントをユーザが変更した結果として更新されている。記憶及び転送ロジック２１０は、コンテンツノード３００−２からの入コマンド４００−２Ａを処理するとき、以前にペイロード４５１に関連され且つ現在はペイロード４５１Ａに関連されたセグメントがレポジトリー６００に保持されているかどうか決定する。記憶及び転送ロジック２１０は、第３セグメント４０３がペイロード４５１に以前に関連されていたことを決定し、そしてレポジトリー６００からの第３セグメント４０３を、オリジナルの第１セグメント４０１及び更新された第２セグメント４０２Ａを含むペイロード４５１Ａと合流させて、全データ構造体を生成する。コンテンツノード３００−１が、各セグメント４０１ないし４０３に保持されたコンテンツを処理するように構成される場合には、記憶及び転送ロジック２１０は、第１セグメント４０１、更新された第２セグメント４０２Ａ、及び再アタッチされた第３セグメント４０３を含むペイロード４４１Ａを準備する。
【００６１】
第２の方法によれば、記憶及び転送ロジック２１０は、ペイロード４４１からの不適合の又は望ましくないセグメントを変更することにより、制限された能力のコンテンツノード３００−２を受け容れることができる。記憶及び転送ロジック２１０は、このセグメントを、それが将来必要となる場合に、レポジトリー６００にセーブすることができる。この第２の方法は、第１の方法と同様であるが、第２の方法では、第１の方法で剥離されたセグメントが変更されてコンテンツノードへ送信される。将来、制限された能力のコンテンツノードが、変更されたセグメントをコマンドにおいて返送する場合には、記憶及び転送ロジック２１０は、この返送されるセグメントを、レポジトリー６００からのオリジナルセグメントに置き換えた後に、そのコマンドを他のコンテンツノードへ転送する。
【００６２】
例えば、コマンド４００−１が、ファーストネームストリング及びセカンドネームストリングを含む第１コンテンツノード３００−１から到着するが、第２のコンテンツノード３００−２が単一ストリングネームしか取り扱いできない場合は、記憶及び転送ロジック２１０が、２ストリング構造体を、連結されたファーストネーム及びラストネームを単一ストリング構造体に含む単一ストリング構造体に置き換えることができる。記憶及び転送ロジック２１０は、ファーストネームストリング及びセカンドネームストリングを含む構造体をレポジトリー６００に記憶することができる。そのコンテンツが後で第２のコンテンツノード３００−２から送信され（変更又は非変更形態で）そして行先コンテンツノードが２ストリングネームを取り扱うことができる場合には、記憶及び転送ロジック２１０は、第２コンテンツノード３００−２からの入コマンドにおける連結ストリングを、レポジトリー６００からの２ストリング構造体のコピーに置き換えることができる。このようにして、制限された能力のコンテンツノード３００−２からの欠落コンテンツは、他のコンテンツノードへ転送される前に、回復することができる。
【００６３】
レポジトリー６００を使用して、剥離又は変更されたコンテンツのオリジナルセグメントを保存するのではなく、記憶及び転送ロジック２１０は、オリジナルセグメントを、そのソースコンテンツノードから、又はソースコンテンツノードにより参照される記憶装置から、検索することができる。
【００６４】
第３の方法によれば、セグメントは、レポジトリーにセーブされない。記憶及び転送ロジック２１０は、不適合の又は望ましくないセグメントをコマンドペイロードから剥離又は変更することにより、制限された能力のコンテンツノードを受け容れることができる。しかしながら、この方法では、剥離又は変更されたセグメントのコピーがレポジトリーに保存されない。これらのセグメントが後で必要とされる場合には、記憶及び転送ロジック２１０は、オリジナルの入コマンドのソースからセグメントを要求しそして受け取ることができる。この方法の一例を、図８Ａ及び８Ｂを参照して以下に述べる。
【００６５】
図８Ａは、本発明の実施形態により例示的なｅメールのセグメントを剥離するプロセスを示す。入って来るｅメール９００は、インターネットからＳＭＴＰ接続を経て第１コンテンツノード３００−１に到達する。ｅメール９００は、ペイロード９０１を備え、このペイロードは、入って来るｅメールのヘッダ及び本体４０１を含み、これは、日付及び時刻、送信者が入力した応答ｅメールアドレス及びテキストのような情報を含む。又、ペイロード９０１は、ＪＰＥＧファイルのような映像ファイルアタッチメント４０２、及びＰｏｗｅｒＰｏｉｎｔプレゼンテーションのようなプレゼンテーションファイルアタッチメント４０３も含む。コンテンツノード３００−１で実行されるアプリケーションは、アタッチメント４０２及び４０３をリンク４０２Ａ及び４０３Ａへ変換し、これは、ケーパブル・コンテンツノードがアタッチメントへのハイパーリンクを経てアタッチメントにアクセスするのを許す。コンテンツノード３００−１は、次いで、ＩＭＡＰのようなｅメールプロトコルによって１つ以上のメッセージ９１０を生成し、これは、ペイロード９１１を形成し、このペイロードは、入って来るｅメールのヘッダ及び本体４０１と、映像ファイルへのリンク４０２Ａと、プレゼンテーションファイルアタッチメントへのリンク４０３Ａとを含む。コンテンツノード３００−１は、メッセージ９１０をコンテンツルーター２００内のプロトコルインターフェイスロジック２６０へ送信する。
【００６６】
プロトコルインターフェイスロジック２６０は、１つ以上のメッセージ９１０を、ペイロード４２１を含むコマンド４２０へ変換し、ペイロード４２１は、入って来るｅメールのヘッダ及び本体４０１と、映像ファイルへのリンク４０２Ａと、ペイロード９１１から抽出されるプレゼンテーションファイルアタッチメントへのリンク４０３Ａとを含む。プロトコルインターフェイスロジック２６０は、異なるプロトコルを使用するコンテンツノードがコンテンツルーター２００と共に機能するのを許す。記憶及び転送ロジック２１０は、プロトコルインターフェイスロジック２６０から入コマンド４２０を受け取り、そしてコンテンツノード３００−２のための出コマンド４３０を準備する。この例では、コンテンツノード３００−２は、プレゼンテーションファイルアタッチメント４０３又はそのリンク４０２Ａを処理することができない。このコンテンツノード３００−２の場合に、記憶及び転送ロジック２１０は、プレゼンテーションファイルアタッチメントへのリンク４０３Ａを剥離するように構成される。記憶及び転送ロジック２１０は、ペイロード４３１を含む出コマンド４３０を準備し、ペイロード４３１は、入って来るｅメールのヘッダ及び本体４０１と、映像ファイルへのリンク４０２Ａを含むが、プレゼンテーションファイルアタッチメントへのリンク４０３Ａは含まない。このケースでは、記憶及び転送ロジック２１０は、リンク４０３Ａのコピーを、後で使用するためにレポジトリー６００に保存することはしない。
【００６７】
コンテンツルーター２００が、剥離されたｅメールをコンテンツノード３００−２へ転送した後に、コンテンツノード３００−２のユーザは、そのｅメールを外部インターネットアドレスに転送することができる。プロトコルインターフェイスロジック２６０は、転送されたｅメールを受け取ると、そのｅメールが、オリジナルｅメールに含まれた１つ以上のセグメントを欠落していると決定する。プロトコルインターフェイスロジック２６０は、完全なｅメールを含むコンテンツノード３００−１のインボックスから欠落セグメントを要求することができる。オリジナルセグメントを受け取ると、プロトコルインターフェイスロジック２６０は、セグメントを転送されたｅメールへ復帰させることができる。次いで、プロトコルインターフェイスロジック２６０は、コンテンツノード３００−１のインボックスに関連したｅメールサーバーを使用して、ｅメールを外部インターネットアドレスへ転送することができる。
【００６８】
図８Ｂは、本発明の実施形態により、ユーザが後でｅメールを転送する場合に、剥離されたセグメントをｅメールに復帰させるプロセスを示す。ユーザは、コンテンツノード３００−２で以前に受け取られたｅメールを転送することができる。例えば、コンテンツノード３００−２は、ペイロード４４１を含むコマンド４４０を送信し、このペイロード４４１は、新たに生成されて出て行くｅメールのヘッダ及び本体４０１Ｂと、入って来るオリジナルｅメールのヘッダ及び本体４０１と、映像ファイルへのリンク４０２Ａとを含む。この入コマンド４４０は、プレゼンテーションファイルアタッチメント４０３も、そのリンク４０３Ａも含んでいない。この入コマンド４４０を受け取るのに応答して、記憶及び転送ロジック２１０は、ペイロード４４１からのセグメントを含むペイロード４５１を備えた出コマンド４５０を発生する。
【００６９】
プロトコルインターフェイスロジック２６０は、コマンド４５０を受け取り、そしてそれが転送されたｅメールであることを検出する。プロトコルインターフェイスロジック２６０は、第１コンテンツノード３００−１から非縮約ｅメールを要求することにより剥離されたセグメントを回復するよう試みることができる。或いは又、プロトコルインターフェイスロジック２６０は、剥離されたセグメント４０２及び４０３だけを要求してもよい。それに応答して、第１コンテンツノード３００−１は、剥離されたセグメントを、例えば、１つ以上のＩＭＡＰメッセージ９６０において、プロトコルインターフェイスロジック２６０へ送信し、メッセージ９６０は、映像ファイルアタッチメント４０２及びプレゼンテーションファイルアタッチメント４０３を含むペイロード９６１を形成する。
【００７０】
プロトコルインターフェイスロジック２６０は、ペイロード９７１を含むｅメールを準備し、このペイロード９７１は、出て行くｅメールのヘッダ及び本体４０１Ｂと、入って来るｅメールのヘッダ及び本体４０１と、オリジナルの映像ファイルアタッチメント４０２と、オリジナルのプレゼンテーションファイルアタッチメント４０３とを含む。プロトコルインターフェイスロジック２６０は、例えば、ペイロード９７１を含むＳＭＴＰメッセージ９７０において、コンテンツノード３００−１に関連したｅメールサーバー３００−１Ａへｅメールを転送することができる。
【００７１】
ｅメールサーバー３００−１Ａは、ＳＭＴＰメッセージ９７０に、外部インターネットアドレスへ出て行くｅメール９８０で応答する。出て行くｅメール９８０は、プロトコルインターフェイスロジック２６０により以前に剥離又は変更された到来ｅメールの各復帰セグメントを含む。又、出て行くｅメール９８０は、コンテンツノード３００−２において生成された、出て行くｅメールのヘッダ及び本体４０１Ｂも含む。その結果、出て行くｅメールは、ユーザがｅメールを転送したところのコンテンツノード３００−２が能力に制限があり且つアタッチメントを受け取っていないとしても、オリジナルのアタッチメント４０２及び４０３を含むｅメールから転送されたものであると思われる。
【００７２】
又、レポジトリー６００は、接続されたコンテンツノード間をルーティングされた情報のインベントリーを保持するのにも使用できる。或いは又、インベントリーは、個別のメモリに保持されてもよい。インベントリーは、コンテンツの特性、及び／又はコンテンツルーターへ及びコンテンツルーターからルーティングされる１つ以上のコンテンツタイプのメタデータの特性を含むことができる。又、インベントリーは、１つ以上の接続されたコンテンツノード３００上に存在するルーティングされたコンテンツの特性を要約するのに使用される。又、インベントリーは、アイテムカウントをプレビューするのにも使用できる。例えば、特定のコンテンツノード３００に対して１つ以上のルーティングパラメータが変更された場合には、コンテンツルーター２００は、特定のコンテンツノード３００を、更新されたルーティングパラメータとインライン状態に入れるために、１つ以上の他のコンテンツノード３００からフェッチする必要のある特定のコンテンツタイプの付加的なアイテムの数を推定し又は決定することができる。特性を使用して、インベントリーにおける特性に基づく条件内に入るコンテンツノードに存在するコンテンツタイプの概略数を計算することができる。インベントリーにおけるエントリーは、コンテンツノードに存在する特定のコンテンツタイプの数を要約するようにカウントすることができる。ある実施形態では、インベントリーを衝突チェック中に使用して二重コマンドを識別することができる。
【００７３】
ｅメールコンテンツタイプについては、コンテンツルーター２００は、コンテンツルーターを経てルーティングされ且つコンテンツノードに存在する各ｅメールメッセージからインベントリーに情報を収集することができる。例えば、新たなｅメールメッセージを追加する各コマンドに対して、コンテンツルーター２００は、ｅメールの存在や、コンテンツノードによりｅメールが受け取られた日付のようなｅメールの特性をセーブすることができる。インベントリーにおけるエントリーは、コンテンツノードに存在するｅメールメッセージの数を要約するためにカウントすることができる。各ｅメールの日付は、コンテンツルーターを経てルーティングされた複数のｅメールメッセージに対してインベントリーにおける日付特性に基づく指定の日付範囲内に入るコンテンツノードに存在するｅメールメッセージの数を要約するのに使用される。ｅメールがコンテンツノードに存在しなければならない日数のようなルーティングパラメータをユーザが変更した場合にコンテンツノードが含むｅメールメッセージの数をユーザが知りたい場合には、コンテンツルーター２００は、特定の日付範囲内に入るインベントリーにおけるｅメールの数を計算することができる。
【００７４】
又、インベントリーは、コンテンツルーター２００を通してコンテンツノード３００へ以前にルーティングされたコンテンツノード３００からのｅメールメッセージを除去するためにコンテンツルーター２００のスケジューラーにより使用することもできる。コンテンツルーター２００のスケジューラーは、コンテンツルーター２００を通して以前にルーティングされたｅメールメッセージのインベントリーにおける日付を周期的に比較することができる。例えば、スケジューラーは、これらの日付を、ルーティングされたｅメールをコンテンツノード上に維持するためにユーザが選択した日数を指示するルーティングパラメータと比較することができる。ルーティングパラメータは、移動電話のようなユーザ装置に最後の３日からｅメールを保持するものでよい。新たなｅメールメッセージは、コンテンツルーター２００に到着したときにユーザ装置へ転送され、そして各新たなｅメールのインベントリーが保持される。ｅメールが１つ以上のコンテンツノードにおけるユーザのアクションにより削除されるときに、コンテンツノードは、ｅメール削除コマンドをコンテンツルーターへ送信し、それに応じて、インベントリーが更新される。スケジューラーは、インベントリーにおけるｅメールの日付を、ある日数だけユーザ装置にｅメールを保持するだけでよいことを指示するルーティングパラメータと周期的に（例えば、毎晩）比較することができる。ルーティングパラメータが許すものより古いｅメールをユーザ装置が含むことをインベントリーが指示する場合には、コンテンツルーターのスケジューラーは、ルーティングパラメータにより許されたものより古いユーザ装置上の各ｅメールを削除するためのコマンドを発生することができる。例えば、ルーティングパラメータは、ユーザ装置にｅメールの２日経歴を保持することを指示する。毎晩、スケジューラーは、２日より古いｅメールをユーザ装置から削除するためのコマンドを記憶する。更に、インベントリーは、ルーティングパラメータが変更された場合にコンテンツノードから除去されるか又はコンテンツノードに追加される必要のあるｅメールの数をユーザに指示するのにも使用される。例えば、ｅメールを２日保持すると現在指示されているコンテンツノードのルーティングパラメータが、ｅメールを１日保持するように変更された場合には、コンテンツルーター２００は、コンテンツノードに関連したインベントリーデータから、特定数のｅメールメッセージをコンテンツノードから削除する必要があることを決定する。同様に、ルーティングパラメータが特定のコンテンツノード３００に対して２日から３日へ変更された場合には、コンテンツルーター２００は、特定のコンテンツノード３００及び別の関連コンテンツノードに関係したインベントリーデータから、関連コンテンツノードから特定のコンテンツノードへルーティングする必要のあるｅメールメッセージの数を決定することができる。
【００７５】
同様に、インベントリーは、コンテンツノードにおける１つ以上のコンテンツタイプの数を制限するようにコンテンツルーターにより使用される。コンテンツルーターは、コンテンツタイプの各追加コマンドに対応する削除コマンドを送信し、コンテンツノードは、あるタイプの所定数のコンテンツを既に保持している。或いは又、スケジューラーは、コンテンツノードが、コンテンツタイプごとに所定スレッシュホールド数を越える数のコンテンツアイテムを有するかどうか周期的に決定するように使用されてもよい。所定スレッシュホールド数は、ユーザにより構成されてもよいし、或いは又、コンテンツノードタイプに対するデフォールト値であってもよい。例えば、移動電話のようなコンテンツノードは、５００以上のｅメールメッセージを有する。又、ユーザアカウントのようなコンテンツノードは、より大きな所定スレッシュホールド数、例えば、５０００を有する。コンテンツノードに追加される各新たなｅメールメッセージに対して、コンテンツルーターは、コンテンツノードから最も古いｅメールメッセージを除去するための対応削除コマンドを送信することができる。或いは又、スケジューラーは、コンテンツノードが、所定数より多くの特定コンテンツタイプのアイテムを有するかどうか周期的に決定し、次いで、古くなったコンテンツを除去するために１つ以上の削除コマンドを送信してもよい。例えば、所定数は、５００でよく、これは、特定のユーザ装置が５００個までのｅメールを有することを指示する。ユーザ装置が５００個を越えるｅメールを有することをコンテンツルーターが決定する場合には、ｅメールメッセージを除去するために５００を越える数の削除コマンドを送信する。ある実施形態では、コンテンツルーターは、所定スレッシュホールド数を越える最も古いｅメールメッセージを除去するために削除コマンドを送信する。コンテンツノードをプロビジョニングするときには、インベントリーを使用して、最も新しい５００個のｅメールを他のコンテンツノードから要求し、プロビジョニングされたコンテンツノードへ転送することができる。新たなｅメールが到着すると、５０００のような所定の限界に達するまでそれらがコンテンツノードに追加される。限界に到達すると、コンテンツルーターは、最も古いｅメールメッセージをコンテンツノードから除去するために削除コマンドを発生する。
【００７６】
事象についても同様に、コンテンツノードは、コンテンツノードにおける事象の最大数に対して所定のスレッシュホールド数を有する。コンテンツノードに追加される各新たな事象に対して、コンテンツルーターは、所定のスレッシュホールド数を越えた場合に最も古い事象を除去するために削除コマンドを送信する。或いは又、コンテンツルーターは、インベントリーを周期的に調べて、多数の事象−コンテンツタイプがコンテンツノードに存在することを決定してもよい。これは、次いで、コンテンツノードから最も古い事象を削除するために１つ以上の削除コマンドを送信する。
【００７７】
タスクについても同様に、コンテンツノードは、コンテンツノードにおけるタスクの最大数に対して所定のスレッシュホールド数を有する。コンテンツノードに追加される各新たなタスクに対して、コンテンツルーターは、所定のスレッシュホールド数を越えた場合に最も古いタスクを除去するために削除コマンドを送信する。或いは又、コンテンツルーターは、インベントリーを周期的に調べて、多数のタスク−コンテンツタイプがコンテンツノードに存在することを決定してもよい。コンテンツルーターは、次いで、コンテンツノードから最も古いタスクを削除するために１つ以上の削除コマンドを送信する。或いは又、コンテンツルーターは、所定のスレッシュホールド数を越えない限り完了したタスクを削除するために１つ以上の削除コマンドを送信してもよい。
【００７８】
更に、コンテンツルーター２００は、新たなｅメールのチェック和を計算しそしてセーブすることができる。チェック和は、新たなｅメールを追加するためのコマンドがコマンドをコマンドメモリに複写したか、又はコマンドがコンテンツルーターを既に通過したかを決定するときに使用される。
【００７９】
図９Ａないし９Ｃは、本発明の実施形態による記憶及び転送ロジック２１０の構造、及び処理ロジック２５０とコンテンツノード３００−１ないし３００−ｎとの間のデータ経路を示す。
【００８０】
図９Ａは、コマンドメモリ２２０及び処理ロジック２５０を有する記憶及び転送ロジック２１０を示す。処理ロジック２５０は、接続データセットコンフィギュレーション５００及びコマンドメモリ２２０に結合される。又、コマンドメモリ２２０は、コンテンツノード３００−１ないし３００−ｎにも接続されて示されている。コマンドメモリ２２０は、各コンテンツノード３００に対して入メモリ２３０及び出メモリ２４０の両方を含むように構成される。コンテンツノード３００は、入メモリ２３０に１つ以上のコマンドをプッシュ（プット）することができる。又、コンテンツノード３００は、出メモリ２４０から１つ以上のコマンドをプル（ゲット）することもできる。
【００８１】
当業者であれば、入メモリ２３０及び出メモリ２４０は、データベースを使用して形成されることが明らかであろう。例えば、コマンドメモリ２２０は、コマンドを含むデータベースに構成される。データベースの各コマンドは、属性に関連付けされる。例えば、データベースのコマンドに関連された属性は、コマンドを特定のコンテンツノード３００に対する入コマンド又は出コマンドとして識別することができる。
【００８２】
図９Ｂは、本発明の実施形態による単一のコンテンツノード３００に対する記憶及び転送ロジック２１０内のコマンドメモリの構造を示す。コマンドメモリ２２０は、入メモリ２３０及び出メモリ２４０を含む。
【００８３】
ある実施形態では、入メモリ２３０は、入待ち行列２３１、及びそれに対応するイン・トランシット待ち行列２３２を含む。入待ち行列２３１は、コンテンツノード３００から記憶及び転送ロジック２１０により受け取られたが処理ロジック２５０により応答されていない入コマンドを保持する。それに対応する入イン・トランシット待ち行列２３２は、処理ロジック２５０が応答プロセスにあるところの入コマンドを保持する。入コマンドが処理ロジック２５０により首尾良く応答されると、処理ロジック２５０は、イン・トランシット待ち行列２３２からの入コマンドを破棄する。処理ロジック２５０が入コマンドを首尾良く処理しない場合、例えば、必要なリソースが利用できない場合には、処理ロジック２５０は、イン・トランシット待ち行列２３２からの入コマンドを入待ち行列２３１へ返送する。
【００８４】
ある実施形態では、出メモリ２４０は、出待ち行列２４１、及びそれに対応するイン・トランシット待ち行列２４２を含む。出待ち行列２４１は、（入コマンドに応答して）処理ロジック２５０によって発生された出コマンドを保持するが、処理ロジック２５０は、コンテンツノード３００への出コマンドの送信を開始しない。それに対応する出イン・トランシット待ち行列２４２は、処理ロジック２５０がコンテンツノード３００への送信を開始した出コマンドを保持するが、コンテンツノード３００が出コマンドを受け取ったという確認又は保証は、処理ロジック２５０により受け取られていない。
【００８５】
この場合も、当業者に明らかなように、データベースを使用してコマンドを保持することができると共に、各コマンドに関連した１つ以上の属性は、コマンドが、入待ち行列２３１にあるか、それに対応する入イン・トランシット待ち行列２３２にあるか、出待ち行列２４１にあるか、又はそれに対応する出イン・トランシット待ち行列２４２にあるかを指示する。
【００８６】
図９Ｃは、ソースコンテンツノード３００−１からの入コマンドを保持するのに使用される入メモリ２３０−１と、行先コンテンツノード３００−２への出コマンドを保持するのに使用される出メモリ２４０−２とを示している。
【００８７】
ソースコンテンツノード３００−１が記憶及び転送ロジック２１０に結合される期間中に、ソースコンテンツノード３００−１は、コマンド又はコマンドのセットをコンテンツルーター２００へ送信（プット）する。処理ロジック２５０は、入コマンド又は入コマンドのセットを、ソースコンテンツノード３００−１に関連した入待ち行列２３１−１に入れる。
【００８８】
その後のある時点で、処理ロジック２５０は、入待ち行列２３１−１に保持された入コマンドに応答することができる。入待ち行列２３１−１の入コマンドに対する応答の一部分として、処理ロジック２５０は、入コマンドを入待ち行列２３１−１から入メモリ２３０−１のイン・トランシット待ち行列２３２−１へ移動する。更に、処理ロジック２５０は、出コマンドを発生できるところの行先コンテンツノード３００−２を選択する。一般に、処理ロジック２５０は、多数の行先コンテンツノードを含むか、単一の行先コンテンツノードを含むか、又は行先コンテンツノードを含まないように、行先コンテンツノードのセットを選択する。次いで、処理ロジック２５０は、発生された出コマンドを行先コンテンツノードの出待ち行列２４１−２に入れる。
【００８９】
処理ロジック２５０は、出コマンドを首尾良く準備して出待ち行列２４１−２に書き込んだ後に、入メモリ２３０−１におけるイン・トランシット待ち行列２３２−１から入コマンドを除去することができる。処理ロジック２５０は、出コマンドの準備又は書き込みのいずれかが不首尾である場合に、イン・トランシット待ち行列２３２−１から入待ち行列２３１−１へ入コマンドを戻すことができる。このようにして、入コマンドは、首尾良く応答されるか、又は入コマンドの処理を将来試みるために入待ち行列２３１−１に戻される。
【００９０】
処理ロジック２５０は、出コマンドが出待ち行列２４１−１に保留中であることをコンテンツノード３００に通知するために、コンテンツノード３００−２に通知を送信する。その後のある時点で、行先コンテンツノード３００−２は、出待ち行列２４１−２から出コマンドを要求（プル）する。或いは又、コンテンツルーター２００は、行先コンテンツノード３００−２に出コマンドをプッシュしてもよい。行先コンテンツノード３００−２へ出コマンドを送信するプロセスが開始された後であって、出コマンドが首尾良く送信及び／又は受信されたことを処理ロジック２５０が決定する前に、処理ロジック２５０は、出待ち行列２４１−２から、行先コンテンツノード３００−２に関連したイン・トランシット待ち行列２４２−２へ出コマンドを移動することができる。
【００９１】
送信及び／又は受信の成功は、処理ロジック２５０により内部で決定されるか、出コマンドを除去するためのインストラクションの受信により決定されるか、或いは出コマンドが行先コンテンツノード３００−２により受信されたという充分な保証を与える確認（ＡＣＫ）又は同等の通知の受信により決定される。確認の通信は、行先コンテンツノード３００−２により開始されるか、又は図１５Ｂ、１５Ｃ、１６Ｂ及び１６Ｃを参照して以下に述べるように、行先コンテンツノード３００−２のプロキシーとして働く仲介者により開始される。
【００９２】
否定確認（ＮＡＣＫ）を受け取るか、エラーが検出されるか、時間切れが生じる、等々の場合には、イン・トランシット待ち行列２４２−２に存在する出コマンドが出待ち行列２４１−２へ戻される。その結果、欠陥、例えば、一時的な欠陥が決定された場合には、処理ロジック２５０は、出待ち行列２４１−２から行先コンテンツノード３００−２へ出コマンドを再送信するための将来の機会をもつことができる。処理ロジック２５０は、欠陥が永久的であることを決定した場合には、コマンドを破棄して、イン・トランシット待ち行列２３２、２４２へ／からコマンドを転送する潜在的なエンドレスループを回避することができる。
【００９３】
このようにして、出コマンドが、行先コンテンツノード３００−２により受信されたか、或いは行先コンテンツノード３００−２への送信を将来試みるために出待ち行列２４１−２へ戻されたことが充分に確認される。
【００９４】
入待ち行列２３１又は出待ち行列２４１と、それに対応するイン・トランシット待ち行列２３２、２４２との間でコマンドを移動する動作は、コマンドが適切に応答されるか又は送信された後でなければそれが破棄されないことを保証する上で助けとなる。更に、入待ち行列２３１又は出待ち行列２４１と、イン・トランシット待ち行列２３２、２４２との間でコマンドを移動するプロセスは、ある割り当てられたバッファから別のバッファへのデータの実際の移動と共に行なわれる。或いは又、待ち行列間で移動するプロセスは、実質上、データベースにおけるフラグ又は属性の状態を変更することにより行なわれる。更に、エラー状態が生じた後に、コマンドが、例えば、イン・トランシット待ち行列２３２又は２４２から入待ち行列２３１又は出待ち行列２４１のいずれかに入るたびに、処理ロジック２５０は、以下に述べるように、衝突チェックを遂行する。
【００９５】
図１０Ａないし１０Ｄは、本発明の実施形態によりコンテンツノード３００及びコンテンツルーター２００の観点からプット・ゲット・Ａｃｋ(Put-Get-Ack)手順を示す。この手順の目標は、入待ち行列２３１及び出待ち行列２４１内でのコマンドの衝突を回避することである。入待ち行列２３１及び出待ち行列２４１内での衝突を回避することにより、コンテンツノード３００は、衝突を回避する負担から解放される。
【００９６】
プット・ゲット・Ａｃｋ手順によれば、コンテンツノード３００は、最初に、コンテンツノード３００に保留中の全てのコマンドをコンテンツルーター２００へ送信（プット）する。コンテンツルーター２００は、入コマンドと、入待ち行列２３１又は出待ち行列２４１のいずれかに既にあるコマンドとの間の衝突を回避する。コンテンツノード３００は、それが全てのコマンドをコンテンツルーター２００へ送信した後に、出待ち行列２４１からコマンドを受信（ゲット）する。最終的に、確認（ＡＣＫ）がコンテンツルーター２００により受信され、コンテンツノード３００が出コマンドを受信したことを保証する。
【００９７】
図１０Ａは、コンテンツルーター２００とコンテンツノード３００との間のプット・ゲット・Ａｃｋ手順をコンテンツノード３００の観点から示す。１１００において、ユーザ装置３１０のようなコンテンツノード３００は、コンテンツルーター２００にコマンドをプットするか又はそこからコマンドをゲットする必要が生じるか又はそれが可能になるまで待機する。
【００９８】
１１０１において、コンテンツノード３００は、コマンドが出待ち行列２４１に保留中であるという通知をコンテンツルーター２００から受信し、及び／又はコンテンツノード３００は、コンテンツルーター２００へ送信すべき１つ以上のコマンドを有することを決定する。
【００９９】
１１０２において、コンテンツノード３００は、最初に、コンテンツルーター２００へ送信すべきコマンドがあるかどうか決定する。コンテンツノード３００がコマンドを受信する前にコマンドを送信することを要求することにより、衝突の回避は、コンテンツノード３００によるのではなく、コンテンツルーター２００において取り扱われる。
【０１００】
１１０３において、コンテンツノード３００は、コンテンツノード３００からコンテンツルーター２００へのＰＵＴ（プット）コマンドの要求を送信する。コンテンツノード３００は、コンテンツルーター２００へプットするための１つ以上のコマンドを有する場合に、コマンドを含むペイロードを各々含んだ１つ以上の個々の要求のシーケンスを送信する。或いは又、コマンドのバッチを含むペイロードを各々含んだ１つ以上の要求のシーケンスを送信してもよい。
【０１０１】
１１０４において、コンテンツノード３００は、コマンドがコンテンツルーター２００により受信されたという確認を受け取る。次いで、コンテンツノード３００は、１１０２において再びチェックを行い、コンテンツルーター２００へプットすべきコマンドが更にあるかどうか決定する。
【０１０２】
１１０５、コンテンツノード３００が、コンテンツルーター２００へプットすべき保留中コマンドをもたない場合には、コンテンツノード３００は、ゲットすべきコマンドがあるかどうか決定するためのチェックを行う。ある実施形態では、コンテンツルーター２００は、１１０４において受け取られた確認に指示を含ませる。この指示は、出待ち行列２４１において保留中のコマンドが待機していることをコンテンツノード３００に通知する。コンテンツルーター２００にコマンドがプッシュされない場合には、コンテンツノード３００は、先に受け取った通知に基づいてゲットすべき保留中コマンドが１つ以上あることを決定する。
【０１０３】
１１０６において、コンテンツルーター２００からゲットすべきコマンドがある場合には、コンテンツノード３００は、コンテンツルーター２００へ要求を送信する。１１０７において、コンテンツノード３００は、１つ以上のコマンドを含むペイロードを有する応答を受け取る。１１０８において、コンテンツノード３００は、コマンドを処理し、これは、コマンドを実行することを含んでもよいし、又は将来の実行のためにコマンドを単にセーブするだけでもよい。１１０９において、コンテンツノード３００は、コマンドが受け取られて処理されたという確認（ＡＣＫ）をコンテンツルーター２００へ送信する。１１１０において、コンテンツノード３００は、確認（ＡＣＫ）がコンテンツルーター２００により首尾良く受け取られたという応答を待機する。
【０１０４】
次いで、再び、１１０５において、コンテンツノード３００は、ゲットすべきコマンドが更にあるかどうか調べるためのチェックを行う。コンテンツノード３００は、１１１０において受け取られた最後に受信した応答を検査することにより、コンテンツルーター２００が付加的なコマンドを有するかどうか決定する。ある実施形態では、応答は、出待ち行列２４１において１つ以上の付加的なコマンドが保留中であるという指示を含む。ある実施形態では、応答は、出待ち行列２４１において保留中である１つ以上の付加的なコマンドを含む。出待ち行列２４１において１つ以上の付加的なコマンドが保留中であるという指示を応答が含む場合には、コンテンツノード３００は、１１０６において、コマンドを要求しそして処理することにより動作を続ける。応答が１つ以上の付加的なコマンドを含む場合には、コンテンツノード３００は、１１０８において、コマンドを処理することにより動作を続ける。
【０１０５】
図１０Ｂは、コンテンツルーター２００がコンテンツノード３００によりコンテンツルーター２００へプットすべき新たな入コマンドを受信するという観点からコンテンツルーター２００とコンテンツノード３００との間のプット・ゲット・Ａｃｋ手順を示す。１２００において、コンテンツノード３００は、コンテンツルーター２００へ新たなコマンドを送信し、ここで、新たなコマンドは、入待ち行列２３１を行先とする。
【０１０６】
１２０１において、処理ロジック２５０は、新たなコマンドと、入待ち行列２３１又は出待ち行列２４１のいずれかに存在するコマンドとの間に衝突が存在するかどうか決定する。１２０９において、新たなコマンドと既存のコマンドとの間に衝突が存在する場合には、処理ロジック２５０は、新たなコマンドを破棄すべきかどうか、新たなコマンドを既存の衝突するコマンドと集積化すべきかどうか、既存の衝突するコマンドを待ち行列２３１又は２４１から除去すべきかどうか、及び／又は新たなコマンドを入待ち行列２３１へ移動すべきかどうかを決定することにより、衝突を回避する。新たなコマンドと既存のコマンドとの間の衝突を検出して回避するプロセスは、図１０Ｄを参照して以下で更に述べる。１２０３において、衝突が検出されない場合には、処理ロジック２５０は、コマンドを入待ち行列２３１へ移動させる。
【０１０７】
将来のある時期に、処理ロジック２５０は、１２０４に示すように、入待ち行列２３１におけるコマンドの処理を開始する。１２０５において、処理が開始されると、処理ロジック２５０は、コマンドを入待ち行列２３１からイン・トランシット待ち行列２３２へ移動させる。１２０６において、処理ロジック２５０は、コマンドが処理されたという確認を受け取るか、コマンドが処理されなかったという否定確認を受け取るか、又は時間切れのような欠陥にために、コマンドを再び処理しなければならないことを決定する。
【０１０８】
１２０７において、処理ロジック２５０は、確認を受け取る。それ故、処理ロジック２５０は、コマンドをイン・トランシット待ち行列２３２から除去し破棄する。或いは又、１２０８において、適時に確認が受け取られない場合には、処理ロジック２５０は、１２０４において再処理するために、イン・トランシット待ち行列２３２から入待ち行列２３１へコマンドを返送する準備をする。この点において、移動されるべきコマンドは、新たなコマンドとして処理される。１２０１Ａにおいて、処理ロジック２５０は、移動されるべきコマンドと、コンテンツノード３００に対して入待ち行列２３１及び出待ち行列２４１にあるコマンドとの間の衝突チェックを遂行する。次いで、１２０２を参照して上述したようにプロセスが続けられる。
【０１０９】
図１０Ｃは、コンテンツルーター２００が、コンテンツルーター２００からゲットすべきコンテンツノード３００のための新たな出コマンドを発生するという観点から、コンテンツルーター２００とコンテンツノード３００との間のプット・ゲット・Ａｃｋ手順を示す。１２１０において、コンテンツルーター２００は、同じユーザに関連した異なる接続コンテンツノードからの入コマンドに応答して、新たな出コマンドを発生することができる。
【０１１０】
１２１１において、処理ロジック２５０は、新たなコマンドと、入待ち行列２３１又は出待ち行列２４１のいずれかに存在するコマンドとの間に衝突が存在するかどうか決定する。１２１９において、新たなコマンドと既存のコマンドとの間に衝突が存在する場合には、処理ロジック２５０は、新たなコマンドを破棄すべきかどうか、新たなコマンドを既存の衝突するコマンドと集積化すべきかどうか、既存の衝突するコマンドを待ち行列２３１又は２４１から除去すべきかどうか、及び／又は新たなコマンドを出待ち行列２４１へ移動すべきかどうかを決定することにより、衝突を回避する。１２１３において、衝突が検出されない場合には、処理ロジック２５０は、コマンドを出待ち行列２４１へ移動させる。１２１４において、処理ロジック２５０は、出待ち行列２４１において新たなコマンドが待機していることを指示する通知をコンテンツノード３００へ送信する。
【０１１１】
将来のある時期に、処理ロジック２５０は、出待ち行列２４１におけるコマンドの処理を開始する。１２１５において、処理が開始されると、処理ロジック２５０は、出待ち行列２４１からコンテンツノード３００へコマンドを送信する。又、処理ロジック２５０は、出待ち行列２４１からイン・トランシット待ち行列２４２へコマンドを移動させる。１２１６において、処理ロジック２５０は、コマンドがコンテンツノード３００により処理されたことを指示するコンテンツノード３００からの確認を待機する。処理ロジック２５０が、コマンドが処理されなかったという否定確認を受け取るか、或いは時間切れのような欠陥のために、コマンドを再び処理しなければならないと決定する場合には、欠陥が生じる。
【０１１２】
１２１７において、処理ロジック２５０は、確認を受け取る。それ故、処理ロジック２５０は、イン・トランシット待ち行列２４２からコマンドを除去し破棄する。或いは又、１２１８において、適時に確認が受け取られない場合には、処理ロジック２５０は、再処理のために、イン・トランシット待ち行列２４２から出待ち行列２４１へコマンドを返送する準備をする。この点において、移動されるべきコマンドは、新たなコマンドとして処理される。１２１１Ａにおいて、処理ロジック２５０は、移動されるべきコマンドと、コンテンツノード３００に対して入待ち行列２３１及び出待ち行列２４１にあるコマンドとの間の衝突チェックを遂行する。次いで、１２１２を参照して上述したようにプロセスが続けられる。
【０１１３】
図１０Ｄは、新たなコマンド４００と、入待ち行列２３１及び出待ち行列２４１における既存のコマンド４０１−４０７との間の衝突を検出する構造を示す。新たなコマンド４００は、コンテンツノード３００から受け取られるか、又は処理ロジック２５０により発生される。コンテンツノード３００からの新たなコマンド４００は、入待ち行列２３１を行先とする。処理ロジック２５０により発生される新たなコマンド４００は、出待ち行列２４１を行先とする。新たなコマンド４００が入待ち行列２３１又は出待ち行列２４１のいずれかにセーブされる前に、処理ロジック２５０は、衝突が生じるかどうか決定する。
【０１１４】
衝突が生じるかどうか決定するために、処理ロジック２５０は、新たなコマンド４００を、入待ち行列２３１及び／又は出待ち行列２４１における既存のコマンド４０１−４０７と比較する。新たなコマンド４００と、待ち行列に入れられた既存のコマンドが、関連するコンテンツ又はメタデータを含む場合には、処理ロジック２５０は、新たなコマンド４００とこの既存のコマンドとの間の衝突を回避しなければならないと決定する。
【０１１５】
検出された衝突を回避するため、処理ロジック２５０は、一方のコマンドが他方に取って代わるかどうか決定する。既存のコマンドが新たなコマンドに取って代わる場合には、処理ロジック２５０は、新たなコマンド４００を破棄する。新たなコマンドが既存のコマンドに取って代わる場合には、処理ロジック２５０は、適当な待ち行列２３１又は２４１において既存のコマンドを新たなコマンド４００に置き換えるか、或いは待ち行列２３１又は２４１から既存のコマンドを除去しそして新たなコマンド４００を適当な待ち行列２３１又は２４１の異なる位置で新たなエントリーとして追加する。
【０１１６】
或いは又、処理ロジック２５０は、新たなコマンド４００と、この新たなコマンド４００に衝突するコマンドを、単一のコマンドへ集積化すべきであることを決定してもよい。これらコマンドが集積化される場合には、処理ロジック２５０は、既存のコマンドを集積化されたコマンドに置き換えてもよいし、或いは待ち行列２３１又は２４１から既存のコマンドを除去し、そして集積化されたコマンドを適当な待ち行列２３１又は２４１に新たなエントリーとして追加してもよい。
【０１１７】
図１１は、本発明の実施形態による接続データセットコンフィギュレーション８００の構造を示す。接続データセットコンフィギュレーションデータベース８００は、コンテンツルーター２００に接続された各ユーザに対してハイアラーキーコンフィギュレーション、例えば、５１０ないし５７０を含む。第１ユーザは、コンフィギュレーション及びメンテナンスツールを使用して接続データセットコンフィギュレーション５１０を定義する。コンフィギュレーション及びメンテナンスツールは、例えば、ＳＱＬデータベースコールを経てデータベース８００へアクセスできるウェブベースのグラフィックユーザインターフェイス（ＧＵＩ）でよい。
【０１１８】
各ユーザコンフィギュレーション５１０ないし５７０は、ユーザ装置５１１及びユーザアカウント５１６に対するコンフィギュレーションを含む。ユーザ装置５１１に対する各コンフィギュレーションは、各ユーザ装置５１２、５１３に対するコンフィギュレーションのセットを含む。ユーザアカウント５１６に対する各コンフィギュレーションは、各ユーザアカウント５１７、５１８に対するコンフィギュレーションのセットを含む。各ユーザ装置及びアカウントコンフィギュレーション５１２、５１３、５１７及び５１８は、各構成されたコンテンツタイプに対するコンフィギュレーションのセットを含む。
【０１１９】
当業者に明らかなように、接続データセットコンフィギュレーションデータベース８００は、多数の考えられるハイアラーキー構造の１つを使用して構成される。例えば、ユーザ装置コンフィギュレーション５１１及びユーザアカウントコンフィギュレーション５１６は、単一構造へと結合することができる。ユーザ装置又はユーザアカウントとコンテンツタイプとの間のハイアラーキー構造は、ユーザ装置又はユーザアカウントコンフィギュレーションが多数のコンテンツタイプに対するコンフィギュレーションを含むのではなく、コンテンツタイプコンフィギュレーションが多数のユーザ装置及び／又はユーザアカウントに対するコンフィギュレーションを含むように、逆転してもよい。
【０１２０】
図示されたように、ユーザ装置コンフィギュレーション５１３は、ユーザ装置によって処理される各コンテンツタイプに対するコンフィギュレーションを含む。例えば、ユーザ装置Ｂが、連絡先、事象、実行すべきアイテム（タスク）、ｅメール、及びライブラリーアイテムを処理できる場合には、ユーザ装置Ｂのコンフィギュレーション５１３は、各コンフィギュレーション５１３−１、５１３−２、５１３−３、５１３−４及び５１３−５を含む。ユーザの接続コンテンツノードの各コンテンツタイプに対してデータベースＩＤが割り当てられる。それ故、データベースＩＤは、特定のユーザに対する特定の接続コンテンツノードにおける特定のコンテンツタイプに対して１対１の関係を有する。このデータベースＩＤは、コンテンツノードがコンテンツルーター２００と通信するときにコンテンツノードにより使用される。例えば、コンテンツノードにより発生される各コマンドは、図１３を参照して以下に述べるように、ユーザ、コンテンツノード及びコンテンツタイプを識別するために特定のデータベースＩＤを含む。
【０１２１】
特定のコンテンツノード（例えば、ユーザ装置Ｂ  ５１３）の連絡先コンテンツタイプに対するコンフィギュレーション５１３−１は、電話番号を含む連絡先を必要とする。例えば、ある移動電話は、電話番号を含む連絡先しか許さない。或いは又、ユーザは、ユーザ装置の電話番号を伴う連絡先しか希望しない。このようなフラグがセットされた場合には、電話番号をもたない全ての連絡先は、このコンテンツノードへルーティングされない。電話番号は、他のＡＳＣＩＩキャラクタをもたずに、数字のみでなければならないことをフラグが指示してもよい。この場合、ＡＳＣＩＩで埋めた電話番号の非フィルタバージョンを保持するように、以下に述べるようにレポジトリーを使用することができ、一方、コンテンツルーターは、数字のみの電話番号を含む連絡先を準備する。
【０１２２】
特定コンテンツノードの事象コンテンツタイプに対するコンフィギュレーション５１３−２は、次の２週間（又は他の将来の設定期間）以内に発生する事象をコンテンツノードへルーティングすることしか許さない。それ故、１つのコンテンツノードが新たな事象をコンテンツルーターへ送信する場合には、コンテンツルーターは、この事象が将来の所定期間内に生じるかどうか決定する。事象がパラメータ内に入らないことをフラグ及び期間が示す場合には、コンテンツルーターは、事象をこのコンテンツノードにルーティングしない。更に、コンテンツルーターは、以下に述べるインベントリーを含んでもよく、これは、事象が期間内に入るかどうか決定するために周期的に再検討され、そして１つのコンテンツノードから検索されてこのコンテンツノードへ送信される。全てのアタッチメントが事象から除去された後にこのコンテンツノードへ転送されることを別のフラグが指示してもよい。又、全てのノートが事象から除去された後にこのコンテンツノードへ転送されることを別のフラグが指示してもよい。
【０１２３】
同様に、特定コンテンツノードの実行すべきタスクコンテンツタイプに対するコンフィギュレーション５１３−３も、次の２週間（又は他の将来の設定期間）以内に行なうべきタスクをコンテンツノードへルーティングすることしか許さない。
【０１２４】
ｅメールに対するコンフィギュレーション５１３−４は、ルーティングルールに使用されるルーティングパラメータ、及び変換ルールに使用される変換パラメータを含むように示されている。ルーティングルールは、行先コンテンツノードのセットを選択するために処理ロジック２５０により使用される。このセットは、ナルセットであり、従って、出コマンドの受信に対してコンテンツノードが選択されることはない。或いは又、このセットは、出コマンドを受信する１つ以上の行先コンテンツノードを指示してもよい。ルーティングルールは、コンテンツノードに許されたエレメントの数についての上限、又は特定のコンテンツタイプを受け取るためのコンテンツノードの能力を含む。例えば、ルーティングルールは、装置へのコマンドを阻止し、読まれないｅメール又は読まれるｅメールの数を増加するものでよい。ルーティングパラメータは、コンテンツノードがコマンドを受け容れるか又は受け容れないかのフラグ指示でよい。例えば、コンテンツノードのｅメールボックスがいっぱいである場合には、付加的なｅメールの送信を阻止するようにフラグがセットされる。ルーティングパラメータは、受け容れられる入力の最大サイズを指示する。例えば、コンテンツノードが、メモリ制限のある移動電話である場合には、ルーティングパラメータは、特定サイズより大きい（例えば、１キロバイトより大きい）全てのｅメールメッセージを阻止するのに使用される。ルーティングパラメータは、接続速度が所定レートより低い場合、又は接続タイプが高い転送レートを与えない場合に、コンテンツルーターが、コンテンツノードに向けられた全てのコマンドを阻止すべきであることを指示してもよい。例えば、ルーティングパラメータは、移動電話がワイヤード接続で接続されていない場合に、移動電話のようなコンテンツノードがアタッチメントを伴うｅメールメッセージを受信しないことを指示してもよい。
【０１２５】
各々の選択された行先コンテンツノードに対して、処理ロジック２５０は、出コマンドを発生する。処理ロジック２５０は、変換ルールを処理するときに、変換パラメータを使用する。変換ルールは、発生された出コマンドのコンテンツを決定するのに使用される。例えば、変換パラメータは、コマンドを最大サイズに裁断する（例えば、サイズを１キロバイト未満に制限する）のに使用される最大サイズ値でよい。変換パラメータは、特定のコンテンツタイプをコマンドからカットすべきかどうか決定するのに使用されるフラグでよい。例えば、コンテンツノードが、映像ファイルであるアタッチメントしか受け容れないことを指示するフラグが使用されてもよい。変換パラメータは、全てのアタッチメントを阻止するのに使用されるフラグでよい。例えば、コンテンツノードが、ドキュメントファイルであるアタッチメントを受け容れないことを指示するフラグが使用されてもよい。変換パラメータは、接続速度が所定レートより低い場合、又は接続タイプが高い転送レートを与えない場合に、コンテンツルーターが全てのアタッチメントを除去すべきであることを指示してもよい。例えば、変換パラメータは、移動電話がワイヤード接続で接続された場合には移動電話のようなコンテンツノードがアタッチメントを伴うｅメールメッセージを受け容れることを指示するが、移動電話がワイヤレス接続で接続された場合にはアタッチメントが剥離されたことを指示する。変換パラメータは、コンテンツノードがいっぱい状態に近づきつつある場合に全てのアタッチメントを阻止するのに使用されるフラグでよい。例えば、コンテンツノードがほぼいっぱい（例えば、９０％いっぱい）のときに、コンテンツノードがアタッチメントを受け容れないことを指示するフラグが使用されてもよい。コンテンツノードは、ｅメールからアタッチメントを剥離し、コンテンツノードに空きメモリを保存することができる。
【０１２６】
特定コンテンツノードのライブラリーアイテムコンテンツタイプに対するコンフィギュレーション５１３−５は、映像をコンテンツノードにルーティングすることしか許さない。オーディオファイルをフィルタリングするために別のフラグが使用されてもよい。更に、映画ファイルをフィルタリングするために別のフラグが使用されてもよい。
【０１２７】
図１２Ａないし１２Ｅは、本発明の実施形態によりコンテンツルーター２００をユーザ装置３１０及びユーザアカウント３２０にインターフェイスするのに使用できる外部及び内部ロジックを示す。コンテンツルーティングシステムは、記憶及び転送ロジック２１０を備えている。又、コンテンツルーティングシステムは、プロトコルロジック２６０及び／又はプロトコルインターフェイスロジックのような変換ロジックも備えている。更に、コンテンツルーティングシステムは、装置ゲートウェイ及び／又はサーバーゲートウェイのようなゲートウェイも備えている。或いは又、ゲートウェイは、コンテンツルーティングシステムの外部であってもよい。
【０１２８】
図１２Ａは、外部プロトコルインターフェイスロジック２６０に結合されたコンテンツルーター２００を示し、これは、接続データセットコンフィギュレーション５００と、プロトコルインターフェイスロジック２６０のコマンドインターフェイスに結合された記憶及び転送ロジック２１０とを含む。プロトコルインターフェイスロジック２６０は、記憶及び転送ロジック２１０を、異種のプロトコルを有するインターフェイスを使用して、ユーザ装置３１０−１ないし３１０−３及びユーザアカウント３２０−１ないし３２０−３のような種々のコンテンツノードタイプに結合するのに使用される。
【０１２９】
ここに示す実施形態では、プロトコルインターフェイスロジック２６０は、コンテンツノード３１０、３２０によって使用されるプロトコルと、記憶及び転送ロジック２１０で処理されるコマンド４００との間で変換を行なう。より詳細には、プロトコルインターフェイスロジック２６０は、コンテンツノード３１０−１ないし３１０−３及びユーザアカウント３２０−１ないし３２０−３と通信するのに使用される特定のコンテンツノードプロトコルに基づきメッセージ９１０−１ないし９１０−３及び９２０−１ないし９２０−３を受け取る。プロトコルインターフェイスロジック２６０は、これらの信号を、記憶及び転送ロジック２１０のためのコマンド４００に変換する。又、プロトコルインターフェイスロジック２６０は、記憶及び転送ロジック２１０からコマンド４００を受け取り、そしてこれらコマンドを、特定のコンテンツノード３１０−１ないし３１０−３及び３２０−１ないし３２０−３に対して調整されたメッセージ９１０−１ないし９１０−３及び９２０−１ないし９２０−３へ変換して戻す。
【０１３０】
上述したように、コンテンツルーター２００は、プロトコルインターフェイスロジック２６０のコマンドインターフェイスに結合される。以下に述べるように、コンテンツルーター２００は、プロトコルインターフェイスロジック２６０のメッセージインターフェイスに結合される。
【０１３１】
図１２Ｂは、記憶及び転送ロジック２１０と、メッセージ８０１とコマンド４００との間で変換を行うプロトコルアダプタ２６８とを備えたコンテンツルーター２００を示す。プロトコルインターフェイスロジック２６０は、ユーザ装置からのメッセージ９１０とコンテンツルーター２００からのメッセージとの間で変換を行う装置ゲートウェイ２６４を備えている。装置ゲートウェイ２６４は、コンテンツルーター２００を、種々のプロトコルを使用してユーザ装置に結合する。種々のユーザ装置及びプロトコルは、ＳｙｎｃＭＬプロトコル又はＳＭＳベースのプロトコルを実行する移動電話、バイナリープロトコルを実行するＪａｖａ（登録商標）ベースのクライアント装置、ＨＴＴＰプロトコルを実行するホームパーソナルコンピュータベースのクライアント、等を含む。
【０１３２】
装置ゲートウェイ２６４は、異なるユーザ装置タイプにより使用される種々のプロトコルと、コンテンツルーター２００により使用されるＸＭＬ−ＲＰＣ（エクステンシブル・マークアップ・ランゲッジ−リモート・プロセデュア・コーリング）プロトコルのような共通のプロトコルとの間で変換を行う機能を遂行する。共通のプロトコルは、共通のプロトコルを使用する付加的なゲートウェイもコンテンツルーター２００に結合されるときに容易な拡張性を許す。更に、共通のプロトコルを使用して、装置プロトコル変換の機能をプロトコルアダプタ２６８からデカップルすると共に、記憶及び転送ロジック２１０からもデカップルする。
【０１３３】
変換プロトコルに加えて、装置ゲートウェイ２６４は、クライアントとして働くユーザ装置３１０の観点からクライアント／サーバー関係をサポートするようにサーバーをモデリングする。又、装置ゲートウェイ２６４は、サーバーとして働く記憶及び転送ロジック２１０の観点からクライアント／サーバー関係をサポートするようにクライアントもモデリングする。
【０１３４】
別の実施形態では、プロトコルアダプタ２６８は、コンテンツルーター２００とは個別である。又、プロトコルアダプタ２６８は、プロトコルインターフェイスロジック２６０の一部分でもよいし、スタンドアローンでもよい。
【０１３５】
あるユーザ装置３１０は、コンテンツルーター２００に気付かないユーザインターフェイスアプリケーションを含んでもよい。これらのユーザ装置３１０に対して、ユーザ装置３１０は、コンテンツルーター２００を知っていてユーザインターフェイスアプリケーションとインターフェイスするデータルーティングドライバを含んでもよい。このデータルーティングドライバは、入手可能なプロトコルを使用して、コンテンツルーター２００と通信し、これにより、ユーザアプリケーションをコンテンツルーター２００に結合させる。入手可能なプロトコルを経て受け取られるコマンドは、ユーザアプリケーションのためのインストラクションへと変換される。更に、アプリケーション内で行なわれる変更は、入手可能なプロトコルを経て送られるメッセージとしてコンテンツルーター２００へ通信される。
【０１３６】
あるユーザ装置３１０は、データルーティングドライバと、コンテンツルーター２００を知っているアプリケーションとの両方を含む。他のユーザ装置３１０、例えば、ＳｙｎｃＭＬイネーブルの移動電話は、このような装置に本来ある能力のために、コンテンツルーター２００を知っているデータルーティングドライバを必要としない。例えば、ＳｙｎｃＭＬイネーブルの移動電話は、コンテンツルーター２００により呼び出しできるオーバー・ジ・エア(over-the-air)ＳｙｎｃＭＬ同期ルーチンを固有に備えている。それ故、コンテンツルーター２００は、コンテンツルーターを知っているソフトウェアをユーザ装置３１０に必要とせずに、ＳｙｎｃＭＬイネーブルの移動電話へ変更をプッシュすることができる。
【０１３７】
図１２Ｃは、記憶及び転送ロジック２１０と、メッセージ８０１とコマンド４００との間で変換を行うプロトコルアダプタ２６８とを備えたコンテンツルーター２００を示す。プロトコルインターフェイスロジック２６０は、ユーザアカウントからのメッセージ９２０と、コンテンツルーター２００に使用するための共通のプロトコルを有するメッセージとの間で変換を行うサーバーゲートウェイ２６６を備えている。サーバーゲートウェイ２６６は、コンテンツルーター２００を、種々のプロトコルを使用してユーザアカウントに結合する。
【０１３８】
サーバーゲートウェイ２６６は、ＨＴＴＰ  ＸＭＬ、ＪＤＡＶ、ＷｅｂＤＡＶ  Ｅｘｃｈａｎｇｅ、ＩＭＡＰ、ＰＯＰ３等の種々のサーバープロトコルに基づいて通信するユーザアカウントによりコンテンツルーター２００にアクセスすることができる。サーバーは、ＰＩＭサーバー、例えば、Ｙａｈｏｏ！（登録商標）ＰＩＭサーバー、フォトサーバー、例えば、Ｙａｈｏｏ！（登録商標）フォトサーバー、ｅメールサーバー、例えば、ＰａｃＢｅｌｌｅメールサーバー、等を含む。例えば、コンテンツノード３２０は、ＩＭＡＰプロトコルを使用してコンテンツルーター２００と通信するためのｅメールサーバー上のユーザｅメールアカウントでよい。
【０１３９】
装置ゲートウェイ２６４と同様に、サーバーゲートウェイ２６６は、記憶及び転送ロジック２１０に対してクライアントをモデリングする。クライアントとサーバーとの間の仲介者をモデリングする装置ゲートウェイ２６４とは異なり、サーバーゲートウェイ２６６は、２つのサーバー間の仲介者をモデリングする。通常、２つのサーバーは、クライアント／サーバー関係で通信しない。しかしながら、サーバーゲートウェイ２６６は、アカウントサーバーが記憶及び転送ロジック２１０のサーバーと通信するのを許し、その両者は、クライアント／サーバー関係でサーバーとして働く。この通信を容易にするために、サーバーゲートウェイ２６６は、ユーザアカウント３２０の観点からクライアント／サーバー関係をサポートするようにクライアントをモデリングし、そして記憶及び転送ロジック２１０の観点からクライアントをモデリングする。
【０１４０】
上述したように、プロトコルインターフェイスロジック２６０は、コンテンツルーター２００の外部に配置される。以下に述べるように、コンテンツルーター２００は、プロトコルインターフェイスロジック２６０を備えている。
【０１４１】
図１２Ｄは、記憶及び転送ロジック２１０と、プロトコルアダプタ２６８と、装置ゲートウェイ２６４及びサーバーゲートウェイ２６６を含むプロトコルインターフェイスロジック２６０とを備えたコンテンツルーター２００を示す。上述したように、装置ゲートウェイ２６４及びサーバーゲートウェイ２６６は、装置及びサーバーにより使用されるプロトコルと、ＸＭＬ−ＲＰＣプロトコルのような共通のプロトコルとの間で変換を行う。プロトコルアダプタ２６８は、共通のプロトコルと、記憶及び転送ロジック２１０と通信するのに使用されるコマンド４００との間で変換を行なう。記憶及び転送ロジック２１０とプロトコルアダプタ２６８との間に送られるコマンド４００は、リモート・メソッド・インボケーション・オーバー・インターネット・インターＯＲＢプロトコル（ＲＭＩ−ＩＩＯＰ）技術インターフェイスを含むＪａｖａ（登録商標）プラットホームのような要求／応答構成にある。Ｊａｖａ（登録商標）ＲＭＩプラットホームは、Ｊａｖａ（登録商標）イネーブルコンテンツノードで実行されるオブジェクトが、Ｊａｖａ（登録商標）ベースの記憶及び転送ロジック２１０で実行されるオブジェクト上のメソッドを呼び出すのを許し、又、その逆のことも許す。更に、コンテンツルーター２００は、１つ以上のルーティングパラメータ及び／又は１つ以上の変換パラメータで装置ゲートウェイ２６４及び／又はサーバーゲートウェイ２６６を構成し、ゲートウェイがコンテンツノードのコマンドでルーティング及び変換を行なえるようにする。
【０１４２】
装置ゲートウェイ２６４は、プロトコルアダプタ２６８を、ＳｙｎｃＭＬプロトコル９１０−１を実行する移動電話３１０−１、及びバイナリープロトコル９１０−２で動作するＪａｖａ（登録商標）ベースのクライアント装置３１０−２へ結合するように示されている。サーバーゲートウェイ２６６は、プロトコルアダプタ２６８を、プロトコル９２０−１、９２０−２及び９２０−３で、各々、ＰＩＭサーバー３２０−１、フォトサーバー３２０−２及びｅメールサーバー３２０−３へ結合するように示されている。
【０１４３】
ＸＭＬ−ＲＰＣのような共通のプロトコルは、異種のオペレーティングシステム及び異なる環境において実行されるアプリケーションが、ＨＴＴＰをトランスポート層として、且つＸＭＬをエンコード機構として使用して、リモート手順コールを行えるようにする。ＸＭＬ−ＲＰＣプロトコルは、装置ゲートウェイ２６４、サーバーゲートウェイ２６６、ＸＭＬ−ＲＰＣイネーブル装置、又はＸＭＬ−ＲＰＣイネーブルサーバーで実行されるアプリケーションから、プロトコルアダプタ２６８、及び記憶及び転送ロジック２１０へ、複雑なデータ構造体を送信できるようにする。プロトコルアダプタ２６８、又は記憶及び転送ロジック２１０は、受け取ったデータ構造体を処理し、その結果をアプリケーションに返送することができる。
【０１４４】
共通のプロトコルを使用して通信する能力を有するコンテンツノードは、ゲートウェイをバイパスし、プロトコルアダプタ２６８と直接通信することができる。例えば、クライアントアプリケーションを実行するＳｙｍｂｉａｎ装置、又はＷｉｎＣＥ、Ｗｉｎ３２、又はホームパーソナルコンピュータ（ＰＣ）３１０−３は、プロトコルアダプタ２６８と直接通信することができ、装置ゲートウェイ２６４を回避する。というのは、ＰＣ３１０−３は、共通のプロトコルを既に使用しているからである。更に、スマートフォン３１０−４も、共通のプロトコルを使用して通信することができ、装置ゲートウェイ２６４を回避する。同様に、ユーザアカウントも、共通のプロトコルを使用し、従って、サーバーゲートウェイ２６６をバイパスして、プロトコルアダプタ２６８と通信することができる。図示されたように、Ｙａｈｏｏ！（登録商標）サーバー３２０−４は、共通のプロトコルを使用し、従って、サーバーゲートウェイ２６６を回避する。ある実施形態では、コンテンツノードがコマンド４００と直接通信し（図示せず）、従って、プロトコルアダプタ２６８の使用を回避する。
【０１４５】
共通のプロトコルを使用することにより、プロトコルアダプタ２６８は、装置ゲートウェイ２６４からのメッセージ８０１、サーバーゲートウェイ２６６からのメッセージ８０３、ユーザ装置３１０−３、３１０−４からのメッセージ８１０−３、８１０−４、及びユーザアカウント３２０−４からのメッセージ８２０−４を同様に処理し、これにより、プロトコルアダプタ２６８の設計及び実施を簡単化することができる。それ故、共通のプロトコルでの到来メッセージは、プロトコルアダプタ２６８への入力経路に関らず、同様に処理される。その結果、記憶及び転送ロジック２１０は、各コンテンツノードからのコマンドを同様に処理することができる。
【０１４６】
又、コンテンツルーター２００は、図１２Ｄに示すように、記憶及び転送ロジック２１０から装置ゲートウェイ２６４及び／又はサーバーゲートウェイ２６６へ送信された通知信号（破線）も含む。出コマンドが出待ち行列２４１において待機中である場合には、記憶及び転送ロジック２１０は、適当なゲートウェイ２６４、２６６へ通知信号を周期的に送信することができる（破線）。通知は、ｔｅｌｎｅｔ、ＨＴＴＰ、カスタムＡＰＩ、等を使用して、記憶及び転送ロジック２１０からゲートウェイ２６４、２６６へ送信される。次いで、ゲートウェイ２６４、２６６は、記憶及び転送ロジック２１０から出コマンド又はコマンド４００に対する要求を開始する。ゲートウェイ２６４、２６６は、出待ち行列２４１からコマンドを含む応答を受け取る。
【０１４７】
ある実施形態では、ゲートウェイ２６４、２６６が通知信号を受信して、出コマンドをフェッチした後に、ゲートウェイは、コマンドを含む出通知メッセージを準備する。出コマンドのサイズが比較的小さい場合には、ゲートウェイ２６４、２６６は、通知内にコマンドを含ませることができる。
【０１４８】
ある実施形態によれば、記憶及び転送ロジック２１０は、出待ち行列が出コマンドを含むことをコンテンツノード３００に通知するためにコンテンツノード３００へ通知を送ることを決定する。記憶及び転送ロジック２１０は、ゲートウェイ２６４、２６６に対して通知信号を発生する。ゲートウェイ２６４、２６６は、記憶及び転送ロジック２１０から通知信号を受信する。通知信号は、コンテンツノード３００に対して出待ち行列２４１に出コマンドが得られることを指示する。通知信号の受信に応答して、ゲートウェイ２６４、２６６は、例えば、プロトコルアダプタ２６８へのコールにより、出コマンドを要求することができる。プロトコルアダプタ２６８は、記憶及び転送ロジック２１０からコマンドを検索し、該ロジックは、それをゲートウェイ２６４、２６６へ供給する。ゲートウェイ２６４、２６６は、出コマンドを含む応答を受信する。ゲートウェイ２６４、２６６は、出コマンドを含む出通知を準備する。ゲートウェイ２６４、２６６は、出コマンドを、コンパクトなバイナリーシーケンスへとエンコードする。次いで、ゲートウェイ２６４、２６６は、出通知をコンテンツノード３００へ送信し、このコンテンツノードは、移動電話のようなユーザ装置であるか、又はｅメールアカウントのようなユーザアカウント３２０である。例えば、装置ゲートウェイ２６４は、ＳＭＳゲートウェイを経て移動電話へ出通知を送信する。ゲートウェイ２６４、２６６は、出通知の確認を、プロトコルアダプタ２６８を経て記憶及び転送ロジック２１０へ送信する。
【０１４９】
図１２Ｅは、本発明の実施形態によるマルチサーバーコンテンツルーティングシステムを示す。コンテンツルーター２００は、第１サーバーとして働く。コンテンツルーター２００は、記憶及び転送ロジック２１０と、プロトコルアダプタ２６８とを備え、これは、ＲＭＩ−ＩＩＯＰのようなコマンドベースの交換器を経て内部で通信すると共に、ＸＭＬ−ＲＰＣのような共通のプロトコルを経て外部と通信する。又、コンテンツルーター２００は、接続データセットコンフィギュレーション５００、及び／又はレポジトリー６００、及び／又はコンテンツルーター２００の内部又は外部にあるファイル中継サーバー７００も備える。更に、コマンドメモリ２２０、接続データセットコンフィギュレーション５００、レポジトリー６００、及びファイル中継サーバー７００は、各々、個別のメモリで形成されてもよいし、共通のメモリに結合されてもよいし、又は個別メモリ及び結合メモリの組み合せで形成されてもよい。例えば、コマンドメモリ２２０、接続データセットコンフィギュレーション５００、レポジトリー６００、及びファイル中継サーバー７００は、各々、個別の関係データベースのような個別のデータベースで形成されてもよいし、或いは２つ以上が結合データベースに結合されてもよい。
【０１５０】
又、コンテンツルーティングシステムは、コンテンツノードと通信するためのサーバーも備えている。装置ゲートウェイ（サーバー）２６４は、装置特有のプロトコル９１０を使用してユーザ装置３１０にインターフェイスする。サーバーゲートウェイ（サーバー）２６６は、サーバー特有のプロトコル９２０を使用してユーザアカウント３２０にインターフェイスする。
【０１５１】
本発明のある実施形態は、ファイル中継サーバー７００を備え、又はそれに結合される。ファイル中継サーバー７００は、ファイル中継メモリとして働き、１つ以上のサーバー及び／又はコンテンツルーター２００に結合され（直接接続は図示されていない）、及び／又は１つ以上のコンテンツノードに結合される。
【０１５２】
ファイル中継サーバー７００は、複数のコンテンツノード間で分離可能なセグメントを有するコマンドを搬送するのを容易にし、これは、コマンドを記憶及び転送ロジックの共通メモリへセーブする前にセグメントを切り離すことを含む。ファイル中継サーバー７００は、コンテンツノード３１０、３２０、サーバー２６４、２６６、又はコンテンツルーター２００（プロトコルアダプタ２６８又は記憶及び転送ロジック２１０）の入力を与えて、１つ以上のファイルを記憶し、それらファイルを入コマンドから除去した後に、入コマンドを記憶及び転送ロジック２１０のコマンドメモリ２２０に記憶できるようにする。分離可能なセグメント、特に、大きなファイルを除去することにより、コマンドメモリは、多数のコマンドを保持することができ、コマンドの処理において機敏性が高くなる。又、ファイル中継サーバー７００は、ファイアウオールの後方のコンテンツノードから及びコンテンツノードへファイルをルーティングするためのメカニズムも与える。ファイアウオールにより分離された２つのコンテンツノード３００は、他方から、ファイルのようなコンテンツ及びメタデータにアクセスすることが許されない。しかしながら、両方のコンテンツノード３００が、ファイル中継サーバー７００へ直接的に、又はサーバー２６４、２６６、コンテンツルーター２００、プロトコルアダプタ２６８、又は記憶及び転送ロジック２１０を経て間接的に、コンテンツ及び／又はメタデータを与えることができる場合には、コンテンツノード３００は、実際に、コンテンツ及び／又はメタデータを交換することができる。更に、ある実施形態では、ファイルが、ファイル中継サーバー７００にセーブされる前に、コンテンツノード３１０、３２０、サーバー２６４、２６６、コンテンツルーター２００、プロトコルアダプタ２６８、又は記憶及び転送ロジック２１０により暗号化される。ある実施形態では、あるコンテンツノードにより与えられるファイルは、例えば、そのユーザに対する接続データセットコンフィギュレーションにおいて構成されて、同じユーザに接続された他のコンテンツノードにしか得られないように、セキュリティメカニズムが実施される。セキュリティメカニズムは、ファイル中継サーバー７００からのファイルに対する各要求を認証することや、受信及び配送ファイルを暗号化することを含む。
【０１５３】
マルチサーバーコンテンツルーティングシステムは、図５に示されたピア・ツー・ピア４５０接続が望まれないか又は不可能であるときに、ファイル中継サーバー７００を使用して、コンテンツノードがアタッチメントを受信するための経路を与えることができる。ピア・ツー・ピア４５０接続は、コンテンツノードの一方又は両方が、ピア・ツー・ピア接続を阻止するファイアウオールの後方にあるときには、不可能である。更に、ピア・ツー・ピア４５０接続は、各コンテンツノードがネットワーク１０に同時に接続されないときにも、不可能である。ファイル中継サーバー７００は、コマンドのアタッチメント又は他のセグメントに対する一時的なレポジトリーを与える。
【０１５４】
ファイル中継サーバー７００は、記憶及び転送ロジック２１０から処理をオフロードすることができる。例えば、ソースコンテンツノード、装置ゲートウェイ又はプロトコルアダプタは、入コマンド又はメッセージから切り離し可能なセグメントをカットすることができ、例えば、ｅメールから大きなファイルをカットすることができる。ファイル中継サーバー７００に記憶されたセグメントに対する参照を、入コマンドの除去されたセグメントに代わって配置することができる。コンテンツルーター２００及び接続されたコンテンツノード３００は、ソースコンテンツノード３００上に存在するファイルに対する参照と同様に、ファイル中継サーバー７００上に存在するファイルに対する参照を処理することができる。それにより得られる縮約された入コマンドは、次いで、記憶及び転送ロジック２１０へ送信され、そして大きなセグメントの参照に置き換えるか又は除去することにより著しく小さくすることができる。その後のある時間に、縮約された入コマンドに対応する出コマンドが記憶及び転送ロジック２１０から通過される。プロトコルアダプタ、装置ゲートウェイ又は行先コンテンツノードは、参照を検出し、そしてその参照を、ファイル中継サーバー７００から検索されたセグメントに置き換える。このようにして、コマンドメモリ２２０は、大きなファイルを保持するタスクから逃れられる。
【０１５５】
第１のシナリオでは、スタンドアローンのファイル中継サーバー７００が使用される。最初に、アタッチメントを含む新たなｅメールが、ユーザの法人ｅメールアカウントによりインターネットを経て受信される。ユーザアカウントは、変更、即ちコンテンツルーター２００への新たなｅメールの到着を通信する。記憶及び転送ロジック２１０は、ｅメールを含む入コマンドを受け取るが、コンテンツノード３００は、ｅメールのアタッチメントを、法人サーバーにおけるアタッチメントの位置を識別するメタデータリンクに置き換えている。ｅメールアカウントがファイアウオールの後方にある場合には、他の接続されたコンテンツノードがアタッチメントへのメタデータリンクにアクセスすることができない。この場合に、記憶及び転送ロジック２１０は、メタデータリンクをプロトコルインターフェイスロジック２６０へ転送し、そしてこのメタデータリンクに基づいてアタッチメントをフェッチするようにプロトコルインターフェイスロジック２６０に命令することができる。プロトコルインターフェイスロジック２６０は、フェッチされたアタッチメントをファイル中継サーバー７００に向ける。入コマンドに応答して出コマンドを発生するときには、記憶及び転送ロジック２１０は、法人サーバーをアタッチメントのソースとして識別するメタデータリンクを、ファイル中継サーバー７００にアタッチメントを配置するリンクに置き換える。出コマンドを受信するコンテンツノードは、アクセス不能なサーバーではなく、ファイル中継サーバー７００に対して参照される。
【０１５６】
第２のシナリオでは、パブリックｅメールサーバーがファイル中継サーバー７００として使用される。上述したように、アタッチメントを含む新たなｅメールは、ユーザの法人ｅメールアカウントによりインターネットを経て受け取られる。ユーザアカウントは、新たなｅメールの到着を、アタッチメントそれ自体ではなく、アタッチメントに対する参照と共に、記憶及び転送ロジック２１０に通信する。記憶及び転送ロジック２１０は、この参照に基づいてアタッチメントをフェッチするようプロトコルインターフェイスロジック２６０に命令する。このシナリオでは、プロトコルインターフェイスロジック２６０は、パブリックｅメールサーバーを行先とするコマンドにアタッチメントを向ける。次いで、記憶及び転送ロジック２１０は、法人ｅメールサーバーではなくパブリックｅメールサーバーにユーザを向けるメタデータリンクと共に、他の接続されたコンテンツノードの各々へコマンドを発生する。このようにして、コンテンツノードは、そのコンテンツノードにアクセスできないｅメールサーバーで発信されたアタッチメントにアクセスすることができる。
【０１５７】
別のシナリオでは、第１コンテンツノードは、埋め込まれたアタッチメントを含む入コマンドをコンテンツルーター２００へ送信する。ゲートウェイ２６４又は２６６は、コマンドからアタッチメントを除去し、そしてアタッチメントをファイル中継サーバー７００にセーブする。ゲートウェイは、全てのアタッチメントを除去してもよいし、或いは特定のアタッチメントタイプを除去してもよい。ゲートウェイは、コンテンツノード、コンテンツノードのタイプ、及び／又はユーザの接続データセットコンフィギュレーションに対して特有の１つ以上のコンフィギュレーションパラメータに基づき１つ以上のアタッチメントを除去する判断の基礎となる。ゲートウェイは、アタッチメントを参照に置き換え、これは、ゲートウェイ又はコンテンツノードそれ自体がファイル中継サーバー７００からアタッチメントを検索できるようにする。或いは又、プロトコルアダプタ２６８又は記憶及び転送ロジック２１０は、コマンドにおいてアタッチメントと参照をスワップし、アタッチメントをファイル中継サーバー７００に記憶し及び／又はアタッチメントをファイル中継サーバー７００から検索してもよい。
【０１５８】
ある実施形態では、コンテンツノード３１０又は３２０がファイル中継サーバー７００にインターフェイスする。例えば、ユーザアカウント３２０は、ｅメールをそれにアタッチされたファイルと共にインターネットから受け取ると、そのｅメールを、ファイルを含む新たなｅメールを追加するためのコマンドとしてコンテンツルーター２００へ転送する。或いは又、ユーザアカウント３２０は、ファイルを切り離し、次いで、ファイル中継サーバー７００へ転送してもよい。次いで、コンテンツノード３２０は、コマンドを発生し、そしてアタッチメントをファイル中継サーバー７００上のファイルに対する参照に置き換えたｅメールで送信する。行先コンテンツノード、例えば、ユーザ装置３１０が、参照を伴う出コマンドを受け取ると、コンテンツノード３１０は、ファイル中継サーバー７００からファイルを自動的に検索し、そして参照をその検索されたファイルに置き換えて、オリジナルのｅメールを復帰させることができる。或いは又、コンテンツノード３１０は、ユーザがファイル中継サーバー７００に対する参照をたどることによりファイルを手動でフェッチできるようにしてもよい。
【０１５９】
ある実施形態では、ゲートウェイ２６４、２６６がファイル中継サーバー７００にインターフェイスする。例えば、ゲートウェイ２６４、２６６が、アタッチされたファイルを含む新たなｅメールを追加するためにソースコンテンツノード３１０又は３２０から入コマンドを受け取った場合に、その入コマンドを受け取るゲートウェイ２６４、２６６は、そのファイルをファイル中継サーバー７００へ転送し、次いで、コマンドにおけるファイルを、ファイル中継サーバー７００上のファイルに対する参照に置き換える。その後のある時点で、その参照を含む出コマンドが行先コンテンツノードに向けて送信されるとき、コンテンツルーター２００からコマンドを受け取るサーバー２６４、２６６は、参照を、ファイル中継サーバー７００から抽出されたファイルに置き換えることにより、ｅメールを回復させる。
【０１６０】
ある実施形態では、プロトコルアダプタ２６８がファイル中継サーバー７００にインターフェイスする（図示せず）。例えば、プロトコルアダプタ２６８は、ファイルを含む新たなｅメールを追加するためにソースコンテンツノード３１０、３２０から入コマンドを受け取ると、そのファイルをファイル中継サーバー７００へ転送する。次いで、プロトコルアダプタ２６８は、アタッチされたファイルを、ファイル中継サーバー７００上のファイルに対する参照に置き換える。行先コンテンツノード３１０、３２０が、参照を含む出コマンドを要求すると、プロトコルアダプタ２６８は、その参照を、ファイル中継サーバー７００から抽出されたファイルに置き換える。
【０１６１】
ある実施形態では、記憶及び転送ロジック２１０がファイル中継サーバー７００にインターフェイスする（図示せず）。例えば、記憶及び転送ロジック２１０は、ファイルを含む新たなｅメールを追加するためにソースコンテンツノード３１０、３２０から入コマンドを受け取ると、そのファイルをファイル中継サーバー７００へ転送する。次いで、記憶及び転送ロジック２１０は、コマンドにおけるファイルを、ファイル中継サーバー７００上のファイルに対する参照に置き換える。記憶及び転送ロジック２１０は、参照を含む出コマンドを検索すると、その参照を、ファイル中継サーバー７００から抽出したファイルに置き換える。
【０１６２】
図１３及び図１４Ａないし１４Ｉは、本発明の実施形態による種々のコマンドの構造を示す。
【０１６３】
図１３は、本発明の実施形態による一次キー及びデータベース識別子に関連したコマンドを示す。コマンドという語は、通知及びメッセージの受信者、例えば、コンテンツノードによって適宜に操作される変更についての通知及びメッセージ（必ずしも「コマンド」フォーマットである必要はない）を含む。ある実施形態では、コマンドは、処理ロジック２５０により各入コマンドに指定された単調に増加する値である一次キーを含む。一次キーは、ユーザに関連した全てのコマンドについて独特である。又、一次キーは、全てのユーザに関連した全てのコマンドについても独特である。ある実施形態では、タイムスタンプが一次キーとして使用される。
【０１６４】
コマンドは、データベース識別子にも関連している。データベース識別子は、多数のユーザ及び多数のコンテンツノードからのコマンドを含むデータベースへのインデックス又はキーとして使用される。データベース識別子は、データベースに追加される各コンテンツノード及びコンテンツタイプについてデータベースにより指定される逐次増加する数字である。それ故、データベース識別子は、特定のユーザ、特定のコンテンツノード又はコンテンツノードタイプ、及び特定のコンテンツタイプを間接的又は直接的に特別に識別することができる。コンテンツノード識別子は、特定のユーザ装置又はユーザアカウントに対する識別子を含む。コンテンツタイプは、連絡先アイテム、事象アイテム、実行(ToDo)アイテム、ｅメールアイテム、又はライブラリーアイテムのうちの１つの指示を含む。ライブラリーアイテムは、ConnectedPhotoメタデータ、ConnectedDocumentsメタデータ又はConnectedMusicメタデータのうちの１つを指示するのに使用される。
【０１６５】
又、コマンドは、コマンドが、入待ち行列２３１にあると考えるか、入イン・トランシット待ち行列２３２にあると考えるか、出待ち行列２４１にあると考えるか、又は出イン・トランシット待ち行列２４２にあると考えるかを指示する待ち行列識別子にも関連している。コマンドは、一次キー、データベース識別子、及び待ち行列識別子を含む関連属性と共に、ＳＱＬデータベースのようなデータベースへのエントリーとして記憶される。
【０１６６】
コマンドは、コマンドタイプ及びペイロードを含む。ペイロードは、コンテンツそれ自体を含む。或いは又、ペイロードは、メタデータを含んでもよいし、又はコンテンツ及びメタデータの両方を含んでもよい。メタデータは、コンテンツの質、条件及び他の特性に関する情報を与える。又、メタデータは、コンテンツの記述、コンテンツに対する変更の指示、及び／又はコンテンツのソースに対する参照又はリンクのような情報を含む。
【０１６７】
コマンドタイプは、行なわれるアクション又は要求されたアクションを指示する。ある実施形態では、コマンドタイプは、追加、更新、削除、ゲット(get)、ゲット結果、問合せ、問合せ結果、問合せ終了、及びクリアを含むアクションのリストのうちの１つを指示する。入コマンドについては、コマンドタイプは、生じた変更を指示する。例えば、追加コマンドタイプと共に受信されるコマンドは、コンテンツノードにコンテンツが追加されたことを意味する。出コマンドについては、コマンドタイプは、コンテンツノードを、変更が行なわれたコンテンツノードと同期状態に保持するために、コンテンツルーターがコンテンツノード上で行なうことを要求している変更を指示する。例えば、追加というコマンドタイプは、ペイロードで指定されたコンテンツをコンテンツノードに追加しなければならないことを意味する。
【０１６８】
追加というコマンドタイプを有するコマンドは、コンテンツレコードをコンテンツノードに追加するというアクションを指示する。「追加」コマンドタイプに対するペイロードは、コンテンツそれ自体、コンテンツに関するメタデータ、及び／又はコンテンツに対する参照を含む。
【０１６９】
削除というコマンドタイプを有するコマンドは、コンテンツノードからコンテンツレコードを削除するアクションを指示する。「削除」コマンドタイプに対するペイロードは、どのコンテンツ及び／又はコンテンツに関するメタデータを削除すべきか指示するメタデータを含む。
【０１７０】
ゲットというコマンドタイプを有するコマンドは、コンテンツノードからレコードのコンテンツをゲットする要求を指示する。「ゲット」コマンドタイプに対するペイロードは、どのコンテンツ及び／又はコンテンツに関するメタデータをゲットすべきか指示するメタデータを含む。ゲット結果というコマンドタイプを有するコマンドは、「ゲット」コマンドタイプに応答して送信されるコマンドである。「ゲット結果」タイプに対するペイロードは、コンテンツそれ自体、コンテンツに関するメタデータ、及び／又はコンテンツに対する参照を含む。
【０１７１】
問い合わせというコマンドタイプを有するコマンドは、コンテンツノードからのコンテンツのカテゴリーの要求を指示する。「問合せ」コマンドタイプに対するペイロードは、要求されているコンテンツのカテゴリーを指示する。「問合せ」コマンドタイプは、コンテンツノードにおける全てのコンテンツ、又は特定の特性を有する全てのコンテンツを要求するのに使用される。「問合せ結果」のコマンドタイプを有するコマンドは、「問合せ」コマンドタイプに対する応答を指示する。「問合せ結果」のコマンドタイプに対するペイロードは、要求されたコンテンツ又はコンテンツに関するメタデータを含む。「問合せ結果」のコマンドは、コンテンツノード３００により多数のバッチで送信され、それ故、コンテンツルーター２００は、問合せ結果のフローがいつ終了したかの指示を与えることが必要である。「問合せ」コマンドタイプに対する最終的な応答は、問合せ終了のコマンドタイプを有するコマンドにおいて指示される。「問合せ終了」コマンドタイプに対するペイロードは、特定の特性を有する最終的コンテンツであるか、又は空セット応答を指示するナルである。結果が見つからない場合には、「問合せ」コマンドタイプは、ナル応答を指示する「問合せ終了」コマンドタイプを生じる。単一の結果が見つかった場合には、「問合せ」コマンドタイプは、一致応答を指示する「問合せ終了」コマンドタイプを生じる。２つ以上の結果が見つかった場合は、「問合せ」コマンドタイプは、１つ以上の「問合せ結果」コマンドタイプの後に、最終的な一致を含む「問合せ終了」コマンドタイプが続くものを生じる。
【０１７２】
クリアというコマンドタイプを有するコマンドは、ペイロードにより指示されたコンテンツのカテゴリーを除去するようにコンテンツノードに命令する。リフレッシュのコンテンツタイプを有するコマンドは、送信側コンテンツノードを回復させるようにコンテンツルーター２００に命令する。接続データセットコンフィギュレーションにおけるコンテンツノードの能力及びユーザコンフィギュレーションに基づいて、コンテンツをクリアするためのクリアコマンド、又は全てのデータをインポートするための問合せコマンドのいずれかをコンテンツノード３００に送信することにより回復を開始することができる。いずれの場合にも、コンテンツノード３００は、１つ以上の他のコンテンツノードから合併されたコンテンツ及びメタデータを受け取り、コンテンツノード３００がその接続されたコンテンツノードと同期されるようにする。
【０１７３】
又、コマンドは、コマンドタイプ及びデータタイプに依存するフォーマットを有するデータペイロードも含む。このデータペイロードは、変更されたレコードを含んでもよいし、或いはデータソース又はファイル中継サーバーに位置する変更されたレコードへのリンク又は参照のようなメタデータを含んでもよい。
【０１７４】
図１４Ａは、コンテンツノードに追加されるべき新たなｅメールを示す。データペイロードは、ｅメールを独特に識別するのに使用されるｅメールＩＤと、ヘッダと、メッセージの最初の２キロバイトと、オリジナルメッセージへのリンクとを含む。図１４Ｂは、ｅメールが読まれたことをコンテンツノードに命令するためのコマンドを示す。図１４Ｃは、特定のｅメールを削除するためのコマンドを示す。
【０１７５】
図１４Ｄは、新たなオーディオファイルを追加するためのコマンドを示す。図１４Ｅは、オーディオファイルを削除するためのコマンドを示す。図１４Ｆは、新たなアポイントメントを追加するためのコマンドを示す。図１４Ｇは、新たな連絡先を追加するためのコマンドで、レコードを含むようなコマンドを示す。図１４Ｈは、新たな連絡先を更新するためのコマンドで、レコードも含むようなコマンドを示す。図１４Ｉは、写真映像を追加するためのコマンドを示す。コマンドには写真それ自体は含まれず、オリジナル写真映像に対する参照が含まれる。
【０１７６】
図１５Ａないし１５Ｃは、本発明の実施形態によりユーザ装置３１０と記憶及び転送ロジック２１０との間のシグナリングを示すシーケンス図である。
【０１７７】
図１５Ａは、ユーザ装置３１０が１つ以上のコマンドをコンテンツルーター２００へプッシュするときのシーケンスを示す。ワイヤレス能力をもつ移動ＰＣのようなユーザ装置３１０は、ユーザ装置３１０におけるコンテンツ及びメタデータに対して一連の変更を受ける。ユーザ装置３１０で実行されるアプリケーションは、ある周期中になされる変更を指示するペイロードを周期的に準備するか、又はワイヤレス通信を取り戻したときにコマンドを送信する。ユーザ装置３１０に利用できるプロトコルを使用して、アプリケーションは、コマンドのリストを含むペイロードをプットするためにＲＥＱＵＥＳＴメッセージを準備する。例えば、ユーザは、新たなＳＭＳメッセージＡＡＡを受信する。それ故、アプリケーションは、接続されたコンテンツノードが新たなｅメールＡＡＡを追加することを指示するコマンドを発生する。更に、ユーザは、カレンダーから事象ＢＢＢを削除し、連絡先ＣＣＣを仕事場の電話番号で更新する。ある実施形態では、コマンドのバッチが、共通のコマンドタイプで動作するコマンドのみを含むように制限される。例えば、コマンドのバッチは、ｅメールメッセージを追加、削除又は変更するコマンドしか含まない。
【０１７８】
当業者であれば、ユーザ装置３１０は、種々のプロトコルを使用して装置ゲートウェイ２６４と通信することが明らかであろう。それ故、ここに示すＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥプロトコルは、１つの可能性に過ぎない。本発明の実施形態によれば、各ＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥは、コマンドの原子対であって、両方のコマンドが発生しなければならず、さもなければ、成功とはみなされない。複数のＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ対を要求する他のプロトコルとは異なり、本発明による各ＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ対は、タスクを遂行するように進行する。ワイヤレスネットワークの場合には、コマンドの対の長いシーケンスは、侵入や中断のおそれが高い。それ故、単一のＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ原子対が、最適な信頼性及びスループットを与える。
【０１７９】
ユーザ装置３１０は、ペイロードに含まれたコマンドをプットするためのＲＥＱＵＥＳＴを装置ゲートウェイ２６４へ送信し、このゲートウェイは、ユーザ装置３１０に対するサーバーをモデリングする。サーバーをモデリングする際に、装置ゲートウェイ２６４は、要求に対して作用し、且つ要求に応答する。装置ゲートウェイ２６４は、装置プロトコルから、内部で使用されるプロトコルへと変換を行い、次いで、ペイロードで指示されたコマンドをプットすることを指示するＲＥＱＵＥＳＴをプロトコルアダプタ２６８へ送信する。或いは又、ユーザ装置３１０が内部プロトコルを使用して通信することができる場合には、装置ゲートウェイ２６４をバイパスしてもよい。
【０１８０】
プロトコルアダプタ２６８は、ＲＥＱＵＥＳＴのペイロードをコマンド（例えば、追加、削除及び更新）のシーケンスへと変換し、そしてそれらコマンドを、処理のために記憶及び転送ロジック２１０へ送信（プット）する。記憶及び転送ロジック２１０は、単調に増加する一次キー（例えば、００１００２１、００１００２２及び００１００２３）を、内部使用のために各コマンドに指定する。更に、各コマンドに対して、記憶及び転送ロジック２１０は、ユーザ、特定のコンテンツノード及びコンテンツタイプを独特に識別するデータベースＩＤを決定することができる。又、記憶及び転送ロジック２１０は、コマンドが、実行を保留しているか又は成功な実行の確認を保留している入コマンド又は出コマンドであることを指示するように、各コマンドの待ち行列ＩＤをセットしてもよい。記憶及び転送ロジック２１０は、同じデータベースＩＤに関連した各コマンドに対して衝突チェックを遂行する。衝突が検出されない場合には、コマンドは、指定の属性と共にデータベースに記憶される。衝突が検出された場合には、記憶及び転送ロジック２１０は、データベースに存在するコマンドを除去し、衝突する入コマンドを破棄し、及び／又は入コマンド及び既存のコマンドを集積化することにより、衝突を回避する。
【０１８１】
首尾良い処理及び入待ち行列へのエントリーに応答して、記憶及び転送ロジック２１０は、成功の指示をプロトコルアダプタ２６８へ返送する。次いで、プロトコルアダプタ２６８は、装置ゲートウェイ２６４からのＲＥＱＵＥＳＴに対して、そのＲＥＱＵＥＳＴで受け取られた全てのコマンドの首尾良い転送を指示するＲＥＳＰＯＮＳＥで応答する。同様に、ユーザ装置３１０からのＲＥＱＵＥＳＴの首尾良い処理は、図示されたように成功を指示するＲＥＳＰＯＮＳＥで確認される。成功を指示するＲＥＳＰＯＮＳＥを受け取るユーザ装置３１０は、先に送られたコマンドのペイロードを破棄する。ユーザ装置３１０は、この確認を受け取らないと、次のＲＥＱＵＥＳＴにおいてコマンドのペイロードを再送することができる。
【０１８２】
本発明の実施形態によれば、ユーザ装置３１０は、図示されたように、単一のＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換で、コンテンツルーター２００とのトランザクションを完了する。単一のＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換は、トランザクションを完了するのにプロトコルが複数のＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換を必要とする場合に生じるセッション中断エラーについての変更を減少する。多対プロトコルとは異なり、各要求・応答対が進行するように構成される。多対プロトコルでは、途中で失敗が生じた場合にも、全ての進行が失われ、全セッションを始めから再スタートしなければならない。それ故、本発明の実施形態によれば、各々の首尾良い単一のＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換は、コンテンツノードを同期するタスクの完了に向けて進行し、もし失敗があっても、単一のＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換にしか影響しない。
【０１８３】
図１５Ｂは、通知が受け取られた後にユーザ装置３１０がコンテンツルーター２００からコマンドを要求（プル）するときのシーケンスを示す。記憶及び転送ロジック２１０は、新たな出コマンドを発生して出待ち行列２４１に記憶すると、ユーザ装置３１０へ通知を送るように装置ゲートウェイ２６４に命令する通知信号を発生する。通知は、コンテンツタイプの指示を含んでもよいし、含まなくてもよい。装置ゲートウェイ２６４は、コンテンツノードを行先とする一連の通知を収集し、そしてその収集した通知を、例えば、もし利用できれば、ＨＴＴＰパケット、又はＳＭＳメッセージを使用して、ユーザ装置３１０へ周期的に送信する。無料チャンネル又はコストを無視できるチャンネルを伴うネットワーク１０にユーザ装置３１０が接続された場合、例えば、それがワイヤードインターネット接続にドッキングされた場合には、ほぼ遅延なく通知を送信することができる。ユーザ装置３１０が、ＧＰＲＳ接続のような低廉なチャンネルに接続される場合には、通知を頻繁な間隔で収集して送信することができる。ユーザ装置３１０が、ＳＭＳ接続のような高価なチャンネルに接続された場合には、通知は、時々収集されて送信される。ある実施形態では、コンテンツルーティングシステムは、現在の接続タイプを指示するように更新されたフラグを保持し、これにより、コンテンツノードを更新する頻度を決定するときにコンテンツルーティングシステムが使用する変数を与える。
【０１８４】
通知を受け取った後に、ユーザ装置３１０は、単一のＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥセッションを開始して、保留中コマンドのコンテンツタイプをゲットすることができる。ユーザ装置３１０は、保留中コマンドのコンテンツタイプをゲットするためのＲＥＱＵＥＳＴを装置ゲートウェイ２６４に送信する。装置ゲートウェイ２６４は、このＲＥＱＵＥＳＴに対して、保留中コマンドのコンテンツタイプの指示を含むＲＥＳＰＯＮＳＥで応答する。
【０１８５】
コンテンツタイプを受け取った後に、ユーザ装置３１０は、単一のＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥセッションを開始して、単一のコマンド又は保留中コマンドのバッチをゲットすることができる。ユーザ装置３１０は、保留中コマンドをゲットするためのＲＥＱＵＥＳＴを装置ゲートウェイ２６４へ送信する。装置ゲートウェイ２６４は、ユーザ装置３１０により使用される外部プロトコルから共通の内部プロトコルへＲＥＱＵＥＳＴを変換する。装置ゲートウェイ２６４は、共通のプロトコルにおけるＲＥＱＵＥＳＴをプロトコルアダプタ２６８へ送信する。プロトコルアダプタ２６８は、ＲＥＱＵＥＳＴを、出待ち行列２４１からコマンドをゲットするためのコールに変換する。記憶及び転送ロジック２１０は、出待ち行列２４１からのコマンドのバッチを含むペイロードを返送する。或いは又、記憶及び転送ロジック２１０は、一度に１つのコマンドを返送し、プロトコルアダプタ２６８は、それを結合して、コマンドのバッチを形成する。プロトコルアダプタ２６８は、ペイロードにおけるコマンドの数を指示するためのインデックスを関連付けることができる。プロトコルアダプタ２６８は、装置ゲートウェイ２６４から受け取ったＲＥＱＵＥＳＴに、ユーザ装置３１０により実行されるべきコマンドのペイロードを含むＲＥＳＰＯＮＳＥで応答する。或いは又、プロトコルアダプタ２６８は、各応答において一度に１つのコマンドで応答する。装置ゲートウェイ２６４は、ユーザ装置３１０から最初に受け取られたＲＥＱＵＥＳＴに対するＲＥＳＰＯＮＳＥとしてＲＥＳＰＯＮＳＥを転送する。
【０１８６】
最初のＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換のある時間後に、ユーザ装置３１０は、コマンドの首尾良い処理を確認するために第２のＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換を開始する。装置ゲートウェイ２６４は、この確認をプロトコルアダプタ２６８へ転送し、このアダプタは、記憶及び転送ロジック２１０におけるイン・トランシット待ち行列２４２からコマンドを除去するためのコールを発信する。記憶及び転送ロジック２１０は、成功を返送する。プロトコルアダプタ２６８は、そのＲＥＱＵＥＳＴに対して、成功を確認するＲＥＳＰＯＮＳＥで応答する。次いで、装置ゲートウェイ２６４は、ユーザ装置３１０からのＲＥＱＵＥＳＴに対して、成功を確認するＲＥＳＰＯＮＳＥで応答する。
【０１８７】
図１５Ｃは、コンテンツルーター２００がユーザ装置３１０への通知内にコマンドをプッシュするときの事象のシーケンスを示す。ある実施形態では、記憶及び転送ロジック２１０は、低いプライオリティ及び／又は比較的小さなペイロードを通知内に含む。例えば、ｅメールが読み取られたことは、プライオリティが低く且つバイトサイズの小さい事象であると考えられる。このようにプライオリティの低い事象は、ＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換に通常要求される確認を受け取る必要なく、通知レイヤと共に通信される。例えば、記憶及び転送ロジック２１０は、コンテンツＧＧＧが変更されたことを示すフラグを含むペイロードを送信する。コマンドＧＧＧは、ｅメールが非読み取り状態から読み取り状態へ変更になったことを指示するために使用されるｅメールフラグを表わす。又、ペイロードは、特定のｅメールを識別するために使用されるインジケータも含む。通知信号が受け取られると、装置ゲートウェイ２６４と、プロトコルアダプタ２６８と、記憶及び転送ロジック２１０との間の通信は、図１５Ｂを参照して上述したように動作する。最終的に、装置ゲートウェイ２６４は、コマンドを含む通知をユーザ装置３１０へ送信する。
【０１８８】
図１６Ａないし１６Ｄは、本発明の実施形態によりユーザアカウント３２０と記憶及び転送ロジック２１０との間のシグナリングを示すシーケンス図である。
【０１８９】
図１６Ａは、コンテンツルーター２００がユーザアカウント３２０からコマンドを受信（ゲット）するときのシーケンスを示す。サーバーゲートウェイ２６６は、単一のＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換でユーザアカウント３２０を周期的にポーリングする。変更が存在しない場合には、ユーザアカウント３２０は、それを指示するＲＥＳＰＯＮＳＥを送信する。変更が存在する場合には、ユーザアカウント３２０は、変更を指示するＲＥＳＰＯＮＳＥを送信する（図示せず）。或いは、あるユーザアカウント３２０は、変更の存在を指示するためにＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換を開始してもよい。サーバーゲートウェイ２６６は、ＲＥＱＵＥＳＴが受信されたことを、確認を含むＲＥＳＰＯＮＳＥで確認する。いずれにせよ、サーバーゲートウェイ２６６は、１つ以上の変更が存在することが分ると、変更を要求するＲＥＱＵＥＳＴを送信する。ユーザアカウントは、コマンドのリストを含むペイロードを伴うＲＥＳＰＯＮＳＥで応答する。
【０１９０】
サーバーゲートウェイ２６６は、サーバープロトコルから、共通の内部使用プロトコルへの変換を行い、次いで、ペイロードに示されたコマンドをプットすることを指示するＲＥＱＵＥＳＴをプロトコルアダプタ２６８へ送信する。或いは又、ユーザアカウント３２０が共通のプロトコルを使用して通信を行なえる場合には、サーバーゲートウェイ２６６をバイパスしてもよい。
【０１９１】
プロトコルアダプタ２６８は、ＲＥＱＵＥＳＴのペイロードをコマンド（例えば、追加、削除及び更新）のシーケンスへと変換し、そしてそれらコマンドを記憶及び転送ロジック２１０に与える。記憶及び転送ロジック２１０は、各コマンドを処理する。記憶及び転送ロジック２１０は、単調に増加する一次キー（例えば、００３００２１、００３００２２及び００３００２３）を各コマンドに指定する。更に、各コマンドに対して、記憶及び転送ロジック２１０は、ユーザ、特定のコンテンツノード及びコンテンツタイプを独特に識別するデータベースＩＤを決定することができる。又、記憶及び転送ロジック２１０は、コマンドが入待ち行列状態にあることを指示するように、各コマンドの待ち行列ＩＤをセットしてもよい。記憶及び転送ロジック２１０は、同じデータベースＩＤに関連した各コマンドに対して衝突チェックを遂行する。衝突が検出されない場合には、コマンドは、指定の属性と共にデータベースに記憶される。衝突が検出された場合には、記憶及び転送ロジック２１０は、データベースに存在するコマンドを除去し、衝突する入コマンドを破棄し、及び／又は入コマンド及び既存のコマンドを集積化することにより、衝突を回避する。
【０１９２】
首尾良い処理及び入待ち行列へのエントリーに応答して、記憶及び転送ロジック２１０は、成功の指示をプロトコルアダプタ２６８へ返送する。次いで、プロトコルアダプタ２６８は、サーバーゲートウェイ２６６からのＲＥＱＵＥＳＴに対して、成功のＲＥＳＰＯＮＳＥで応答する。ＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換が失敗した場合には、以前のＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換を繰り返す必要がない。ある実施形態では、サーバーゲートウェイ２６６は、ＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ対（図示せず）をユーザアカウント３２０とで交換し、以前に通信したコマンドを破棄することをユーザアカウント３２０に通知する。
【０１９３】
図１６Ｂは、コンテンツルーター２００がユーザアカウント３２０にコマンドをプッシュ（プット）するときのシーケンスを示す。記憶及び転送ロジック２１０は、ユーザアカウント３２０に対してその出待ち行列にコマンドを有するときに、サーバーゲートウェイ２６６へ通知信号を送信する。ある実施形態では、通知信号は、コンテンツタイプを含む。サーバーゲートウェイ２６６は、通知を捕捉し、そして保留中の出コマンドをゲットするためのＲＥＱＵＥＳＴを送信するときにクライアントをモデリングする。クライアントをモデリングするときに、サーバーゲートウェイ２６６は、出コマンドに対してユーザアカウントに代わって要求を開始する。プロトコルアダプタ２６８は、記憶及び転送ロジック２１０へのゲットコマンドコールを遂行し、このロジックは、コマンドのペイロードを返送する。例えば、コマンドのペイロードは、新たなｅメールＤＤの追加、連絡先ＥＥＥの削除、マルチメディアコンテンツのタイトルＦＦＦの変更を含む。プロトコルアダプタ２６８は、各コマンドにインデックスを指定し、そして以前に受け取ったＲＥＱＵＥＳＴに対するＲＥＳＰＯＮＳＥにコマンドを含ませる。次いで、サーバーゲートウェイ２６６は、クライアントをモデリングし、ユーザアカウント３２０にコマンドをプットするためのＲＥＱＵＥＳＴを開始する。ユーザアカウント３２０は、ＲＥＱＵＥＳＴ及びコマンドの受信をＲＥＳＰＯＮＳＥで確認する。次いで、サーバーゲートウェイ２６６は、ユーザアカウント３２０によるコマンドの受信を確認するためのＲＥＱＵＥＳＴを開始する。プロトコルアダプタは、その確認を、記憶及び転送ロジック２１０への除去コマンドコールへと変換し、イン・トランシット待ち行列からコマンドを除去する。記憶及び転送ロジック２１０は、成功を返送し、そしてプロトコルアダプタ２６８は、サーバーゲートウェイ２６６から受け取った応答をＲＥＳＰＯＮＳＥで確認する。
【０１９４】
図１６Ｃは、サーバーゲートウェイ２６６が通知メッセージのコマンドをユーザアカウント３２０へプッシュするときの事象シーケンスを示す。ある実施形態では、記憶及び転送ロジック２１０は、低いプライオリティ及び／又は比較的小さなペイロードを通知と共に含む。例えば、ｅメールが読み取られたことは、プライオリティが低く且つバイトサイズの小さい事象であると考えられる。このようにプライオリティの低い事象は、ＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換に通常要求される確認を受け取る必要なく、通知レイヤと共に通信される。ある実施形態では、通知信号は、コンテンツタイプを含む。初期の通知信号の受信に応答して、サーバーゲートウェイ２６６は、保留中の出コマンドをゲットするためのＲＥＱＵＥＳＴを送信するときにクライアントをモデリングする。それに応答して、プロトコルアダプタ２６８は、記憶及び転送ロジック２１０へのゲットコマンドコールを遂行し、このロジックは、コマンドを返送する。例えば、コマンドＧＧＧは、ｅメールの読み取り状態を変更するためのインストラクションを含む。プロトコルアダプタ２６８は、コマンドにインデックスを指定し、そして以前に受け取ったＲＥＱＵＥＳＴに対するＲＥＳＰＯＮＳＥにコマンドを含ませる。次いで、サーバーゲートウェイ２６６は、ユーザアカウント３２０への通知信号にコマンドをプッシュする。通知信号を送信する前又は後に、サーバーゲートウェイ２６６は、ユーザアカウント３２０によるコマンドの受信に確認するためのＲＥＱＵＥＳＴを開始する。プロトコルアダプタは、その確認を、記憶及び転送ロジック２１０への除去コマンドコールへと変換し、イン・トランシット待ち行列からコマンドを除去する。記憶及び転送ロジック２１０は、成功を返送し、そしてプロトコルアダプタ２６８は、サーバーゲートウェイ２６６から受け取った応答をＲＥＳＰＯＮＳＥで確認する。
【０１９５】
図１６Ｄは、サーバーゲートウェイ２６６が、ユーザアカウント３２０を有するアカウントサーバーと共にファイアウオールの後方に配置された本発明の実施形態を示す。サーバーゲートウェイ２６６がファイアウオールの後方にある場合には、プロトコルアダプタ２６８は、ＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換を開始することができず、そしてプロトコルアダプタ２６８からの通知が阻止される。このケースでは、サーバーゲートウェイ２６６は、各ＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換を開始する。
【０１９６】
コンテンツルーター２００がその出待ち行列２４１にコマンドを有することを決定するために通知を受け取るのではなく、サーバーゲートウェイ２６６は、ＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換を開始することにより通知情報を要求する。サーバーゲートウェイ２６６は、出コマンドのポーリングが要求されることを示すＲＥＱＵＥＳＴをプロトコルアダプタ２６８へ送信することにより、出待ち行列２４１においてコマンドを周期的にポーリングする。これに応答して、プロトコルアダプタ２６８は、記憶及び転送ロジック２１０をコールし、ユーザアカウント３２０に対して出コマンドをチェックする。記憶及び転送ロジック２１０は、出待ち行列２４１にコマンドが存在するかどうかの指示を返送する。プロトコルアダプタ２６８は、以前のＲＥＱＵＥＳＴに対して、出待ち行列２４１にコマンドが存在するかどうかの返送された指示を含むＲＥＳＰＯＮＳＥで応答する。出待ち行列２４１にコマンドが存在する場合には、サーバーゲートウェイ２６６は、図１６Ｂに示すように（ＲＥＱＵＥＳＴ−ＲＥＳＰＯＮＳＥ交換を伴う）、又は図１６Ｃに示すように（通知信号内で）、出コマンドをゲットするためのＲＥＱＵＥＳＴを開始する。更に、サーバーゲートウェイ２６６は、ユーザアカウント３２０がサーバーゲートウェイ２６６にコマンドを通信する場合には、変更に対してユーザアカウント３２０をポーリングし、又、サーバーゲートウェイ２６６は、図１５Ａに示すように、入待ち行列２３１へコマンドをプットするＲＥＱＵＥＳＴを開始する。
【０１９７】
特定の実施形態及び添付図面について本発明を説明したが、当業者であれば、本発明がこれらの実施形態や図面に限定されないことが明らかであろう。
【０１９８】
以上、明瞭化のため、異なる機能的ユニットを参照して本発明の実施形態について説明されたことが明らかであろう。しかしながら、本発明から逸脱せずに、異なる機能的ユニット間に機能を適宜に分散させられることも明らかであろう。従って、特定の機能的ユニットを参照することは、厳密な論理的又は物理的構造又は編成を表わすのではなく、前記機能を与える適当な手段を参照するに過ぎないことが明らかであろう。
【０１９９】
本発明は、ハードウェア、ソフトウェア、ファームウェア又はその組み合せを含む任意の適当な形態で実施することができる。本発明の異なる態様は、１つ以上のデータプロセッサ及び／又はデジタル信号プロセッサ上で実行されるコンピュータソフトウェア又はファームウェアとして少なくとも部分的に実施されてもよい。本発明は、マシン読み取り可能なメディアのようなコンピュータプログラム製品（例えば、メモリカード、ＲＯＭ、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、フラッシュメモリ、磁気又は光学ディスケット、ＣＤ−ＲＯＭ、ＤＶＤ、等）において実施されてもよい。本発明の実施形態のエレメント及びコンポーネントは、任意の適当な仕方で物理的に、機能的に及び論理的に実施されてもよい。実際に、機能は、単一ユニットで実施されてもよいし、複数のユニットで実施されてもよいし、又は他の機能的ユニットの一部分として実施されてもよい。従って、本発明は、単一のユニットで実施されてもよく、又は異なるユニットとプロセッサとの間に物理的及び機能的に分散されてもよい。
【０２００】
本発明は、幾つかの実施形態について説明したが、ここに述べた特定の形態に限定されるものではない。むしろ、本発明の範囲は、特許請求の範囲のみによって限定される。更に、特定の実施形態に関連して特徴を述べたが、当業者であれば、ここに述べた実施形態の種々の特徴を本発明により結合できることが明らかであろう。更に、実施形態に関連して述べた本発明の態様は、発明として独立していてもよい。
【０２０１】
更に、本発明の精神及び範囲から逸脱せずに種々の修正や変更が当業者明らかであろう。本発明は、前記の詳細な説明により限定されず、特許請求の範囲により規定される。
【図面の簡単な説明】
【０２０２】
【図１Ａ】情報配布及び同期システムを示す図である。
【図１Ｂ】情報配布及び同期システムを示す図である。
【図２】本発明の実施形態によりネットワークを経て複数のコンテンツノードに結合されたコンテンツルーターを示す図である。
【図３】本発明の実施形態により１つのコンテンツノードにおける変更を、コンテンツルーターを経て、コンテンツノードの選択されたセットへ伝播する経路を示す図である。
【図４】本発明の実施形態によるユーザ接続ｅメールアカウントを示し、例示的スクリーンショットを含む図である。
【図５】本発明の実施形態による記憶及び転送ロジックへの接続、及びそれにより遂行される処理を示す図である。
【図６】本発明の実施形態による記憶及び転送ロジックへの接続、及びそれにより遂行される処理を示す図である。
【図７Ａ】本発明の実施形態によりレポジトリーに結合された記憶及び転送ロジックを示す図である。
【図７Ｂ】本発明の実施形態によりレポジトリーに結合された記憶及び転送ロジックを示す図である。
【図８Ａ】本発明の実施形態により例示的ｅメールの分離可能なセグメントを剥離し、次いで、その剥離されたセグメントをｅメールのソースから要求するプロセスを示す図である。
【図８Ｂ】本発明の実施形態により例示的ｅメールの分離可能なセグメントを剥離し、次いで、その剥離されたセグメントをｅメールのソースから要求するプロセスを示す図である。
【図９Ａ】本発明の実施形態による記憶及び転送ロジックの構造、及び処理ロジックとコンテンツノードとの間のデータ経路を示す図である。
【図９Ｂ】本発明の実施形態による記憶及び転送ロジックの構造、及び処理ロジックとコンテンツノードとの間のデータ経路を示す図である。
【図９Ｃ】本発明の実施形態による記憶及び転送ロジックの構造、及び処理ロジックとコンテンツノードとの間のデータ経路を示す図である。
【図１０Ａ】本発明の実施形態によりコンテンツノード及びコンテンツルーターの観点からのＰＵＴ−ＧＥＴ−ＡＣＫ手順を示す図である。
【図１０Ｂ】本発明の実施形態によりコンテンツノード及びコンテンツルーターの観点からのＰＵＴ−ＧＥＴ−ＡＣＫ手順を示す図である。
【図１０Ｃ】本発明の実施形態によりコンテンツノード及びコンテンツルーターの観点からのＰＵＴ−ＧＥＴ−ＡＣＫ手順を示す図である。
【図１０Ｄ】本発明の実施形態によりコンテンツノード及びコンテンツルーターの観点からのＰＵＴ−ＧＥＴ−ＡＣＫ手順を示す図である。
【図１１】本発明の実施形態による接続データセットコンフィギュレーションの構造を示す図である。
【図１２Ａ】本発明の実施形態によりコンテンツルーターをユーザ装置及びユーザアカウントにインターフェイスするのに使用できる外部及び内部ロジックを示す図である。
【図１２Ｂ】本発明の実施形態によりコンテンツルーターをユーザ装置及びユーザアカウントにインターフェイスするのに使用できる外部及び内部ロジックを示す図である。
【図１２Ｃ】本発明の実施形態によりコンテンツルーターをユーザ装置及びユーザアカウントにインターフェイスするのに使用できる外部及び内部ロジックを示す図である。
【図１２Ｄ】本発明の実施形態によりコンテンツルーターをユーザ装置及びユーザアカウントにインターフェイスするのに使用できる外部及び内部ロジックを示す図である。
【図１２Ｅ】本発明の実施形態によりコンテンツルーターをユーザ装置及びユーザアカウントにインターフェイスするのに使用できる外部及び内部ロジックを示す図である。
【図１３】本発明の実施形態による種々のコマンドの構造を示す図である。
【図１４Ａ】本発明の実施形態による種々のコマンドの構造を示す図である。
【図１４Ｂ】本発明の実施形態による種々のコマンドの構造を示す図である。
【図１４Ｃ】本発明の実施形態による種々のコマンドの構造を示す図である。
【図１４Ｄ】本発明の実施形態による種々のコマンドの構造を示す図である。
【図１４Ｅ】本発明の実施形態による種々のコマンドの構造を示す図である。
【図１４Ｆ】本発明の実施形態による種々のコマンドの構造を示す図である。
【図１４Ｇ】本発明の実施形態による種々のコマンドの構造を示す図である。
【図１４Ｈ】本発明の実施形態による種々のコマンドの構造を示す図である。
【図１４Ｉ】本発明の実施形態による種々のコマンドの構造を示す図である。
【図１５Ａ】本発明の実施形態によりユーザ装置と記憶及び転送ロジックとの間のシグナリングを示すシーケンス図である。
【図１５Ｂ】本発明の実施形態によりユーザ装置と記憶及び転送ロジックとの間のシグナリングを示すシーケンス図である。
【図１５Ｃ】本発明の実施形態によりユーザ装置と記憶及び転送ロジックとの間のシグナリングを示すシーケンス図である。
【図１６Ａ】本発明の実施形態によりユーザアカウントと記憶及び転送ロジックとの間のシグナリングを示すシーケンス図である。
【図１６Ｂ】本発明の実施形態によりユーザアカウントと記憶及び転送ロジックとの間のシグナリングを示すシーケンス図である。
【図１６Ｃ】本発明の実施形態によりユーザアカウントと記憶及び転送ロジックとの間のシグナリングを示すシーケンス図である。
【図１６Ｄ】本発明の実施形態によりユーザアカウントと記憶及び転送ロジックとの間のシグナリングを示すシーケンス図である。
【図１Ａ】
2009510811.tif 000002
【図１Ｂ】
2009510811.tif 000003
【図２】
2009510811.tif 000004
【図３】
2009510811.tif 000005
【図４】
2009510811.tif 000006
【図５】
2009510811.tif 000007
【図６】
2009510811.tif 000008
【図７Ａ】
2009510811.tif 000009
【図７Ｂ】
2009510811.tif 000010
【図８Ａ】
2009510811.tif 000011
【図８Ｂ】
2009510811.tif 000012
【図９Ａ】
2009510811.tif 000013
【図９Ｂ】
2009510811.tif 000014
【図９Ｃ】
2009510811.tif 000015
【図１０Ａ】
2009510811.tif 000016
【図１０Ｂ】
2009510811.tif 000017
【図１０Ｃ】
2009510811.tif 000018
【図１０Ｄ】
2009510811.tif 000019
【図１１】
2009510811.tif 000020
【図１２Ａ】
2009510811.tif 000021
【図１２Ｂ】
2009510811.tif 000022
【図１２Ｃ】
2009510811.tif 000023
【図１２Ｄ】
2009510811.tif 000024
【図１２Ｅ】
2009510811.tif 000025
【図１３】
2009510811.tif 000026
【図１４Ａ】
2009510811.tif 000027
【図１４Ｂ】
2009510811.tif 000028
【図１４Ｃ】
2009510811.tif 000029
【図１４Ｄ】
2009510811.tif 000030
【図１４Ｅ】
2009510811.tif 000031
【図１４Ｆ】
2009510811.tif 000032
【図１４Ｇ】
2009510811.tif 000033
【図１４Ｈ】
2009510811.tif 000034
【図１４Ｉ】
2009510811.tif 000035
【図１５Ａ】
2009510811.tif 000036
【図１５Ｂ】
2009510811.tif 000037
【図１５Ｃ】
2009510811.tif 000038
【図１６Ａ】
2009510811.tif 000039
【図１６Ｂ】
2009510811.tif 000040
【図１６Ｃ】
2009510811.tif 000041
【図１６Ｄ】
2009510811.tif 000042
【国際調査報告】
2009510811.tif 000043
2009510811.tif 000044
2009510811.tif 000045
2009510811.tif 000046
2009510811.tif 000047