jp.wda.gpss.system
クラス RhinoJsSocklet

java.lang.Object
  拡張jp.wda.gpss.GeneralSocklet
      拡張jp.wda.gpss.system.ScriptSocklet
          拡張jp.wda.gpss.system.RhinoJsSocklet
すべての実装インタフェース:
AttributeContainer, InitParamContainer, java.io.Serializable, Socklet

public class RhinoJsSocklet
extends ScriptSocklet

[ OProject GPSS for FlashMX ] FlashMX用汎用ソケットサーバ
JavaScriptSockletクラス
このクラスは、JavaScriptによるサーバーサイドスクリプティングの試験実装です。
このクラスは、Mozilla Rhinoによる実装になっています。

以下の4つの関数をスクリプトファイルに定義することによって、 Sockletの動作を比較的容易に設定することができます。

function onInit() アプリケーション初期化処理を定義します。
function onConnect(client) クライアントの接続のチェックおよび初期化を定義します。
function onDisconnect(client) クライアント接続が切断される場合に実行する処理を定義します。
function onCommand(client,command) クライアントからデータを受信した場合に実行する処理を定義します。

スクリプトファイルはscriptsディレクトリ内に拡張子".rjs"で保存することにより、 サーバー起動時に自動的に読み込まれます。

作成者:
(・3・) ◆RTquCoolEE
関連項目:
直列化された形式

フィールドの概要
 
クラス jp.wda.gpss.GeneralSocklet から継承したフィールド
progress
 
コンストラクタの概要
RhinoJsSocklet()
           
 
メソッドの概要
 void addScriptSocklet(java.util.List links, java.lang.String sockletName, java.lang.String fileName)
          外部ScriptSockletを追加配備するメソッド。
 void addSocklet(java.util.List links, java.lang.String sockletName, java.lang.String className)
          外部Sockletを追加配備するメソッド。
 boolean allowAccessFromOtherSocklet(Socklet from)
          他のSockletからのアクセスを許可するかどうかを確認します。
 java.lang.Object call(java.lang.String functionName, java.lang.Object[] args)
          スクリプト関数を呼び出すメソッド。
 boolean checkConnection(SocketProcessor client)
          接続用初期コマンド受信後、クライアントの検査を行うためにメソッド。
 void destroy()
          Sockletがサービスを停止する際に、待受けメインサーバによって呼び出されます。
 boolean doCommand(SocketProcessor client, java.lang.String command)
          コマンドを処理するためのメソッド。
 java.lang.Object get(java.lang.String variableName)
          スクリプト変数を取得するメソッド。
 java.lang.Object[] getUsers()
          クライアント全員を取得します
 java.lang.Object[] getUsers(Finder finder)
          クライアント全員を取得します
 java.lang.Object[] getUsers(java.lang.String condition)
          クライアント全員を取得します
 boolean importSource(java.lang.String fileName)
          ファイルを読み込みスクリプトとして評価・実行するメソッド。
 void init(java.util.List linkedSocklets)
          ECMAScriptSockletを初期化するためのメソッド。
 void preRemoveClient(SocketProcessor client)
          クライアント削除前に呼び出されるメソッド。
 void send(java.lang.String message)
          クライアント全員にメッセージを送信します
 void send(java.lang.String message, Finder finder)
          検索条件で指定したユーザー全員にメッセージを送信します
 void send(java.lang.String message, java.lang.Object[] clients)
          指定したユーザー全員にメッセージを送信します
 void send(java.lang.String message, SocketProcessor client)
          指定したユーザーにメッセージを送信します
 void send(java.lang.String message, java.lang.String condition)
          検索条件で指定したユーザー全員にメッセージを送信します
static java.lang.Object sync(org.mozilla.javascript.Context cx, org.mozilla.javascript.Scriptable thisObj, java.lang.Object[] args, org.mozilla.javascript.Function funObj)
          排他的同期メソッドの定義を利用可能にするユーティリティメソッド
このメソッドを利用することで複数スレッドから安全に実行することのできる関数を 使用することが可能になります。
 
クラス jp.wda.gpss.GeneralSocklet から継承したメソッド
addClient, afterDeployedLinks, containsAttributeKey, containsClient, copyInfo, countClients, deployedBy, deployedBy, disconnectAllClients, getAllClients, getAttribute, getAttributeBoolean, getAttributeDouble, getAttributeInt, getAttributeKeys, getAttributeLong, getAttributes, getClients, getClients, getInitParam, getInitParamKeys, getInitParams, getInitParams, getMain, getName, getOtherSocklet, getTimeout, hasInitParam, init, init, log, log, log, log, memo, memo, memo, memo, preCreateFinder, removeAttribute, removeClient, sendToAllClients, sendToClients, sendToClients, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setMain, setTimeout
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

RhinoJsSocklet

public RhinoJsSocklet()
メソッドの詳細

init

public void init(java.util.List linkedSocklets)
ECMAScriptSockletを初期化するためのメソッド。
このメソッドは初期設定ファイルで指定されたスクリプトファイルを読み込み、 スクリプト関数onInit()を呼び出します。
このメソッドは、ソケット待受けサーバの起動時に、1回だけ呼ばれます。
またスクリプトに組み込みオブジェクトapplicationを設定します。 applicationオブジェクトを利用して、スクリプトからSocklet APIにアクセスすることが可能です。
ECMAScriptSockletの初期化作業が必要な場合は、スクリプト関数onInit()に記述してください。

オーバーライド:
クラス GeneralSocklet 内の init
パラメータ:
linkedSocklets - 自動的に追加配備したいSockletがある場合は、Socklet配備情報オブジェクトをこのListに追加してください。
関連項目:
GeneralSocklet.init()

checkConnection

public boolean checkConnection(SocketProcessor client)
接続用初期コマンド受信後、クライアントの検査を行うためにメソッド。
このメソッドは、サーバが新しいクライアントからの接続を確認した時点で、 そのクライアントを検査するために呼ばれます。
このメソッドはスクリプト関数onConnect(client)を呼び出します。

接続クライアントに対し一番初めに一回だけ呼ばれます。
SocketProcessor clientオブジェクトのメソッドを使用して、 この接続が適切であるか検査し、 またクライアントに必要な初期化情報を与えてください。
このクライアントが適切でないと判断された場合は、偽を返してください。 直ちにクライアントソケットを終了します。
その他の場合は、真を返してください。真を返すと、クライアントソケットを継続します。

定義:
インタフェース Socklet 内の checkConnection
オーバーライド:
クラス GeneralSocklet 内の checkConnection
パラメータ:
client - 接続を試みているクライアント
戻り値:
検査後、即切断する場合は偽。
関連項目:
SocketProcessor

preRemoveClient

public void preRemoveClient(SocketProcessor client)
クライアント削除前に呼び出されるメソッド。
接続中のクライアントが切断され、このアプリケーションから除外される直前に呼ばれます。
このメソッドはスクリプト関数onDisconnect(client)を呼び出します。

接続クライアントに対し、終了前に一回だけ呼ばれます。
他の接続中クライアントへ、このクライアントが切断されたことを通知するような場合は、 スクリプト関数onDisconnect(client)中で記述してください。

定義:
インタフェース Socklet 内の preRemoveClient
オーバーライド:
クラス GeneralSocklet 内の preRemoveClient
パラメータ:
client - これから削除されるクライアント
関連項目:
GeneralSocklet.preRemoveClient(SocketProcessor)

doCommand

public boolean doCommand(SocketProcessor client,
                         java.lang.String command)
コマンドを処理するためのメソッド。
接続中のクライアントから、コマンドが送信されてきたときに呼ばれます。 このメソッドはスクリプト関数onCommand(client, command)を呼び出します。

スクリプト関数onCommand(client, command)中で、 クライアントから送られてきたコマンドを処理してください。
クライアントの接続中に何度でも呼ばれます。

コマンドを送ってきたソケットに対して、メッセージを送信したい場合は、以下のメソッドを使用してください。

client.send(送信するメッセージ);

接続中の全クライアントへメッセージを送信したい場合は、以下のメソッドを使用してください。

application.sendToAllClients(送信するメッセージ);

また、特定のクライアントへのみメッセージを送りたい場合は、 以下のメソッドを使用してください。

application.sendToClients(送信するメッセージ, 送信したいクライアントの検索条件文);

ソケット接続を継続する場合はスクリプト関数onCommandで真を返してください。

パラメータ:
client - コマンドを送信してきたクライアントソケット
command - 受信したコマンド
戻り値:
コマンド実行に成功した場合は真、失敗した場合は偽 偽を返すと直ちにクライアントソケットを終了します。

destroy

public void destroy()
Sockletがサービスを停止する際に、待受けメインサーバによって呼び出されます。
Sockletの終了処理が必要な場合は、スクリプト関数onDestroy()を記述してください。

定義:
インタフェース Socklet 内の destroy
オーバーライド:
クラス GeneralSocklet 内の destroy
関連項目:
Socklet.destroy()

allowAccessFromOtherSocklet

public boolean allowAccessFromOtherSocklet(Socklet from)
他のSockletからのアクセスを許可するかどうかを確認します。 既定では、常にアクセスを許可しません。 Sockletによってアクセスを許可する場合は、スクリプト関数onSockletLink()を定義してください。 この接続を許可する場合は、真を返してください。

定義:
インタフェース Socklet 内の allowAccessFromOtherSocklet
オーバーライド:
クラス GeneralSocklet 内の allowAccessFromOtherSocklet
パラメータ:
from - 接続を試みているSocklet
戻り値:
検査後、接続を許可する場合は真。
関連項目:
Socklet.allowAccessFromOtherSocklet(Socklet)

importSource

public boolean importSource(java.lang.String fileName)
ファイルを読み込みスクリプトとして評価・実行するメソッド。
スクリプト中から呼び出すことで外部ファイルをインポートして、 利用することができます。
よく使う外部ライブラリの読み込みに利用できます。
スクリプトからの呼び出しは application.importSource(fileName)となります。

パラメータ:
fileName - 外部から読み込むスクリプトソースファイル名
戻り値:
読み込み・評価・実行に成功した場合は真、失敗した場合は偽

addSocklet

public void addSocklet(java.util.List links,
                       java.lang.String sockletName,
                       java.lang.String className)
外部Sockletを追加配備するメソッド。
スクリプト関数onInit()から呼び出すことで外部Sockletを配備します。 使用する場合は必ずonInit()内から呼び出してください。
スクリプトからの呼び出しは application.addSocklet(links, sockletName, className)となります。

パラメータ:
links - socklet配備リスト
sockletName - socklet配備名
className - sockletクラス名
戻り値:
なし

addScriptSocklet

public void addScriptSocklet(java.util.List links,
                             java.lang.String sockletName,
                             java.lang.String fileName)
外部ScriptSockletを追加配備するメソッド。
スクリプト関数onInit()から呼び出すことで外部ScriptSockletを配備します。 使用する場合は必ずonInit()内から呼び出してください。
スクリプトからの呼び出しは application.addScriptSocklet(links, sockletName, fileName)となります。

パラメータ:
links - socklet配備リスト
sockletName - socklet配備名
fileName - script sockletファイル名
戻り値:
なし

call

public java.lang.Object call(java.lang.String functionName,
                             java.lang.Object[] args)
スクリプト関数を呼び出すメソッド。
スクリプトからの呼び出しは application.call(functionName, args)となります。

パラメータ:
functionName - 呼び出すスクリプト関数
args - スクリプト関数へ引き渡す引数
戻り値:
関数の実行結果

get

public java.lang.Object get(java.lang.String variableName)
スクリプト変数を取得するメソッド。
スクリプトからの呼び出しは application.get(variableName)となります。

パラメータ:
variableName - 取得するスクリプト変数名
戻り値:
スクリプト変数値

send

public void send(java.lang.String message)
クライアント全員にメッセージを送信します

パラメータ:
message - 送信するメッセージ

send

public void send(java.lang.String message,
                 java.lang.String condition)
検索条件で指定したユーザー全員にメッセージを送信します

パラメータ:
message - 送信するメッセージ
condition - 送信するユーザーの検索条件

send

public void send(java.lang.String message,
                 Finder finder)
検索条件で指定したユーザー全員にメッセージを送信します

パラメータ:
message - 送信するメッセージ
finder - 送信するユーザーの検索条件を設定したFinder

send

public void send(java.lang.String message,
                 SocketProcessor client)
指定したユーザーにメッセージを送信します

パラメータ:
message - 送信するメッセージ
client - 送信対象のユーザー

send

public void send(java.lang.String message,
                 java.lang.Object[] clients)
指定したユーザー全員にメッセージを送信します

パラメータ:
message - 送信するメッセージ
clients - 送信対象のユーザー(SocketProcessor)配列

getUsers

public java.lang.Object[] getUsers()
クライアント全員を取得します

戻り値:
ユーザーの一覧を格納した配列

getUsers

public java.lang.Object[] getUsers(java.lang.String condition)
クライアント全員を取得します

パラメータ:
condition - 検索条件
戻り値:
ユーザーの一覧を格納した配列

getUsers

public java.lang.Object[] getUsers(Finder finder)
クライアント全員を取得します

パラメータ:
finder - 検索条件
戻り値:
ユーザーの一覧を格納した配列

sync

public static java.lang.Object sync(org.mozilla.javascript.Context cx,
                                    org.mozilla.javascript.Scriptable thisObj,
                                    java.lang.Object[] args,
                                    org.mozilla.javascript.Function funObj)
排他的同期メソッドの定義を利用可能にするユーティリティメソッド
このメソッドを利用することで複数スレッドから安全に実行することのできる関数を 使用することが可能になります。
この動作はJAVAのsynchronizedメソッドをシミュレートします。

使用例(Script)
 //関数funcを同期メソッド化して関数syncFuncを定義
var syncFunc = sync(func);

パラメータ:
cx -
thisObj -
args -
funObj -
戻り値: