JP4654407B2 - サーバ・ソケットで受け取ったイベントを扱うための方法および装置 - Google Patents

サーバ・ソケットで受け取ったイベントを扱うための方法および装置 Download PDF

Info

Publication number
JP4654407B2
JP4654407B2 JP2001574613A JP2001574613A JP4654407B2 JP 4654407 B2 JP4654407 B2 JP 4654407B2 JP 2001574613 A JP2001574613 A JP 2001574613A JP 2001574613 A JP2001574613 A JP 2001574613A JP 4654407 B2 JP4654407 B2 JP 4654407B2
Authority
JP
Japan
Prior art keywords
socket
server
event
media
streaming
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.)
Expired - Lifetime
Application number
JP2001574613A
Other languages
English (en)
Other versions
JP2003530639A (ja
Inventor
スリカンタン,ギータ
ナラシマン,アラビンド
プロクター,セス
ブリッテンソン,ジャン
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2003530639A publication Critical patent/JP2003530639A/ja
Application granted granted Critical
Publication of JP4654407B2 publication Critical patent/JP4654407B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Description

【0001】
(発明の背景)
本発明はコンピュータ・システムの分野に関する。より詳細には、複数のクライアント接続が共用しているサーバ・ソケットで受け取ったイベントを扱うための方法および装置が提供される。
【0002】
コンピュータ・システムは、他のコンピュータ・システムとの通信を扱うためにソケットを作成して使用する。サーバなどのいくつかのシステムは、自らが通信しなければならない他のコンピュータ・システム(例えば、クライアント)が多数あるので、多数のソケットを確立するように構成されている。コンピュータ・サーバは、通信する各クライアント・システムごとに複数のソケットをセットアップし、専用にすることもある。その理由は、各ソケットが、1つのタイプの接続だけを扱う、1つの通信プロトコルだけを扱う、1つのタイプのタスクだけをディスパッチするなどのように、限られた機能性を有するように構成できるからである。
【0003】
例えば、QuickTimeメディアをクライアントにストリーミングするように構成されたサーバでは、1つのサーバ・ソケットを、制御機能を扱うように(例えば、RTSP(Real-Time Streaming Protocol)を使用して)各クライアント・メディア・ストリームに割り振り、別のソケットを、メディアをクライアントに伝送するために(例えば、RTP(Real-Time Transport Protocol)に従って)割り振り、さらに別のソケットを、クライアントからステータス情報を受け取るように(例えば、RTCP(Real-Time Transport Control Protocol)を介して)割り振ることができる。
【0004】
ただし、そのようなシステムは、クライアントの数が増加するにつれ、サーバが維持しなければならないソケットの数も比例して増加するので、拡張可能性が限られる。また、各ソケットには、通常、プロセッサ・リソースの応分の割合が(例えば、専用スレッドの形態で)割り振られるので、プロセッサ時間に対する結果の競合により、サーバが扱うことができるソケットまたはクライアントの数に上限が課される。個々のソケットまたは個々のメディア・ストリームに対してプロセッサ時間を要求する多数のプロセス、スレッド、デーモン、またはその他のエンティティが存在するため、サーバは、コンテキストスイッチを行うことに尋常でない多くの時間を費やす。また、他の非メディア・タスクには必要なリソースが拒否される可能性がある。
【0005】
他のシステムは、クライアント通信を扱うすべてのソケットの間で、または特定のタイプまたは形態のクライアント通信を扱うすべてのソケットの間で、1つのプロセッサ・スレッド、またはプロセッサ時間の1期間を割り振ることにより、この競合および拡張可能性の欠如を回避しようと試みる。しかし、メディア・ストリームおよびソケットの数が増加するにつれ、所与のソケットまたは所与のストリーム(特にリアルタイム・メディア・ストリーム)に不十分なリソースが割り振られる危険が存在する。
【0006】
(概要)
したがって、本発明の一実施態様では、サーバが、クライアントまたは他のコンピュータ・システムと通信する複数のソケットの間でサーバの処理能力を(例えば、実行スレッドの態様で)共用する装置および方法が提供される。サーバを、クライアントに対してメディアをストリーミングする、データを取り扱う、またはその他のサービスを提供するように構成することが可能である。また、複数のクライアント接続を単一の共用ソケットを介して確立する、または管理することが可能である。
【0007】
この実施態様では、サーバ・ソケットを複数の集合に配分し、各集合に1つまたは複数のスレッドが割り振られるようにすることが可能である。イベント(例えば、接続要求、メディア・ストリーミング・コマンド、データ・パケット、データ要求)をソケットで受け取ったとき、スレッドは、そのイベントをソケットの登録されたコンシューマに渡す。コンシューマは、必要なタスクを発行または実行することによってイベントを扱うように構成されている。例えば、複数の通信接続の間で共用されるソケットでイベントを受け取ったとき、担当するコンシューマが、受け取ったイベントのタイプを特定すること、そのイベントを開始したクライアントまたは他のエンティティを特定することなどを行うことが可能である。
【0008】
一実施態様では、特定のソケット・コンシューマが、イベントを扱うための基本インターフェースを提供するアブストラクトベースのクラスから導出され、特定のタイプのイベント(例えば、新しいクライアント接続、メディア・ストリームのクライアント要求、メディア・ストリームに関するステータス情報)を扱うのに必要な機能性が追加される。したがって、それぞれの新しいソケットごとに適切なコンシューマ・オブジェクトがインスタンス化されることが可能であり、またオブジェクト自体およびオブジェクトのソケットが、様々なソケットを監視して新しいイベントを検出するポーリング機構に登録されることが可能である。
【0009】
本発明の別の態様では、コンピュータ・サーバ内部のソケットで受け取ったイベント(例えば、クライアント接続、ストリーミングされたメディア、メディア・ストリーミング・コマンド)を扱うための方法が提供される。この方法では、1つまたは複数のソケットが、イベントを検出するためにソケットをポーリングするポーリング・モジュールに登録される。それぞれの登録されたソケットは、そのソケットで受け取ったイベントを担当するイベント・コンシューマに関連付けられる。登録されたソケットにイベントを受け取ると、関連するイベント・コンシューマが通知を受け、必要に応じてタスクを発行してイベントの扱いを円滑にする。本発明のこの実施態様では、登録されたソケットを複数の集合に分けることができる。各集合内部で、1つのプロセッサ・スレッドが、イベントを検出し、イベント・コンシューマに通知を行うためにソケットの間で共用される。また、スレッドのプールが、様々なイベント・コンシューマによって発行されたタスクを実行するために割り振られる。
【0010】
(詳細な説明)
以下の説明は、当分野の任意の技術者が本発明を作成および使用できるようにするために提示され、本発明の特定の応用例およびその要件という状況で提供される。当分野の技術者であれば、開示された実施形態に対する様々な修正が容易に明らかとなり、本明細書に定義された一般的な原理は、本発明の精神および範囲を逸脱することなく他の実施形態および応用例に適用することができる。したがって本発明は、例示された実施形態に限定されるものではなく、本明細書に開示された原理および特徴に適合する最も広い範囲が与えられる。
【0011】
本発明の実施形態が実行されるプログラム環境は、汎用コンピュータまたは特定用途向けデバイスを含んでいる。例えば、ほぼすべての構成のコンピュータまたは通信デバイス(たとえば、有線、無線、携帯用、デスクトップなど)に対してデータまたは媒体ストリーミング・サービスを提供するように構成されたコンピュータ・サーバなどを組み込んでいる。こうしたコンピュータおよび他のデバイス(たとえば処理装置、メモリ、データ記憶装置、ディスプレイなど)の詳細はよく知られているため、理解しやすいように省略されている。さらに、本発明は、オブジェクト指向プログラミング環境で実施できるものとして記載されている。当分野の技術者であれば理解されるように、実施形態の好適な変形形態は、他のプログラミング・モデルまたはフレームワークを使用して実施することが可能である。
【0012】
本発明の技法は、様々な技術を使用して実施できることも理解されたい。たとえば、本明細書に記載された方法は、コンピュータ・システムで実行中のソフトウェアで実現可能であるかまたは、マイクロプロセッサまたは他の特別に設計されたアプリケーション特有の集積回路の組合せ、プログラム可能論理デバイス、あるいはそれらの様々な組合せのいずれかを使用するハードウェアで実現可能である。具体的には、本明細書に記載された方法は、搬送波などの記憶媒体、ディスク・ドライブ、またはコンピュータ読取り可能媒体上に常駐する一連のコンピュータ実行可能命令に実装可能である。搬送波の例示的な形式は、ローカル・ネットワークまたはインターネットなどの公衆がアクセス可能なネットワークに沿ってデジタル・データ・ストリームを搬送する、電気、電磁、または光の信号形態を取ることができる。
【0013】
本発明の一実施形態では、メディア・ストリーミング・サーバまたはデータ・ストリーミング・サーバが、メディアを1つまたは複数のクライアントにストリーミングするように構成される。サーバは、クライアントと通信するのに使用するソケットを作成し、維持する。ソケットは、複数の集合に分けることができ、適切なプロセッサ・リソースが集合に割りられる。所与のソケットは、複数のストリーム、複数のクライアントまたは複数のクライアント接続、複数タイプのイベント等で使用するように構成することができる。
【0014】
イベントをサーバ・ソケットで受け取ったとき、ソケット・コンシューマ、つまりソケットに関して関心があることを登録したプログラム・モジュールまたはプログラム・オブジェクトが通知を受ける。新しいクライアント接続要求を扱うリスナ・コンシューマ、メディア・ストリーミング・コマンドを扱う接続コンシューマ、ステータス情報を受け取る又はメディア・ストリーミングの反射モードで別のメディア・サーバからサーバにストリーミングされたメディアを受け取るレシーバ・コンシューマなどの、異なるタイプのコンシューマを異なるタイプのイベントに対して生成することができる。
【0015】
例として、ソケットに到着したイベントが、適切なコンシューマに迅速に渡され、ソケットにイベントを受け取る専用のスレッドが、自らの注意を自らの集合のソケットに戻すことができるようになっている。これにより、限られた数のスレッドが、イベントを損失する、またはイベントを遅延させることなく、多数のソケットに役立てられることが可能になる。イベントを受け取るソケット・コンシューマはイベントを扱う1つまたは複数の適切なタスクを生成することができる。タスクは、別々のタスク・オブジェクトとして発行されることが可能で、タスクの実行に割り振られたスレッドのプールを共用することが可能である。
【0016】
スレッドが、制御された仕方で共用され、割り振られるため、本発明のこの実施形態は、イベントをサーバにサブミットする様々な数のクライアントまたはその他のエンティティに合せて拡大縮小することができる。
【0017】
本発明特有の実施形態について、Sun Microsystems,IncのSolaris(商標)オペレーティング・システムを実行中のシステムなどの、UNIX(登録商標)ベースのコンピュータ・システムからQuickTime媒体をストリーミングするために実装するものとして以下に説明する。以下の詳細な説明からわかるように、こうした実施形態は、他のタイプの媒体および他のコンピュータ・システムで使用するように修正することができる。
【0018】
例示的な媒体ストリーミング・サーバ
媒体ストリーミングとは、ユーザがプログラムまたはプレゼンテーション全体を自分のクライアント・デバイスにダウンロードしてしまうまで待つ必要なしに、媒体コンテンツを受信して楽しむことができるようにするものである。たとえばユーザは、プログラム全体を受け取るまで待つことなく、すでに記録されたプログラムを楽しむか、またはライブ・イベントをリアルタイムで体験することができる。
【0019】
媒体は、ユニキャスト・モードまたはマルチキャスト・モードでストリーミング可能である。ユニキャスト・モードの場合、ストリーミング・サーバはそれぞれの受信側クライアント・デバイスへの専用接続を維持し、ユーザに対して自分のストリームを介したかなりの制御権を認める。たとえばユーザは、ストリームの一時停止、ストリーミングされた媒体の巻戻しまたは早送り、あるいは他の制御機能の実行が可能である。ただし、これによって、多数のユーザが十分な帯域幅を使用できなくなる可能性がある。マルチキャスト・モードの場合、媒体ストリーミング・サーバは、より少ない帯域幅を使用して、複数のユーザにプログラムを同時にストリーミングする。したがってこのタイプのストリーミングは、従来の同報通信に類似しており、ユーザは個々のストリームを介した制御権をほとんど持たない。ライブ・イベントは、多数のユーザにサービスを提供するために効率が良いことから、通常はマルチキャスト・モードでストリーミングされる。また、ライブ・イベントはリアルタイムで楽しむものであることから、ストリーミングされた媒体を操作する必要もほとんどない。
【0020】
本発明の実施形態による媒体ストリーミング・サーバは、「反射」モード・オペレーションで動作することが可能であり、サーバは、媒体ストリームを別のストリーミング・システムまたはサーバから(通常はマルチキャスト・モードで)受け取り、その媒体を1人または複数のユーザに(ユニキャストまたはマルチキャスト・モードで)転送する。
【0021】
リアルタイム媒体ストリーミングは、媒体の各フレームまたは他のユニットの配信が指定された順序および一定の時間枠内で実行されなければならないため、発行元サーバに制約を与える。したがって媒体ストリーミング・サーバは、サービスを提供するクライアントの数にかかわらず、ユーザに提供するサービスの質が許容できないレベルまで下がることのないように、リアルタイム媒体ストリーミングの要求に合わせるよう努力しなければならない。たとえば、プログラムのタイプ(すなわちライブまたは事前記録済み)およびストリーミングのモード(すなわちユニキャストまたはマルチキャスト)にかかわらず、ストリーミングされる媒体は、一般に、移行時に消費する帯域幅を減らすために圧縮されるため、クライアントへのタイムリーな媒体の配信を確実にすることができる。
【0022】
本発明の一実施形態に従った媒体ストリーミング・サーバは、QuickTime媒体および/または他の形式の媒体を、ユニキャストまたはマルチキャスト・モードで、専用ネットワーク又はインターネットなどの公衆アクセス可能なネットワークを介してストリーミングするように構成されている。媒体ストリームは、伝送媒体に適合するプロトコル・セットに従ってフォーマット化される。具体的に言えば、QuickTime媒体をストリーミングする場合、サーバは、クライアントの媒体ストリーム制御を容易にするためのRTSP(Real-Time Streaming Protocol)用、クライアントへのストリームの配信および/または他のソースからの媒体の受信のためのRTP(Real-Time Transport Protocol)用、ストリームの品質に関する情報の受信または交換のためのRTCP(Real-Time Transport Control Protocol)用、クライアントに媒体を記述するためのSDP(Session Description Protocol)用などに構成することができる。他の実施形態を他の媒体プロトコル用に構成することもできる。
【0023】
図1は、本発明の実施形態に従ってQuickTime媒体をストリーミングするように構成された、媒体ストリーミング・サーバ102を示す図である。図1では、媒体ストリーミング・サーバ102がクライアント110、112にサービスを提供する。クライアントに向けてストリーミングされる媒体は、記憶デバイス104から取り出されるすでに記録されたプログラム、またはサーバ130から(たとえばマルチキャスト同報通信130aの一部として)受信されるリアルタイム・プログラムを含むことができる。したがって媒体ストリーミング・サーバ102は、ライブ・イベント(たとえばコンサート、ニュース放送、スポーツ・イベント)、映画、ドキュメンタリ、トレーニング・ビデオ、教育用の番組またはクラスなどをストリーミングすることができる。
【0024】
媒体ストリーミングは、媒体ストリーミング・サーバ102とクライアントとの間に複数の接続を必要とする場合がある。図1に示された実施形態では、第1の接続はクライアントが媒体ストリームを制御できるようにするためのRTSP(たとえば接続110a、接続112a)用である。具体的に言えば、クライアントはRTSP接続を使用してコマンドを媒体ストリーミング・サーバに送信する。この実施形態でクライアントがサーバに提示できる媒体ストリーム・コマンドには、サポートされているコマンドのリストを受け取るためのOptions、媒体プログラムを記述するようにサーバにプロンプトを出すためのDescribe、受け取りたい所望のトラック(各トラックはビデオ、オーディオなどの異なる媒体形式であってよい)を識別するためのSetup、媒体トラックまたはプログラムを再生するためのPlay、ストリーミングを一時的に停止するためのPause、ストリームを終了させるためのTeardown、などのコマンドが含まれる。したがってクライアント110は、たとえばサーバ102とのRTSP接続110aを確立し、Describeコマンドを発行して、ストリーミングに使用可能なコンテンツおよびトラックの記述を受け取ることができる。その後クライアント110は、1つまたは複数のトラックに対してSetup要求を提示することができる。
【0025】
クライアントがサーバに対してSetupコマンドを発行すると、サーバは、選択されたトラックに対してRTP接続(たとえば接続110b、接続112b)およびRTCP接続(たとえば接続110c、接続112c)を確立する。Playコマンドを受け取ると、サーバはRTP接続を介してクライアントへの媒体パケットのストリーミングを開始する。サーバおよびクライアントは、RTCP接続を介して、ストリームの品質を記述したRTCPパケットを交換することができる。Teardownコマンドが発行されると、サーバは、発行元クライアントとの関連するストリーム接続を閉じる。
【0026】
媒体ストリーミング・サーバによって使用される様々な接続は、サーバおよびクライアントがそれを介して通信する(たとえばインターネット)、互換通信媒体用のTCP(Transport Control Protocol)ソケットを使用することができる。本発明の他の実施形態では、ソケットを異なるプロトコル(たとえば、HTTP-HyperText Transport Protocol、FTP-File Transfer Protocol)に従って構成することができる。
【0027】
すでに述べたように、図1の媒体ストリーミング・サーバ102は、リアルタイムまたはライブの媒体をクライアントにストリーミングすることが可能であり、すでに記録された媒体をストリーミングすることも可能である。さらに、反射モード・オペレーションでは、媒体ストリーミング・サーバは、他のサーバ(たとえばサーバ130)からのライブ・イベント、ビデオ・カメラ、同報通信など、他のエンティティから受け取った媒体を、クライアントに転送することができる。この状況では、媒体ストリーミング・サーバ102はクライアントとして動作し、エンティティとの間で確立されたRTP接続を介して媒体パケットを受け取る。
【0028】
クライアント110、112は、媒体ストリーミング・サーバ102からストリーミングされた媒体を再生するのに好適な媒体プレーヤを備える。QuickTime媒体ストリーミングの場合、クライアントは、Apple Computer,Incから入手可能なものと同様に、QuickTimeプレーヤを操作することができる。クライアント・コンピューティング・デバイスは、好適な媒体プレーヤが使用可能なほぼすべてのオペレーティング・システム(たとえば、Solaris、Mac OS、Windows(登録商標)、Linux)を動作させることができる。クライアント・デバイスは、比較的低い帯域幅の通信機能(たとえば56Kモデム)を備えることができるため、媒体ストリームは、比較的遅いビット・レートで送信することができる。もちろん、より高い帯域幅能力を有するクライアントに対しては、より速いビット・レートも実施可能である。クライアントは、URL(Uniform Resource Locator)、ファイル名、プログラム名(たとえば映画の名前、歌の題名)などを提示することによって、ストリーミングされてくる媒体を識別することができる。
【0029】
メディア・ストリーミング・サーバに受け取ったイベントの扱い
本発明の一実施形態では、図1のサーバ102などのメディア・ストリーミング・サーバが、複数のクライアントにメディアをストリーミングし、サーバに受け取ったイベントまたはデータに関して必要とされる様々なタスクを行うように構成される。イベントは、クライアント接続要求、メディア・ストリーミング・コマンド、ストリームの品質に関する情報、またはクライアントからの他の何らかの情報を含み、または上流のメディア・サーバまたは上流のその他のソースから受け取ったデータまたはその他の信号を含むことができる。イベントまたはデータの受信に応答して、様々なタスクを開始することができる。
【0030】
この実施形態では、イベントおよびデータは、適切な通信プロトコルに従って構成されたサーバ・ソケットに受信される。イベントを検出して受信し、所与のイベントに関して達せられるべきタスクを決定し、そのタスクを行うため、効率的であり、拡張可能でフレキシブルな方法が実施される。詳細には、システム・リソース(例えば、プロセッサ時間)が、オーバーヘッド(例えば、コンテキストスイッチ)および競合を減少させるが、メディア・ストリームの要求を満たすのに必要なリソースを抑えないことを目的とする仕方で割り振られる。詳細には、プロセッサ・サイクル(および/またはその他のリソース)の割振りに対してより大きく制御することにより、メディア・ストリーミング・サーバが、メディア・ストリーミング・サービスも、その他のサーバ・サービスもあまり低下させることなく、より多数のクライアントを扱うことができるのが可能である。
【0031】
この実施形態の一実施形態では、サーバ・ソケットで受け取ったイベントは、イベントのタイプ、および/または、ソケットの識別ではなく、イベントを開始したクライアントまたはその他のエンティティに基づいて処理される。この結果、1つのソケットを複数のクライアント接続および/または複数タイプのイベントのために使用することができる。これは、クライアントのためにメディアをストリーミングするのに必要なソケットの全体数を抑えるのに役立つ。
【0032】
より具体的には、QuickTimeメディアをストリーミングするとき、メディア・サーバは、クライアントとの各RTSP制御接続ごとに別個のソケットを作成する。ただし、1つのサーバ・ソケットを介して複数のクライアントとの複数のRTP接続を確立することができる。同様に、複数のRTCP接続に対して1つのソケットを使用することができる。ただし、共用ソケットを介する各接続が固有ペアのクライアントとサーバ・アドレス(例えば、タプル)を有するのを確実にするため、各個別クライアントは、所与のサーバ・ソケットを介して1つのRTP接続または1つのRTCP接続だけに参加することができる。詳細には、ソケットを介する各接続に関して、サーバ・アドレスは同一であることが可能であるが、クライアント・アドレスは異なる。
【0033】
図2は、共用ソケットを有する複数のクライアントにサービスを提供するように構成されたメディア・サーバを示している。メディア・ストリーミング・サーバ200は、クライアント1〜Nにサービスを提供するための複数のソケットを備えている。示す実施形態では、ソケット1およびN+2はそれぞれ、クライアント1およびNとのRTSP接続に専用である。ただし、ソケット2は、両方のクライアントのRTP接続のために使用され、一方、ソケット3は、両方のクライアントのRTCP接続のために使用される。
【0034】
次に、Sun Microsystems,Inc.によるSolaris(商標)オペレーティング・システムを実行するシステムなどのUNIXベースのコンピュータ・システムにおいて実施することができる本発明の一実施形態を説明する。この実施形態では、いくつかのオブジェクト指向プログラム・モジュールが使用され、以下に説明するとおり、処理スレッドが割り振られる。本発明の他の実施形態では、プログラミングを行う他の方法、およびプロセッサ・リソースを割り振る他の方法を使用して、異なるタイプのコンピュータ・システムを使用することができる。
【0035】
この実施形態では、Pollerは、ソケット、パイプ、およびその他のポーリング可能なファイル記述子をポーリングするように構成されたプログラム・モジュールまたはプログラム・オブジェクトを含む。クライアント接続、関与する他のサーバまたは他のエンティティに対する接続のために使用されているポーリング可能なファイル記述子が、1つまたは複数のPollTableにグループ化される。各PollTableは、構成可能な数のエントリ(例えば、256)を含み、所与のファイル記述子をオープン・エントリを有する任意のPollTableに登録することができ、必要に応じて新しいPollTableを作成することができる。1つまたは複数のプロセッサ・スレッドが、登録されたファイル記述子で受け取ったイベントを検出し、そのイベントに応答するため、各PollTableに専用であることが可能である。
【0036】
イベント(例えば、クライアント接続、ストリーミング・コマンド・データ)が、PollTableに登録されたソケットで受け取ったとき、PollTableは、例としてCreateTask()と命名する必要とされるメソッドを最低限実装するPollEventConsumerオブジェクトにそのイベントを渡す。PollEventConsumerオブジェクトは、抽象PollEventConsumerインターフェース・クラスから導出される。このクラスは、CreatTask()メソッドだけを含むことが可能である。したがって、特定タイプのイベントを扱うため、多数の異なるPollEventConsumerオブジェクトを生成することが可能である。
【0037】
したがって、オブジェクトのListnerクラスが、PollEventConsumerクラスの1つのサブクラスを表し、新しい接続要求を検出する、または聴取するように構成されることが可能である。オブジェクトのConnectionクラスは、クライアントまたはその他のエンティティと確立された(メディア・ストリーミング・コマンドまたはその他のコマンドを実行または処理するため)接続を扱うための、PollEventConsumerクラスの別のサブクラスを表すことが可能である。また、他の様々なサブクラスもインプリメントすることが可能であり、複数タイプの特定のオブジェクトをその様々なサブクラスから導出することができる。
【0038】
例えば、RTSPConnectionオブジェクトが、Connectonサブクラスから導出された1つのPollEventConsumerオブジェクトであり、RTSPソケットで受け取ったメディア・ストリーミング・コマンドを扱うように特に構成されている。他の特定のPollEventConsumerオブジェクトには、RTCPConnectionオブジェクト(RTCPイベントを扱うための)、新しいRTSP接続要求を聴取するためのRTSPListenerオブジェクト等が含まれるいてもよい。要するに、様々なPollEventConsumerオブジェクトをインプリメントして様々なイベントを扱うことができる。
【0039】
特定のPollEventConsumerオブジェクトは、ソケットまたはその他のファイル記述子に対する自らの関心を示し、Pollerに自らを登録し、またファイル記述子を登録することにより、そのソケットにイベントを受け取った場合、通知を受けるようにする。1つのオブジェクトが、複数のソケットのコンシューマとして登録することが可能である。
【0040】
Taskオブジェクトと呼ばれる別の系列のプログラム・オブジェクトまたはプログラム・モジュールをインプリメントして、イベントの扱いに関連する特定のタスクを達することができる。PollEventConsumerオブジェクトは、イベントの通知を受けたとき、必要なタスクを行うように構成されたTaskオブジェクトを作成する、または呼び出すことができる。したがって、RTSP接続を介して受け取った(例えば、ストリーミング・セッションの一環として)クライアント・コマンドのケースでは、RTSPConnectionオブジェクトが、クライアントのコマンド(例えば、記述する、再生する、一時停止する)を実行するように構成されたRTSPTaskオブジェクトを呼び出すことができる。
【0041】
別の例として、RTPソケットを介して別のメディア・サーバから(例えば、反射中に)メディア・ストリーミング・サーバに受け取ったメディアまたはその他のデータに関して、PollTableは、担当するRTPReceiverオブジェクト(PollEventConsumerインターフェースのRecieverサブクラスから導出された)に警報することができる。次に、RTPReceiverオブジェクトは、ReceiveDataタスク・オブジェクトを呼び出してデータを実際に読み取る、または処理することができる。
【0042】
この実施形態では、特定のPollTableに割り振られたスレッドが、そのPollTableに排他的に専用であることが可能である。したがって、PollTableスレッドは、単にイベントを検出し、イベントをそれぞれのコンシューマに渡す働きだけをすることが可能である。このようにして、1つのスレッドを各ソケット専用にしなければならず、それにより、過度の競合(例えば、多数のスレッドが利用される際)を招く、または別の仕方でプロセッサ時間を非効率的に使用することなく、イベントを迅速に検出することができる。登録されたファイル記述子に受け取られたイベントによって必要とされる様々なタスクを行うため、スレッドのプールまたはセットを割り振ることができる。詳細には、タスク待ち行列を実装して、ソケット・コンシューマによって呼び出された様々なタスク・オブジェクトを実行し、スレッド・プールに割り振られたスレッドでそれらのオブジェクトを実行することができる。
【0043】
また、本発明のこの実施形態では、パイプをPollTableに登録し、ソケットおよびその他のタイプのファイル記述子とともにポーリングすることができる。パイプは、Pollerとその他のプログラム・オブジェクトの間における通信のために使用することができる。例えば、パイプは、登録されるべき新しいファイル記述子(例えば、ソケット)をPollerに通知するため、特定のファイル記述子に関してポーリングが再開されることを要求するため、Pollerがソケットを登録解除することを要求する(例えば、メディア・ストリームが取り払われたとき)などのためにPollEventConsumerオブジェクトによって使用されることが可能である。例として、イベントをソケットで受け取ったとき、そのイベントが扱われ、Pollerがソケットに対するポーリングを再開するよう命令を受けるまで、そのソケットに対してポーリングがサスペンドされる。
【0044】
図3は、本発明の一実施形態によるメディア・ストリーミング・サーバ内部のイベントを扱うための様々なプログラム・オブジェクトのクラスの間の関係を描いている。示す実施形態では、PollTableを作成して管理し、PollTable内部のメディア・サーバ・ソケット(およびその他の登録されたファイル記述子)のポーリングを制御するように構成された単独クラスをPoller302が表している。この実施形態では、ファイル記述子がPoller302に登録され、PollEventConsumerオブジェクトがその記述子を介して受け取ったイベントまたはデータの通知を受ける必要があるとき、PollTableの中に入れられる。
【0045】
PollTable304は、Pollerに登録されたポーリング可能なファイル記述子の集合を表す。PollTableは、テーブル、またはその他の構造を維持し、Poller302によって指示されるとおりにエントリを挿入し、削除する。各エントリは、特定のファイル記述子、およびその記述子で受け取ったイベントの通知を受けるべきPollEventConsumerオブジェクトを特定する。PollTableの中に入れることの可能なファイル記述子の数は設定可能であり、また、複数のPollTableを実装することができる。ファイル記述子には、パイプ、ソケット、ならびに実質的に他のあらゆるポーリング可能なエンティティが含まれることができる。例として、単一のプロセッサ・スレッド、またはプロセッサ時間の割振りが、単一のPollTableのファイル記述子の間で共用されて、それらの記述子がイベントに対してポーリングされることが可能である。
【0046】
PollEventConsumer310は、ポーリング・サービスを必要とする、またはサーバに受け取ったイベントに応答して何らかのアクションが行われることを必要とするオブジェクトのためのインターフェースを提供するアブストラクトベースのクラスを表している。様々なサブクラスをPollEventConsumerクラスから作成することができ、例として、CreateTask()メソッドをインプリメントしなければならない。図3は、3つのPollEventConsumerサブクラス、Listener、Connection、およびReceiverを示している。
【0047】
Listener312は、サーバ・ポートにおけるイベント(例えば、新しい制御接続の要求)を聴取するように構成されたリスナ(例えば、リスナ・ソケット)を表している。異なるプロトコル(例えば、RTSP、FTP、HTTP、Telnet)に対して様々なタイプのListenerオブジェクトをインスタンス化することが可能であり、また1つのタイプのListenerの複数のインスタンスを生成することができる。例として、各タイプのListenerオブジェクトが、異なるタイプの制御接続を作成するように構成される。
【0048】
Connection314は、サーバ・ソケットを介して外部のエンティティ(例えば、クライアント、別のメディア・サーバ)と確立された接続を表している。例として、ListenerオブジェクトがTCP接続を検出したとき、新しいConnectionオブジェクトが生成されることが可能である。Connection314は、Connectionオブジェクトがそれを介して制御コマンド(例えば、メディア・ストリームを確立または操作する)、またはその他のイベントを受け取るソケット(例えば、ソケットのオブジェクト指向カプセル化を表すソケット316)を含む。様々なタイプの接続(例えば、RTSP、RTP、RTCP、HTTP)を異なるConnectionオブジェクトで実現することができ、また、単一タイプの複数のインスタンスを作成することができる。
【0049】
Receiver318は、所与のソケットを介してサーバに受け取ったデータまたは情報を処理するように構成されたデータ・レシーバまたは情報レシーバを表す。例えば、本発明の示す実施形態では、Listener312のRTSPListener実装形態が、新しいメディア・ストリームを確立することを望むクライアントから新しいRTSP制御接続を受け取ることが可能である。RTSPListenerオブジェクトは、新しいソケットのために新しいRTSPConnectionオブジェクトを生成する(例えば、Connection314のRTSPConnectionサブクラスから)。RTSPConnectionオブジェクトが、選択されたメディア・トラックを再生するコマンドを受信したとき、サーバが、クライアントに対するRPTパケットの伝送を開始し、RTCPReceiverオブジェクトをインスタンス化して(例えば、Receiver318のRTCPReceiverサブクラスから)、クライアントからストリーム品質データを収集することが可能である。
【0050】
前述したとおり、1つのRTCPソケットが、サーバと複数のクライアントの間における複数のRTCP接続の間で共用されることが可能である。したがって、この場合、1つだけのRTCPReceiverオブジェクトが必要とされ、かつ、このオブジェクトは、イベントを受信したとき、どのRTCP接続、またはどのクライアントが、そのイベントを開始したかを判定する(例えば、クライアントのネットワーク・アドレスにより)。
【0051】
メディア・サーバが、1つまたは複数のクライアントに転送するために別のサーバからメディアを受け取る反射モードの動作では、メディア・サーバは、RTPReceiver(例えば、Receiver318の別のサブクラスとして)をインプリメントしてRTPメディア・パケットを受け取ることができる。
【0052】
TaskQueue306は、Poller302に登録されたファイル記述子で受け取ったイベントに関連するタスクを処理または実行するための待ち行列を表している。例として、TaskQueue306は、先入れ先出し(FIFO)待ち行列として動作して、様々なPollEventConsumerオブジェクトによって呼び出されたタスクを実行する。
【0053】
Task320は、別のオブジェクト(例えば、Poller、PollEventConsumerオブジェクト)によってインプリメントされるアブストラクト・クラスを表している。Taskは、TaskQueue306上に配置され、待ち行列から取り出されたとき、プロセッサ・スレッドによって実行される。例えば、メディア・ストリームの確立、制御、および監視を行うのに必要な様々なアクションが、Taskオブジェクトとして担当のPollEventConsumerオブジェクトによって渡されることが可能である。例として、プロセッサ・スレッドのプールが、TaskQueueの中に入れられたTaskの実行に割り振られる。
【0054】
本発明の示す実施形態では、Pollerに登録されたファイル記述子を介してメディア・サーバに受け取ったイベントまたはデータが、対応するPollTableに関連するスレッドがPollTableエントリをポーリングしたときに検出される。ファイル記述子に関するPollTableエントリが検査されて、担当のPollEventConsumerオブジェクトが特定され、イベントがそのオブジェクトに渡される。次に、PollEventConsumerオブジェクトは、CreateTask()メソッドをインプリメントしてイベントを扱う、またはデータを処理するタスクを作成する。例として、イベントを検出したPollTableスレッドは、単にそのイベントをPollEventConsumerオブジェクトに渡して、より多くの活動を扱うように迅速に可用になるようにし、その場合、異なるスレッドが、CreateTask()メソッドを実行する。
【0055】
ただし、別法では、イベントに少しの処理しか必要とされない場合、CreateTask()メソッドの実行が、実際にタスクの作成をもたらさないことが可能である。代りに、CreateTask()メソッドを実行したプロセッサ・スレッド(例えば、PollTableのスレッド)が、イベント処理も扱うことが可能である。
【0056】
ソケットにおけるイベントが検出され、適切なPollEventConsumerオブジェクトに渡された後、Pollerは、そのイベントが処理された(例えば、PollEventConsumerオブジェクト、またはPollEventConsumerオブジェクトによって呼び出されたTaskオブジェクトにより)ことの通知を受けるまで、ソケットのポーリングを停止する。
【0057】
例として、新しいソケットをポーリングのために登録するとき(例えば、新しいクライアント・セッションまたは新しいストリームがセットアップされるとき)、そのソケットを担当するPollEventConsumerオブジェクトが、パイプを介してPollerに通知する。このパイプは、別のファイル記述子としてPollTableの中に登録されていることが可能である。Pollerは、パイプを介する活動が存在するとき通知を受けるということで、パイプに関してPollEventConsumerオブジェクトと同様に動作することが可能である。単一のパイプまたは複数のパイプ(例えば、各PollTableの中に1つづづの)を維持することが可能である。
【0058】
図4A、4Bは、複数のソケットを介してサーバに受け取ったイベント(例えば、クライアント要求、データ)を扱う本発明の実施形態を実施する例としての方法を描いている。この示す方法は、図3に描いたものと同様に、サーバが初期設定される際の必要なプログラム・オブジェクトの作成、ならびにイベントが受け取った際のオブジェクトの利用を示している。サーバは、QuickTimeメディアをストリーミングするように構成されたメディア・ストリーミング・サーバであってよく、その場合、サーバは、適切なプロトコル(すなわち、RTSP、RTP、RTCP、SDP)で構成される。
【0059】
図4Aの状態402では、Pollerが作成される(例えば、サーバの初期設定の一環として)。この時点で、Pollerは、PollTableの空のリストだけを維持し、PollEventConsumerオブジェクトは、全く作成されていない。ただし、Pollerは、他のプロセスまたは他のオブジェクトと通信するためのパイプを備えていることが可能である。本発明の代替の実施形態では、Pollerが作成されたとき、第1のPollTableが自動的に生成される。
【0060】
状態404で、第1のPollEventConsumerオブジェクトが、適切なPollEventConsumerクラスまたはPollEventConsumerサブクラスからインスタンス化されて、新しいクライアント接続を聴取する。クライアントにサービス(例えば、メディア・ストリーミング・サービス、Webサービス)を提供するように構成されたサーバにおいて、クライアントがサーバと接続を確立するのに使用する特定のプロトコル(例えば、RTSP、HTTP、FTP)に合せて第1のListenerオブジェクトを構成することができる。より具体的には、Listenerクラスを抽象基本PollEventConsumerクラスから導出して、様々なタイプのリスナ・ソケットに対応することができる。Listenerクラスは、CreateTask()メソッドを含め、PollEventConsumerクラスから継承を行い、1つまたは複数の特定タイプのListenerに必要とされる機能性を追加することができる。
【0061】
ListenerクラスからRTSPListenerクラスおよびRTSPListenerオブジェクトを導出して、RTSP接続を聴取することができ、HTTPListenerクラスおよびHTTPListenerオブジェクトを導出して、HTTP接続を聴取することなどができる。したがって、RTSPListenerオブジェクトおよびHTTPListenerオブジェクトは、多くの可能なPollEventConsumerオブジェクトおよびListenerオブジェクトのなかの2つに過ぎない。CreateTask()メソッドの他、RTSPListenerオブジェクトまたは他の特定のPollEventConsumerオブジェクトは、その他のメソッドもインプリメントして、詳細には、クライアント要求に応答して新しい制御接続を確立することができる。
【0062】
また、その他の役割をするその他のサブクラスも、以下に説明するとおり、PollEventConsumerクラスから導出することができ、またその他のタイプのListenerクラスを異なるプロトコルまたは異なるタイプの制御接続のために導出することができる。
【0063】
状態406で、新しいRTSPListenerオブジェクトが、リスナ・ソケットを作成して新しいRTSP制御接続を聴取する。ソケットは、適切な通信プロトコルに従って作成することができ、構成可能であること、または所定であることが可能である。
【0064】
状態408で、RTSPListenerが、新たに作成されたソケットのことをPollerに(例えば、パイプを介して)通知する。これにより、ソケットの登録が開始され、登録は、完了したとき、Pollerが、イベント(例えば、新しい制御接続要求)に関してソケットをポーリングするのを可能にする。
【0065】
状態410において、Pollerは新しいPollTableを作成する。というのは、Pollerは、新しいリスナ・ソケットを登録する余地を有するPollTableを全く有していないからである。Pollerは、アクティブPollTableを特定するためのリストまたはその他の構造の中に新しいPollTableに対するリファレンスを記憶することができる。
【0066】
本発明のこの実施形態では、PollTableは、登録されたファイル記述子(例えば、ソケット、パイプ、ドア)を記録し、イベントが受け取ったときに通知を受けるPollEventConsumerオブジェクトを特定するためのテーブルまたはその他の構造を含む。例として、1つまたは複数のプロセッサ・スレッドが、各PollTableに専用であり、PollTableのファイル記述子をポーリングすること、イベントを検出すること、および担当のPollEventConsumerオブジェクトに通知することを担う。PollTableの中のエントリの数は、ファイル記述子が追加され(例えば、新しいクライアント接続のため)、除去される(例えば、クライアント接続が終了されたため)につれて変動することが可能である。エントリの最大数は、構成可能であり、複数のPollTableが維持される場合、そのポピュレーションの均衡をとり、またはエントリを隔離して、各PollTableを最も効率的に操作できるようにすることが可能である。
【0067】
状態412で、新しいPollTableが、ファイル記述子を記憶するために自らのテーブルを初期設定する。また、PollTableは、Pollerと通信するためのパイプを自動的に記入し、自らのテーブルの中で識別されるファイル記述子のポーリングを開始する。
【0068】
状態414で、PollTableは、新しいリスナ・ソケットを登録する必要性を検出する(例えば、パイプ上のイベントのため)。したがって、PollTableは、RTSPListenerオブジェクトによって作成されたソケットにRTSPListenerに対するポインタまたはリファレンスを記入する。例として、新しいソケットは、担当するPollEventConsumerオブジェクト(すなわち、RTSPListener)が、そのソケットがポーリングされることを要求するまでポーリングされない。
【0069】
次に、Pollerが、登録が完了したことをRTSPListenerオブジェクトに通知し、ソケットが記入されたPollTableを特定することが可能である。
【0070】
状態416で、RTSPListenerが、Pollerにコンタクトしてソケット上のイベントをイネーブルにし、これにより、そのソケットが、ポーリング・ルーチンに追加される。この時点で、サーバは、クライアント接続およびその他のイベントを受け取る準備ができている。
【0071】
状態418で、クライアント接続が、RTSPListenerソケットに受信され、これにより、PollTableスレッドが呼び起こされる。スレッドは、PollTableテーブルを検査して、そのソケットを担当するPollEventConsumerオブジェクト、つまりRTSPListenerオブジェクトを特定する。
【0072】
状態420で、PollTableオブジェクトが、RTSPListenerオブジェクトのCreateTask()メソッドを呼び出す。PollTableは、イベント・マスク、または生じたイベントのタイプおよびイベントが生じたファイル記述子(ソケット)を示す他の手段を介して、RTSPListenerオブジェクトに対するイベントを特定することができる。次に、Pollerは、再開を命令されるまで、RTSPListenerソケットのポーリングを自動的に停止する。
【0073】
状態422で、CreateTask()メソッドが、場合により、Taskオブジェクトの一環として実行され、RTSP接続を受け入れる。受入れ手続きの一環として、接続に対して新しいソケットが生成される。
【0074】
状態424で、別のタイプのPollEventConsumer、すなわち、RTSPConnectionオブジェクトがインスタンス化される。このオブジェクトは、例えば、PollEventConsumerクラスのConnectionサブクラスから生成することができる。Listenerサブクラスと同様に、Connectionサブクラスは、CreateTask()メソッドを継承するが、機能性を追加することができる。この場合、Connectionサブクラスは、サーバによって確立された新しい制御接続を表し、RTSPConnectionクラスおよびRTSPConnectionオブジェクトは、特定タイプの制御接続を表す。RTSPConnectionオブジェクトは、状態422で生成されたソケットにおいて制御コマンドを聴取する。
【0075】
例として、前述したクライアント接続の扱い(すなわち、接続を受け入れる、ソケットを生成する、RTSPConnectionオブジェクトを作成する)は、単純な手続きであることが可能であり、その場合、CreateTask()メソッドの呼出しが、新しいTaskオブジェクトを生成しなくてもよい。ただし、以下に説明するとおり、他のイベントが、より複雑な手続きを必要とする可能性があり、その場合、TaskオブジェクトおよびTaskQueueの使用が妥当である可能性がある。
【0076】
状態426において、RTSPリスナ・ソケットに関して前述したのと同様の手続きで、新しいRTSP接続のためのソケットがPollerに登録され、PollTableに記入される。また、Pollerが、RTSPConnectionソケットのポーリングを開始するように命令を受ける。
【0077】
状態428で、メディア・コマンドが、RTSP接続を介してサーバにおいてRTSPConnectionオブジェクトによって登録されたソケットに受信される。前述したとおり、PollTableスレッドが呼び起こされ、イベントを検出し、担当のPollEventConsumerオブジェクト(すなわち、RTSPConnection)を特定する。
【0078】
状態430で、RTSPConnectionのCreateTask()メソッドが呼び出される。RTSPTaskオブジェクトが作成され、コマンドを扱う、または処理するための必要な情報(例えば、イベントのタイプ、およびイベントが受け取ったソケット)を備える。
【0079】
状態432で、RTSPTaskが、タスク待ち行列に入れられ、最終的に取り出されて実行される。例として、タスク待ち行列がFIFO待ち行列として動作し、タスクに割り振るためのスレッドのプールを有することが可能である。タスク待ち行列は、扱われる様々なタイプのイベントに応じて様々なタイプのタスクを受け入れることができる。別法では、異なるタスク待ち行列を異なるタイプのタスクを受け入れるように構成することが可能である。コマンド(例えば、記述する、再生する、一時停止する、取り払う)に応じて、異なるアクションを実行することが可能である。例として、このイベントが完了する前に追加のイベント(例えば、コマンド)がRTSPConnectionソケットで受け取った場合、その追加のイベントが、同じRTSPTaskオブジェクトによって処理されることが可能である。
【0080】
RTSPTaskは、完了したとき、状態434でPollerにRTSPConnectionソケットのポーリングを再開するよう命令する。
【0081】
図4に関連して説明した手続きは、メディア・ストリーミング・サーバに受け取ったイベントを扱う一方法に過ぎないことが、当分野の技術者には理解されよう。有利なことに、この方法を実施するのに必要とされるプロセッサ・スレッドの数は、イベントを扱う従来の方法と比べて限られたものであり、したがって、非クライアント・イベントのためにより多くのシステム・リソースを残す。詳細には、各クライアント・メディア・ストリームごとに複数の専用ソケットを作成し、スレッドを各ソケットに割り振るのではなく、1つのスレッドが、複数のソケットにおけるイベントを検出するのを担うことが可能である。さらに、それぞれに別々のスレッドが割り振られた複数のPollTableを使用することができるため、各ソケットに十分な注意が払われることになる。したがって、示した方法は、非常に拡張可能性が高い。
【0082】
本発明の実施形態の以上の説明は、例示および説明の目的でだけ提示してきた。以上の説明は、すべてを網羅するもの、または本発明を開示した形態に限定するものではない。多くの変更形態および変形形態が当分野の技術者には明白であろう。したがって、以上の開示は、本発明を限定するものではなく、本発明の範囲は、頭記の特許請求の範囲によって定義される。
【図面の簡単な説明】
【図1】 本発明の実施形態によるメディアをストリーミングするように構成されたサーバを描いたブロック図である。
【図2】 本発明の実施形態による複数のクライアント接続の間で通信ソケットを共用するように構成されたメディア・ストリーミング・サーバの一構成を示すブロック図である。
【図3】 本発明の実施形態によるメディア・ストリーミングに関連するイベントを扱うように協働するプログラム・オブジェクトの一構成を描いた図である。
【図4A】 本発明の実施形態によるメディア・ストリーミング・イベントを扱う一方法を示す流れ図である。
【図4B】 本発明の実施形態によるメディア・ストリーミング・イベントを扱う一方法を示す流れ図である。

Claims (23)

  1. サーバ・クライアントにサービスを提供するように構成されたコンピュータ・サーバ中のソケットで受け取ったイベントを扱う方法であって、
    ソケットをポーリングして前記ソケットで受け取ったイベントを検出するように構成されたポーリング・モジュールを実行することと、
    それぞれのソケットがイベント・コンシューマに関連づけられている第1の複数のソケットを前記ポーリング・モジュールに登録することと、
    前記第1の複数のソケットのなかの第1のソケットにおいて第1のイベントが受け取られたとき、第1のソケットに関連付けられている第1のイベント・コンシューマに通知することと、
    該第1のイベント・コンシューマが前記第1のイベントを扱うタスクを呼び出すことと
    を含み、
    前記コンピュータ・サーバはストリーミング・サーバであり、前記ソケットは、
    前記サーバ・クライアントからのストリーミング要求を受信するためのRTSPソケットであって該サーバ・クライアント専用のRTSPソケットと、
    前記ストリーミング・サーバによって該要求にしたがったストリーミングを開始するためのRTPソケットであって、複数のサーバ・クライアントに共有されるRTPソケットと
    を有している方法。
  2. 前記サーバ・ソケットは、さらに、サーバ・クライアントとストリーミング・サーバとの間で、品質情報を交換するためのRTCPソケットであって、複数のサーバ・クライアントに共有されるRTCPソケットを含む請求項1に記載の方法。
  3. 前記ポーリングのために前記第1の複数のソケットの間で第1のプロセッサ・スレッドが共用され、
    前記イベント・コンシューマによって呼び出されたタスクの前記実行に1つまたは複数のプロセッサ・スレッドが割り振られる請求項2に記載の方法。
  4. 前記ポーリング・モジュールに第2の複数のソケットが登録され、前記第2の複数のソケットの中の前記ソケットの各々が、イベント・コンシューマに関連付けられることをさらに含み、
    前記第2の複数のソケットの間で第2のプロセッサ・スレッドが共用される請求項に記載の方法。
  5. 前記イベント・コンシューマが、プログラム・オブジェクトであり、かつ前記イベント・コンシューマの各々が、 接続要求イベントを扱うように構成されたリスナ・コンシューマ、 メディア・ストリーミング・コマンド・イベントを扱うように構成された接続コンシューマ、およびメディア・ストリーム品質イベントを扱うように構成されたレシーバ・コンシューマのセットのなかのどれかである、
    前記リスナ・コンシューマ、前記接続コンシューマ、および前記レシーバ・コンシューマが、単一イベント・コンシューマ・インターフェース・クラスの実装形態である請求項に記載の方法。
  6. 前記第1のイベントが、クライアントからの接続要求を含み、前記第1のイベント・コンシューマが、前記接続要求に応答して第2のソケットを介してクライアント接続を確立するように構成されたリスナ・イベント・コンシューマである請求項3に記載の方法。
  7. 前記第1のイベントが、メディア・ストリーミング・コマンドを含み、前記第1のイベント・コンシューマが、前記メディア・ストリーミング・コマンドを実行するように構成された接続コンシューマである請求項に記載の方法。
  8. 前記第1のイベントが、メディア・ストリーム品質情報を含み、かつ前記第1のイベント・コンシューマが、前記メディア・ストリーム品質情報に従って前記メディア・ストリームを調整するように構成されたレシーバ・コンシューマである請求項に記載の方法。
  9. クライアントにメディアをストリーミングするように構成されたサーバによって受け取られるイベントを扱う方法であって、
    前記サーバの登録されたソケット受け取られるイベントを検出するよう1つまたは複数の登録されたソケットをポーリングすることであってそれぞれの登録されたソケットは前記受け取られるイベントを扱うように構成されたイベント・コンシューマに関連している、ポーリングすることと、
    特定のクライアントに専用の第1のソケットにおいて該特定のクライアントからのストリーミングの要求を第1の接続を介して受け取ることと、
    前記要求、前記第1のソケットに関連している第1のイベント・コンシューマに通知することと、
    前記要求に応答して確立された第2の接続を介して前記メディアのストリーミングを開始するための第2のソケットであって複数のクライアントによって共有される第2のソケットを登録することと、
    を含方法。
  10. 前記要求に応答して確立された第3の接続を介してストリーミングされるメディアの品質に関するデータを受け取るための第3のソケットであって複数のクライアントによって共有される第3のソケットを登録すること
    をさらに含む請求項に記載の方法。
  11. コンピュータによって実行されたとき、クライアントにメディアをストリーミングするように構成されたサーバによって受け取られるイベントを扱う方法を、前記コンピュータに行わせる命令を記憶するコンピュータ可読記憶媒体であって、前記方法が、
    前記サーバに受け取られたイベントに関して1つまたは複数の登録されたサーバ・ソケットをポーリングすることであってそれぞれの登録されたソケットは前記受け取ったイベントを扱うように構成されたイベント・コンシューマに関連している、ポーリングすることと、
    特定のクライアント専用の第1のソケットにおいて該特定のクライアントからのストリーミング要求を第1の接続を介して受け取ることと、
    前記ストリーミング要求を、該第1のソケットに関連している第1のイベント・コンシューマに通知することと、
    前記ストリーミング要求に応答して確立された第2の接続を介してメディアストリーミングするための第2のソケットであって複数のクライアントによって共有される第2のソケットを登録することと、
    を含む、媒体。
  12. 前記方法が、前記ストリーミング要求に応答して確立された第3の接続を介して前記クライアントにストリーミングされるメディアの品質に関するデータを受け取るようための第3のソケットであって複数のクライアントによって共有される第3のソケットを登録すること、をさらに含む、媒体。
  13. サーバ中のサーバ・ソケットで受け取ったイベントを扱うためのデータ構造を含むコンピュータ可読記憶媒体であって、前記データ構造が、
    イベントを受け取るように確立されたサーバ・ソケットを特定するようにそれぞれが構成された複数のソケット識別子と、
    前記ソケットの各々に関連づけられたイベント・コンシューマであって、1組のタスクを呼び出すことによってイベントを扱うように構成されたイベント・コンシューマを特定するためのリファレンスと
    を含み、
    前記イベントを受け取ったサーバ・ソケットのソケット識別子を得るために前記複数のソケットの間で単一のプロセッサ・スレッドが共用され、
    前記得られたソケット識別子を持つサーバ・ソケットに関連づけられたイベント・コンシューマであって前記リファレンスによって特定されたイベント・コンシューマによって呼び出された前記タスクの前記実行に1組のプロセッサ・スレッドが割り振られるよう構成され、
    さらに、
    前記サーバはメディア・ストリーミング・サーバであり、前記サーバ・ソケットは、
    サーバ・クライアントからのストリーミング要求を受信するためのRTSPソケットであって該サーバ・クライアント専用のRTSPソケットと、
    前記ストリーミング・サーバによって該要求にしたがったストリーミングを開始するためのRTPソケットであって、複数のサーバ・クライアントに共有されるRTPソケットと
    を有する媒体。
  14. 前記サーバ・ソケットは、さらに、サーバ・クライアントとストリーミング・サーバとの間で、品質情報を交換するためのRTCPソケットであって、複数のサーバ・クライアントに共有されるRTCPソケットを含む、請求項13に記載の媒体。
  15. メディア・ストリーミング・イベントを扱うための装置であって、
    クライアントからメディア・ストリーミング・イベントを受け取るように構成されたソケットをポーリングするように構成されたポーリング・モジュールと、
    前記ポーリング・モジュールによってポーリングされる第1のセットのソケットを含むポールテーブルと、
    前記第1のセットのソケットのなかの第1のソケットを介してメディア・ストリーミング制御接続の要求を受信し、前記第1のセットのソケットのなかの第2のソケットを介して前記要求されたメディア・ストリーミング制御接続を確立するように構成されたリスナ・モジュールと、
    前記第2のソケットを介してメディア・ストリーミング・コマンドを受け取るように構成された接続モジュールと、
    メディアをストリーミングするように構成された第3のソケットと
    を含み、
    前記第2のソケットが特定のクライアント専用であり、前記第3のソケットが複数のクライアントに共有される装置。
  16. さらに、複数のクライアントに共有される第4のソケットであって、クライアントに品質情報を送るための第4のソケットを有した請求項15記載の装置。
  17. メディア・ストリームに関する品質情報を受け取るように構成されたレシーバ・モジュールをさらに含む請求項15に記載の装置。
  18. 前記第3のソケットを介して前記クライアントにストリーミングを行うため、メディア・サーバからメディアを受け取るように構成されたレシーバ・モジュールをさらに含む請求項15に記載の装置。
  19. 前記リスナ・モジュールおよび前記接続モジュールのどちらかによって呼び出されたタスクを待ち行列に入れるように構成されたタスク待ち行列をさらに含み、前記タスク待ち行列の中に入れられたタスクを実行するために1組のスレッドが割り振られる請求項15に記載の装置。
  20. 前記第2のソケットを作成するように前記リスナ・モジュールによって呼び出されるタスク・モジュールをさらに含む請求項15に記載の装置。
  21. 前記接続モジュールを作成するように前記リスナ・モジュールによって呼び出されるタスク・モジュールをさらに含む請求項15に記載の装置。
  22. 前記メディア・ストリーミング・コマンドを実行するように前記接続モジュールによって呼び出されるタスク・モジュールをさらに含む請求項15に記載の装置。
  23. 前記リスナ・モジュールおよび前記接続モジュールが、メディア・ストリーミング・イベントを受け取るように構成されたプログラム・オブジェクト・クラスから生成されるプログラム・オブジェクトである請求項15に記載の装置。
JP2001574613A 2000-04-08 2001-04-06 サーバ・ソケットで受け取ったイベントを扱うための方法および装置 Expired - Lifetime JP4654407B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US19575600P 2000-04-08 2000-04-08
US60/195,756 2000-04-08
PCT/US2001/011139 WO2001077826A2 (en) 2000-04-08 2001-04-06 Method and apparatus for handling events received at a server socket

Publications (2)

Publication Number Publication Date
JP2003530639A JP2003530639A (ja) 2003-10-14
JP4654407B2 true JP4654407B2 (ja) 2011-03-23

Family

ID=22722664

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001574613A Expired - Lifetime JP4654407B2 (ja) 2000-04-08 2001-04-06 サーバ・ソケットで受け取ったイベントを扱うための方法および装置

Country Status (5)

Country Link
US (1) US7051337B2 (ja)
EP (1) EP1272930B1 (ja)
JP (1) JP4654407B2 (ja)
AU (1) AU2001255235A1 (ja)
WO (1) WO2001077826A2 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6904459B1 (en) * 2000-03-14 2005-06-07 Microsoft Corporation Methods and systems for preventing socket flooding during denial of service attacks
US7069313B2 (en) * 2000-03-14 2006-06-27 Microsoft Corporation Methods and systems for preventing socket flooding during denial of service attacks
US6922727B2 (en) * 2001-06-26 2005-07-26 International Business Machines Corporation Method and system for managing parallel data transfer through multiple sockets to provide scalability to a computer network
US20030084164A1 (en) * 2001-10-29 2003-05-01 Mazzitelli John Joseph Multi-threaded server accept system and method
US8667165B2 (en) * 2002-01-11 2014-03-04 International Business Machines Corporation Dynamic modification of application behavior in response to changing environmental conditions
AU2003230883A1 (en) * 2002-04-16 2003-11-03 Thomson Licensing S.A. Method, apparatus and system for supporting multiple collaborative sessions in a bi-directional communication device
US10051092B2 (en) * 2002-10-15 2018-08-14 Rockwell Collins, Inc. Method and device for transparent interception of socket connections
US7467390B2 (en) * 2003-04-01 2008-12-16 International Business Machines Corporation Enhanced staged event-driven architecture
US7493398B2 (en) * 2003-04-16 2009-02-17 Microsoft Corporation Shared socket connections for efficient data transmission
US7653912B2 (en) * 2003-05-30 2010-01-26 Steven Frank Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations
US20040260827A1 (en) * 2003-06-19 2004-12-23 Nokia Corporation Stream switching based on gradual decoder refresh
WO2005008430A2 (en) * 2003-07-11 2005-01-27 Computer Associates Think, Inc. System and method for standardizing clocks in a heterogeneous networked environment
US7363369B2 (en) * 2003-10-16 2008-04-22 International Business Machines Corporation Monitoring thread usage to dynamically control a thread pool
WO2005050433A1 (ja) * 2003-11-19 2005-06-02 National Institute Of Information And Communications Technology ネットワーク回線を用いたアナログ信号入出力システム
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
CN100377536C (zh) * 2004-07-30 2008-03-26 Ut斯达康通讯有限公司 用于流媒体服务的负载模拟器以及负载模拟系统
US7565662B2 (en) * 2004-09-24 2009-07-21 International Business Machines Corporation Program agent initiated processing of enqueued event actions
KR100953004B1 (ko) * 2005-03-05 2010-04-14 인텔 코오퍼레이션 서버측 tftp 흐름 제어
US8417825B2 (en) * 2005-03-09 2013-04-09 Apple Inc. Communications handles and proxy agents
US20070121822A1 (en) * 2005-11-01 2007-05-31 Victor Carnale Methods and apparatus to allow multiple clients to access a computer telephony interface server
US7925769B2 (en) * 2005-11-23 2011-04-12 International Business Machines Corporation Media flow converter for use in real-time delivery transactions
US20070198993A1 (en) * 2006-02-06 2007-08-23 Zhongyao Zhang Communication system event handling systems and techniques
US8499044B2 (en) * 2006-12-07 2013-07-30 Microsoft Corporation Formatted message processing utilizing a message map
US20080167127A1 (en) * 2007-01-05 2008-07-10 Microsoft Corporation Integration of Media on Gaming Consoles
US20080167128A1 (en) * 2007-01-05 2008-07-10 Microsoft Corporation Television Viewing on Gaming Consoles
US20090063687A1 (en) * 2007-08-28 2009-03-05 Red Hat, Inc. Hybrid connection model
US8468541B2 (en) * 2007-08-28 2013-06-18 Red Hat, Inc. Event driven sendfile
US8006005B2 (en) * 2007-09-21 2011-08-23 Mitel Networks Corporation Centralized polling service
US9516128B2 (en) 2007-12-13 2016-12-06 International Business Machines Corporation Generic remote connection to a command line interface application
US20090157891A1 (en) * 2007-12-13 2009-06-18 General Instrument Corporation Method and Apparatus for Inserting Time-Variant Data into a Media Stream
EP2141860B1 (en) * 2008-07-04 2016-02-24 Alcatel Lucent Method for monitoring events in a communication network
US8352623B2 (en) * 2008-09-17 2013-01-08 International Business Machines Corporation System for energy efficient computer management environment via tightly integrated target status and directed work sessions
CN101448006B (zh) * 2008-12-25 2012-01-11 中兴通讯股份有限公司 一种实现流媒体服务器大量终端接入的方法及系统
US8381233B2 (en) * 2010-05-11 2013-02-19 Microsoft Corporation Extensibility model for stream-based operators and aggregates
FR2984554B1 (fr) * 2011-12-16 2016-08-12 Sagemcom Broadband Sas Bus logiciel
US10228976B2 (en) * 2012-05-01 2019-03-12 Keysight Technologies Singapore (Holdings) Pte. Ltd. Methods, systems, and computer readable media for balancing incoming connections across multiple cores
EP3125125A4 (en) 2014-03-24 2018-07-25 Square Enix Co., Ltd. Interactive system, terminal device, server device, control method, program, and recording medium
US9778963B2 (en) * 2014-03-31 2017-10-03 Solarflare Communications, Inc. Ordered event notification
CN104702534B (zh) * 2015-03-30 2018-02-06 无锡天脉聚源传媒科技有限公司 一种实现多进程共享端口的数据处理的方法及装置
CN106776057B (zh) * 2016-11-22 2020-04-17 北京云知声信息技术有限公司 事件处理方法及装置
CN107766566A (zh) * 2017-11-08 2018-03-06 四川长虹电器股份有限公司 一种处理实时大批量推送数据入库的方法
CN109814996B (zh) * 2019-01-04 2024-03-22 平安科技(深圳)有限公司 流媒体传输控制方法、装置及存储介质、计算机设备
CN112995198B (zh) * 2021-03-29 2023-04-28 中信银行股份有限公司 一种基于socket的短连接通信方法和装置
CN115567733B (zh) * 2022-11-15 2023-02-07 易方信息科技股份有限公司 基于sdk的直播间切换方法、装置、终端以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09258993A (ja) * 1995-10-27 1997-10-03 Sun Microsyst Inc コンピュータシステム
JPH10320220A (ja) * 1997-03-28 1998-12-04 Internatl Business Mach Corp <Ibm> 記述子を転送する方法および装置
JP2000020328A (ja) * 1998-06-26 2000-01-21 Digital Vision Laboratories:Kk 通信方法、分散処理装置とその方法、ネットワークシステムおよびノード装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69232164T2 (de) * 1991-08-22 2002-07-18 Sun Microsystems Inc Netzwerkvideoanbietergerät und-verfahren
US5535878A (en) * 1995-05-19 1996-07-16 Lawson Displays Limited Ring holder
US5737531A (en) * 1995-06-27 1998-04-07 International Business Machines Corporation System for synchronizing by transmitting control packet to omit blocks from transmission, and transmitting second control packet when the timing difference exceeds second predetermined threshold
US5778182A (en) * 1995-11-07 1998-07-07 At&T Corp. Usage management system
US5751280A (en) * 1995-12-11 1998-05-12 Silicon Graphics, Inc. System and method for media stream synchronization with a base atom index file and an auxiliary atom index file
US5828882A (en) * 1996-03-15 1998-10-27 Novell, Inc. Event notification facility
US6064379A (en) 1996-06-24 2000-05-16 Sun Microsystems, Inc. System and method for synchronizing presentation of media stream playlists with real time
US6029194A (en) 1997-06-10 2000-02-22 Tektronix, Inc. Audio/video media server for distributed editing over networks
US6513152B1 (en) * 1997-07-23 2003-01-28 International Business Machines Corporation Object oriented framework mechanism for customization of object oriented frameworks
US6574661B1 (en) * 1997-09-26 2003-06-03 Mci Communications Corporation Integrated proxy interface for web based telecommunication toll-free network management using a network manager for downloading a call routing tree to client
US6260077B1 (en) * 1997-10-24 2001-07-10 Sun Microsystems, Inc. Method, apparatus and program product for interfacing a multi-threaded, client-based API to a single-threaded, server-based API
US6421711B1 (en) * 1998-06-29 2002-07-16 Emc Corporation Virtual ports for data transferring of a data storage system
US6584093B1 (en) * 1998-08-25 2003-06-24 Cisco Technology, Inc. Method and apparatus for automatic inter-domain routing of calls
US6735634B1 (en) * 1999-06-10 2004-05-11 Blue Coat Systems Method for real time protocol media recording
US6463454B1 (en) * 1999-06-17 2002-10-08 International Business Machines Corporation System and method for integrated load distribution and resource management on internet environment
US6771644B1 (en) * 1999-09-17 2004-08-03 Lucent Technologies Inc. Program insertion in real time IP multicast
US6778653B1 (en) * 1999-11-09 2004-08-17 Nortel Networks Limited Storing information about a telephony session
US20020112076A1 (en) * 2000-01-31 2002-08-15 Rueda Jose Alejandro Internet protocol-based computer network service
US8463839B2 (en) * 2000-03-28 2013-06-11 Cybernet Systems Corporation Distributed computing environment
US6763392B1 (en) * 2000-09-29 2004-07-13 Microsoft Corporation Media streaming methods and arrangements
US6871213B1 (en) * 2000-10-11 2005-03-22 Kana Software, Inc. System and method for web co-navigation with dynamic content including incorporation of business rule into web document
US20020120716A1 (en) * 2000-12-22 2002-08-29 Balaji Raghunathan Server frame work for a database server
US6801604B2 (en) * 2001-06-25 2004-10-05 International Business Machines Corporation Universal IP-based and scalable architectures across conversational applications using web services for speech and audio processing resources
ATE443970T1 (de) * 2001-12-11 2009-10-15 Ericsson Telefon Ab L M Methode des rechtmanagements für strömende media

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09258993A (ja) * 1995-10-27 1997-10-03 Sun Microsyst Inc コンピュータシステム
JPH10320220A (ja) * 1997-03-28 1998-12-04 Internatl Business Mach Corp <Ibm> 記述子を転送する方法および装置
JP2000020328A (ja) * 1998-06-26 2000-01-21 Digital Vision Laboratories:Kk 通信方法、分散処理装置とその方法、ネットワークシステムおよびノード装置

Also Published As

Publication number Publication date
EP1272930A1 (en) 2003-01-08
WO2001077826A3 (en) 2003-03-06
AU2001255235A1 (en) 2001-10-23
US20010029548A1 (en) 2001-10-11
EP1272930B1 (en) 2015-05-20
JP2003530639A (ja) 2003-10-14
US7051337B2 (en) 2006-05-23
WO2001077826A2 (en) 2001-10-18

Similar Documents

Publication Publication Date Title
JP4654407B2 (ja) サーバ・ソケットで受け取ったイベントを扱うための方法および装置
CN101247332B (zh) 带宽请求系统、带宽请求装置、客户装置、带宽请求方法、内容播放方法
US7073191B2 (en) Streaming a single media track to multiple clients
WO2018219048A1 (zh) 一种直播方法、系统以及相关设备
WO2019019370A1 (zh) 一种音视频的直播处理方法、存储介质和一种移动终端
EP1311122A2 (en) Using NAS appliance to build a non-conventional distributed video server
WO2020043104A1 (zh) 视频投屏方法、装置、计算机设备及存储介质
CN108965372A (zh) 一种服务调度方法和装置
TW200818828A (en) Reliable messaging using redundant message streams in a high speed, low latency data communications environment
JP2019537158A (ja) リソース共有方法、装置およびシステム
US20050256985A1 (en) Sending progress information of other users for transmitted shared content
US8812718B2 (en) System and method of streaming data over a distributed infrastructure
US10284381B1 (en) Low latency data distribution in a computing service environment
CN109756705A (zh) 一种终端离线告警的方法以及装置
CN110475125A (zh) 视频转码方法和装置
WO2022241990A1 (zh) 一种媒体传输链路管理方法、装置及存储介质
WO2020124726A1 (zh) 音视频流分发系统中的音视频流分发方法及动态父节点
EP1707005A1 (en) Using a presence status in a media-on-demand system
CN110049280A (zh) 监控数据的处理方法和装置
US20040006627A1 (en) Content delivery system
WO2020082839A1 (zh) 报文处理方法、相关设备及计算机存储介质
WO2023273713A1 (zh) 多播广播业务的通信方法、装置、介质及电子设备
CN102932428B (zh) 设备链接
Wang et al. Design and Implementation of Distributed Video Live-Streaming System Based on SRS
TW200950439A (en) Multimedia file transferring method and system thereof

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100609

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101124

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20101126

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101201

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

Free format text: PAYMENT UNTIL: 20140107

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4654407

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term