パッケージnet.user1.reactor
クラスpublic class ConnectionManager
継承ConnectionManager Inheritance flash.events.EventDispatcher

バージョン : Reactor 1.0.0

ConnectionManagerクラスはReactorアプリケーションによるUnionサーバーへの全接続を管理します。 大体のアプリケーションでは、ConnectionManagerクラスは直接には使用されません。 代わりにUnionサーバーへの接続はReactorクラスのconnect()メソッドを用いて行われ、切断はReactorクラスのdisconnect()メソッドによって要求されます。 しかしながら、ConnectionManagerは接続プロセスにおいて、Reactorクラスが可能な分よりも多くの制御を提供します。 特に、ConnectionManagerは次の機能を提供します。

ReactorアプリケーションのConnectionManagerにアクセスするには、次のようにReactorクラスのgetConnectionManager()メソッドを使用してください:

   var reactor:Reactor = new Reactor();
   var connectionManager:ConnectionManager = reactor.getConnectionManager();
   

関連項目

Reactor.connect()
Reactor.disconnect()
Reactor.getConnectionManager()
ConnectionManagerEvent
IConnection
ConnectionEvent.SEND_DATA
ConnectionEvent.RECEIVE_DATA


パブリック プロパティ
 プロパティ定義元
  DEFAULT_READY_TIMEOUT : int = 10000
[静的]
ConnectionManager
パブリック メソッド
 メソッド定義元
  
ConnectionManager
  
addConnection(connection:IConnection):void
このConnectionManagerの接続リストに新しいIConnectionオブジェクトを追加します。
ConnectionManager
  
connect():void
現在指定されている接続オブジェクトのリストを使用してUnionサーバーへの接続を試行します。
ConnectionManager
  
disconnect():void
サーバーへの全ての接続を終了させます。
ConnectionManager
  
dispose():void
このオブジェクトを永久に無効化し、その全リソースを解放します。
ConnectionManager
  
接続が現在接続中の場合、getActiveConnection()はその接続を返します。 そうでない場合、getActiveConnection()はnullを返します。
ConnectionManager
  
getAffinity(host:String):String
指定されたホストへの接続が要求されたときに使用されるであろう実際のサーバーアドレスを返します。
ConnectionManager
  
このConnectionManagerオブジェクトが前回の接続成功以降、接続の試行を進行中に何回中断したかを示すint値を返します。
ConnectionManager
  
このConnectionManagerオブジェクトが前回の正常な接続の確立以降、接続を何回試行したかを示すint値を返します。
ConnectionManager
  
このConnectionManagerオブジェクトが前回の正常な接続の確立以降、接続の試行に何回失敗したかを示すint値を返します。
ConnectionManager
  
ConnectionManagerの接続リストの一時的なスナップショットを配列で返します。
ConnectionManager
  
ConnectionManagerの現在の状態を表すint値を返します。
ConnectionManager
  
接続が現在進行中な場合、getInProgressConnection()はその接続を返します。そうでない場合、getInProgressConnection()はnullを返します。
ConnectionManager
  
このConnectionManagerオブジェクトがサーバーへの有効な接続の確立に成功した回数を示すint値を返します。
ConnectionManager
  
それぞれのIConnectionオブジェクトがセットアップフェイズを完了するためのUnionサーバーへの接続試行を許可する最大回数です。
ConnectionManager
  
isReady():Boolean
ConnectionManagerが現在Unionサーバーへのアクティブな接続を持っているかどうかを示すBoolean値です。
ConnectionManager
  
このConnectionManagerの接続リストから全てのIConnectionオブジェクトを除去します。
ConnectionManager
  
removeConnection(connection:IConnection):Boolean
このConnectionManagerの接続リストから指定したIConnectionオブジェクトを除去します。
ConnectionManager
  
setGlobalAffinity(enabled:Boolean):void
現クライアントのConnectionManagerがグローバルサーバーアフィニティを使用するか、ローカルサーバーアフィニティを使用するかを指定します。
ConnectionManager
  
setReadyTimeout(milliseconds:int):void
それぞれのIConnectionオブジェクトがセットアップフェイズを完了するためのUnionサーバーへの接続試行を許可する最大回数をセットします。
ConnectionManager
Events
 Event Summary 定義元
   ConnectionManagerによる接続試行が開始するときにトリガーされるイベントです。ConnectionManager
   クライアントがアクティブな接続を閉じるときにトリガーされるイベントです。ConnectionManager
   ConnectionManagerによる接続試行が失敗するときにトリガーされるイベントです。ConnectionManager
   An event triggered when the ConnectionManager's state changes (e.g., from "CONNECTION_IN_PROGRESS" to "READY").ConnectionManager
   クライアントかサーバーのどちらかがアクティブな接続を閉じるときにトリガーされるイベントです。ConnectionManager
   ConnectionManagerの接続リスト内のIConnectionオブジェクトの一つがREADY状態を達成するときにトリガーされるイベントです。ConnectionManager
   ConnectionManagerが接続試行のためにIConnectionオブジェクトを選択するときにトリガーされるイベントです。ConnectionManager
   サーバーがアクティブな接続を閉じるときにトリガーされるイベントです。ConnectionManager
プロパティの詳細
DEFAULT_READY_TIMEOUTプロパティ
public static var DEFAULT_READY_TIMEOUT:int = 10000

コンストラクタの詳細
ConnectionManager()コンストラクタ
public function ConnectionManager(reactor:Reactor)



パラメータ
reactor:Reactor
メソッドの詳細
addConnection()メソッド
public function addConnection(connection:IConnection):void

バージョン : Reactor 1.0.0

このConnectionManagerの接続リストに新しいIConnectionオブジェクトを追加します。 接続リストはUnionサーバーへの接続時に試行されるべき接続を、リストへの追加順に指定します。 Unionサーバーへ接続するには、Reactorクラスのconnect()メソッドかConnectionManagerクラスのconnect()メソッドを使用してください。

パラメータ

connection:IConnection

関連項目

connect()メソッド 
public function connect():void

バージョン : Reactor 1.0.0

現在指定されている接続オブジェクトのリストを使用してUnionサーバーへの接続を試行します。 もしリスト中のいずれかの接続が成功した場合、ConnectionManagerはConnectionManagerEvent.READYイベントを送出し、ReactorオブジェクトはReactorEvent.READYイベントを送出します。 しかしながら、もしリストにある全ての接続が失敗した場合、ConnectionManagerはConnectionManagerEvent.CONNECT_FAILUREイベントを送出し、ReactorオブジェクトはReactorEvent.CLOSEイベントを送出します。

ConnectionManagerのconnect()メソッドを直接使用するアプリケーションは初めに最低でも一つのIConnectionオブジェクトをConnectionManagerに追加する必要があります。 例えば、

     var connectionManager:ConnectionManager = reactor.getConnectionManager();
     connectionManager.addConnection(new XMLSocketConnection("tryunion.com", 80));
     

一度接続が追加されると、connect()は次のように起動できます。

     connectionManager.connect();
     

接続は接続リストへの追加順に試行されます。 例えば、次のコードは"tryunion.com"ホストの80番ポートにXMLSocketConnectioの接続を試行するようにConnectionManagerに指示します。 もし接続の試行が失敗する場合、ConnectionManagerは次に同じポートに対してHTTPを使った接続を試行します。

     var connectionManager:ConnectionManager = reactor.getConnectionManager();
     connectionManager.addConnection(new XMLSocketConnection("tryunion.com", 80));
     connectionManager.addConnection(new HTTPConnection("tryunion.com", 80));
     connectionManager.connect();
     

ConnectionManagerがそのリストの次の接続に移行するときには、毎回ConnectionManagerEvent.SELECT_CONNECTIONイベントをトリガーします。

しかしながら、ConnectionManagerクラスのconnect()メソッドはほとんどのアプリケーションにとっては直接は使用されない点に留意してください。 代わりに、サーバーへ接続するには、アプリケーションは通常Reactorクラスのより便利なconnect()メソッドを使用します。connect()メソッドはその動作をConnectionManagerクラスのconnect()メソッドに任せます。 例えば、次の一行のコードは既に記述した四行と等価です。

     reactor.connect("tryunion.com", 80);
     

しかしながら、Reactorクラス版のconnect()はConnectionManagerのconnect()メソッドより項目が少ないために、複数の接続に対して複数のホストを指定することはできない点に注意してください。

関連項目

disconnect()メソッド 
public function disconnect():void

バージョン : Reactor 1.0.0

サーバーへの全ての接続を終了させます。 もし切断試行が成功する場合、ConnectionManagerはConnectionManagerEvent.CLIENT_KILL_CONNECTとConnectionManagerEvent.DISCONNECTイベントを送出し、ReactorオブジェクトはReactorEvent.CLOSEイベントを送出します。

関連項目

dispose()メソッド 
public function dispose():void

バージョン : Reactor 1.0.0

このオブジェクトを永久に無効化し、その全リソースを解放します。 dispose()がいったん呼び出されると、そのオブジェクトは二度と使用できません。 .swfファイルをアンロードする時に要求されるように、オブジェクトをメモリから排除する時のみdispose()を使用してください。 単にUnionサーバーから切断するには、dispose()ではなくdisconnect()を使用してください。

関連項目

getActiveConnection()メソッド 
public function getActiveConnection():IConnection

バージョン : Reactor 1.0.0

接続が現在接続中の場合、getActiveConnection()はその接続を返します。 そうでない場合、getActiveConnection()はnullを返します。

戻り値
IConnection
getAffinity()メソッド 
public function getAffinity(host:String):String

バージョン : Reactor 2.0.0

指定されたホストへの接続が要求されたときに使用されるであろう実際のサーバーアドレスを返します。 現クライアントがUnion Serverクラスターに接続するとき、および指定されたホストがクラスター内のサーバーノードへ接続要求を転送するDNSサーバーである場合、getAffinity()はそのサーバーノードのアドレス(パブリック名あるいはIP)を返します。 それと似たように、現クライアントがUnionサーバーのインスタンスへリダイレクトするDNSサーバーへ接続するとき、getAffinity()はそのインスタンスのアドレス(パブリック名あるいはIP)を返します。 現クライアントがUnionサーバーのインスタンスへ直接接続するとき、getAffinity()が返すアドレスは常に与えられたホストと一致します。

パラメータ

host:String

戻り値
String
getConnectAbortCount()メソッド 
public function getConnectAbortCount():int

バージョン : Reactor 1.0.0

このConnectionManagerオブジェクトが前回の接続成功以降、接続の試行を進行中に何回中断したかを示すint値を返します。

戻り値
int

関連項目

getConnectAttemptCount()メソッド 
public function getConnectAttemptCount():int

バージョン : Reactor 1.0.0

このConnectionManagerオブジェクトが前回の正常な接続の確立以降、接続を何回試行したかを示すint値を返します。

戻り値
int

関連項目

getConnectFailedCount()メソッド 
public function getConnectFailedCount():int

バージョン : Reactor 1.0.0

このConnectionManagerオブジェクトが前回の正常な接続の確立以降、接続の試行に何回失敗したかを示すint値を返します。 正常な接続が確立されるたびに、接続失敗カウントはゼロに戻ります。

戻り値
int

関連項目

getConnections()メソッド 
public function getConnections():Array

バージョン : Reactor 1.0.0

ConnectionManagerの接続リストの一時的なスナップショットを配列で返します。 配列の各要素はIConnectionオブジェクトです。

戻り値
Array
getConnectionState()メソッド 
public function getConnectionState():int

バージョン : Reactor 1.0.0

ConnectionManagerの現在の状態を表すint値を返します。 とりうる状態の一覧については、ConnectionStateクラスを参照してください。

戻り値
int — 接続状態を表すint値です。

関連項目

getInProgressConnection()メソッド 
public function getInProgressConnection():IConnection

バージョン : Reactor 1.0.0

接続が現在進行中な場合、getInProgressConnection()はその接続を返します。そうでない場合、getInProgressConnection()はnullを返します。

戻り値
IConnection
getReadyCount()メソッド 
public function getReadyCount():int

バージョン : Reactor 1.0.0

このConnectionManagerオブジェクトがサーバーへの有効な接続の確立に成功した回数を示すint値を返します。 このカウントはConnectionEvent.READYイベントが発生するときに増加します。

戻り値
int

関連項目

getReadyTimeout()メソッド 
public function getReadyTimeout():int

バージョン : Reactor 1.0.0

それぞれのIConnectionオブジェクトがセットアップフェイズを完了するためのUnionサーバーへの接続試行を許可する最大回数です。

戻り値
int

関連項目

isReady()メソッド 
public function isReady():Boolean

バージョン : Reactor 1.0.0

ConnectionManagerが現在Unionサーバーへのアクティブな接続を持っているかどうかを示すBoolean値です。

戻り値
Boolean — Returns Reactorが現在サーバーに接続中ならtrueを、そうでなければfalseを返します。
removeAllConnections()メソッド 
public function removeAllConnections():void

バージョン : Reactor 1.0.0

このConnectionManagerの接続リストから全てのIConnectionオブジェクトを除去します。 現在開かれている全ての接続は切断されます。 新たな接続がaddConnection()によって追加されるまで、これに続くconnect()やdisconnect()の呼び出しは失敗します。

関連項目

removeConnection()メソッド 
public function removeConnection(connection:IConnection):Boolean

バージョン : Reactor 1.0.0

このConnectionManagerの接続リストから指定したIConnectionオブジェクトを除去します。 現在接続されている場合、除去の前に切断されます。

パラメータ

connection:IConnection

戻り値
Boolean

関連項目

setGlobalAffinity()メソッド 
public function setGlobalAffinity(enabled:Boolean):void

バージョン : Reactor 2.0.0

現クライアントのConnectionManagerがグローバルサーバーアフィニティを使用するか、ローカルサーバーアフィニティを使用するかを指定します。 enabledがtrue(デフォルト)の時、サーバーアフィニティはグローバルにセットされ、ConnectionManagerは現在の環境の全クライアントに共有されたアフィニティ値を使用します。 enabledがfalseの時、サーバーアフィニティはローカルにセットされ、現クライアントのConnectionManagerはそれ自身の、個別のサーバーアフィニティを維持します。

例えば、二つのReactorインスタンスを持つクライアントアプリケーションを想像してみてください。それぞれがUnionサーバークラスターに接続するとします。 そのクラスターはラウンドロビンのDNSサーバーであるpool.example.comを通してアクセスされ、サーバーアフィニティはグローバルです。 最初のReactorインスタンスはpool.example.comに接続し、slave1.example.comにリダイレクトされます。 接続の際に、アフィニティアドレスであるslave1.example.comがホストであるpool.example.comに割り当てられます。 そして二つ目のReactorインスタンスが接続します。 アフィニティがグローバルであるため、二つ目のReactorインスタンスはホストpool.example.comに対してのアフィニティアドレスslave1.example.comを発見し、pool.example.comを完全にバイパスして直接slave1.example.comに接続します。

今度は同じアプリケーションがサーバーアフィニティをローカルにセットしたと想像してみてください。 最初のReactorインスタンスはpool.example.comに接続し、前のようにslave1.example.comにリダイレクトされます。 接続の際に、アフィニティアドレスであるslave1.example.comがホストであるpool.example.comに割り当てられます。 そして二つ目のReactorインスタンスが接続します。 アフィニティがローカルであるため、二つ目のReactorインスタンスはpool.example.comに対して確立されたアフィニティを持たず、そのためslave1.example.comではなくpool.example.comに接続します。 DNSサーバーであるpool.example.comは二つ目のReactorインスタンスをslave2.example.comにリダイレクトします。 接続の際に、アフィニティアドレスであるslave2.example.comが二つ目のReactorインスタンスのアフィニティマップ内のホストであるpool.example.comに割り当てられます。 サーバーのアフィニティ設定が指定されるまでの間、一つ目のReactorインスタンスはslave1.example.comと通信し、二つ目のReactorインスタンスはslave2.example.comと通信します。 一つ目のReactorインスタンスと二つ目のReactorインスタンスが両方ともslave1.example.comと通信する先のグローバルアフィニティの例と比べてみてください。

パラメータ

enabled:Boolean

setReadyTimeout()メソッド 
public function setReadyTimeout(milliseconds:int):void

バージョン : Reactor 1.0.0

それぞれのIConnectionオブジェクトがセットアップフェイズを完了するためのUnionサーバーへの接続試行を許可する最大回数をセットします。 IConnectionオブジェクトがUnionサーバーへの接続を試行するとき、クライアントセットアップのタスク(クライアントIDの発行など)が実行される間に"ハンドシェイク"プロセスを開始します。 セットアップのタスクが"readyタイムアウト"として知られる制限許可内に完了しない場合、IConnectionオブジェクトはセットアップのプロセスを失敗とみなし、接続の試行を自動的に中断します。 もし、一方で、クライアントセットアップのプロセスがready-timeoutの制限内で完了した場合、IConnectionオブジェクトはセットアップのプロセスを成功とみなし、接続が使用可能であることを示すConnectionEvent.READYイベントをトリガーします。 readyタイムアウトはデフォルトで10秒間ですが、setReadyTimeout()メソッドを通して変更できます。

一度IConnectionオブジェクトがready状態を達成すると、Reactorは規則的なハートビートメッセージを送信することでサーバーへの接続のモニターを続けます。 デフォルトでは、一つのハートビートメッセージは10秒毎に送信されますが、ハートビートメッセージの頻度はConnectionMonitorのsetHeartbeatFrequency()メソッドを通して設定できます。 もしUnionサーバーが一つのハートビートへの応答に60秒(デフォルト)より長くかかる場合、Reactorは自動的に切断を行います。 そのReactorが許容するハートビート応答時間を変更するには、ConnectionMonitorのsetConnectionTimeout()メソッドを使用してください。

パラメータ

milliseconds:int — ミリ秒で表した、接続がready状態を達成しなければならない時間です。

関連項目



次のコードはデフォルトのreadyタイムアウトを20秒の長さにします。 結果的に、Reactorはクライアントセットアップのプロセスが20秒以内に完了しないときはUnionサーバーから自動的に切断します。
     var reactor:Reactor = new Reactor();
     reactor.getConnectionManager().setReadyTimeout(20000);
     
Event Detail
BEGIN_CONNECT イベント
Event Object Type: ConnectionManagerEvent
ConnectionManagerEvent.type variable = net.user1.reactor.ConnectionManagerEvent.BEGIN_CONNECT

ConnectionManagerによる接続試行が開始するときにトリガーされるイベントです。 ConnectionManagerEvent.BEGIN_CONNECTイベントの後にはConnectionManagerEvent.SELECT_CONNECTIONイベントが続きます。これはConnectionManagerがその接続試行に用いる特定のIConnectionオブジェクトを示します。

関連項目

CLIENT_KILL_CONNECT イベント  
Event Object Type: ConnectionManagerEvent
ConnectionManagerEvent.type variable = net.user1.reactor.ConnectionManagerEvent.CLIENT_KILL_CONNECT

クライアントがアクティブな接続を閉じるときにトリガーされるイベントです。 ConnectionManagerEvent.CLIENT_KILL_CONNECTイベントの後には常にConnectionManagerEvent.DISCONNECTイベントが続きます。

関連項目

CONNECT_FAILURE イベント  
Event Object Type: ConnectionManagerEvent
ConnectionManagerEvent.type variable = net.user1.reactor.ConnectionManagerEvent.CONNECT_FAILURE

ConnectionManagerによる接続試行が失敗するときにトリガーされるイベントです。 接続失敗の一般的な原因:

ConnectionManagerEvent.CONNECT_FAILUREイベントはConnectionManagerがその接続リスト内の全ての接続を使用して接続試行を行って、そのうち一つも"ready"状態を達成しなかったときにConnectionManagerクラスによってトリガーされるイベントです。 便宜的に、接続試行が失敗するとき、ReactorオブジェクトもReactorEvent.CLOSEイベントを送出します。

関連項目

CONNECTION_STATE_CHANGE イベント  
Event Object Type: ConnectionManagerEvent
ConnectionManagerEvent.type variable = net.user1.reactor.ConnectionManagerEvent.CONNECTION_STATE_CHANGE

An event triggered when the ConnectionManager's state changes (e.g., from "CONNECTION_IN_PROGRESS" to "READY"). とりうる状態の一覧については、ConnectionStateクラスを参照してください。

The following example code registers for the CONNECTION_STATE_CHANGE event, and displays the ConnectionManager's new connection state in the output console.

     // Event registration
     reactor.getConnectionManager().addEventListener(
                         ConnectionManagerEvent.CONNECTION_STATE_CHANGE, 
                         connectionStateChangeListener);
     
     // Event listener definition
     function connectionStateChangeListener (e:ConnectionManagerEvent):void {
       trace("New connection state: " + getStateName(ConnectionManager(e.target).getConnectionState()));
     }
     
     // Helper function to translate numeric state codes to human-readable strings
     function getStateName (state:int):String {
       switch (state) {
         case -1:
           return "UNKNOWN";
         case 0:
           return "NOT_CONNECTED";
         case 1:
           return "READY";
         case 2:
           return "CONNECTION_IN_PROGRESS";
         case 3:
           return "DISCONNECTION_IN_PROGRESS";
         case 4:
           return "LOGGED_IN";
         default:
           return "UNRECOGNIZED STATE";
       }
     }
     

関連項目

DISCONNECT イベント  
Event Object Type: ConnectionManagerEvent
ConnectionManagerEvent.type variable = net.user1.reactor.ConnectionManagerEvent.DISCONNECT

クライアントかサーバーのどちらかがアクティブな接続を閉じるときにトリガーされるイベントです。 ConnectionManagerEvent.DISCONNECTには常にConnectionManagerEvent.CLIENT_KILL_CONNECTイベントかConnectionManagerEvent.SERVER_KILL_CONNECTのどちらかが先行します。これは切断がクライアントとサーバーのどちらから行われたかを示します。

関連項目

READY イベント  
Event Object Type: ConnectionManagerEvent
ConnectionManagerEvent.type variable = net.user1.reactor.ConnectionManagerEvent.READY

ConnectionManagerの接続リスト内のIConnectionオブジェクトの一つがREADY状態を達成するときにトリガーされるイベントです。 便宜的に、ConnectionManagerEvent.READYイベントは、次に、常にReactorEvent.READYイベントをトリガーします。 ready状態を達成した下層のIConnectionオブジェクトへの参照を取得するには、ConnectionManagerのgetActiveConnection()メソッドを使用してください。

関連項目

SELECT_CONNECTION イベント  
Event Object Type: ConnectionManagerEvent
ConnectionManagerEvent.type variable = net.user1.reactor.ConnectionManagerEvent.SELECT_CONNECTION

ConnectionManagerが接続試行のためにIConnectionオブジェクトを選択するときにトリガーされるイベントです。 接続を選択すると、その直後にConnectionManagerはその接続を試行します。 次に、そのIConnectionオブジェクト自体が、Unionに接続できたかどうかを示すそれ自身のConnectionEventを送出します。 もしそのIConnectionオブジェクト自体が接続できない場合、ConnectionManagerは自動的に次の利用可能なIConnectionオブジェクトに移ります。 もしConnectionManagerのリスト内のいずれかのIConnectionオブジェクトが接続に成功すると、ConnectionManagerは次にConnectionManagerEvent.READYイベントをトリガーします。 もし、一方で、IConnectionオブジェクトが一つも接続しなかった場合、ConnectionManagerはConnectionManagerEvent.CONNECT_FAILUREイベントをトリガーし、そのリスト内のどのIConnectionオブジェクトを通しても接続を確立できなかったことを示します。

新しいIConnectionオブジェクトをConnectionManagerの接続リストに加えるには、ConnectionManagerのaddConnection()メソッドを使用してください。

関連項目

SERVER_KILL_CONNECT イベント  
Event Object Type: ConnectionManagerEvent
ConnectionManagerEvent.type variable = net.user1.reactor.ConnectionManagerEvent.SERVER_KILL_CONNECT

サーバーがアクティブな接続を閉じるときにトリガーされるイベントです。 ConnectionManagerEvent.SERVER_KILL_CONNECTイベントの後には常にConnectionManagerEvent.DISCONNECTイベントが続きます。

関連項目