jp.wda.gpss
クラス ColonCommandSocklet

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

public abstract class ColonCommandSocklet
extends CommandSocklet

[ OProject GPSS for FlashMX ] FlashMX用汎用ソケットサーバ
コロン区切りコマンド実行Socklet基底クラス

このSockletクラスはクライアントから送られてきたメッセージのうち、 最初のコロン:までをコマンドとして解釈します。
送られてきたメッセージが"XXXX:...."なら、
cmdXXXX(SocketProcessor, String, Object)
メソッドを実行します。
コマンド解析前に、preProcess(SocketProcessor client, String command)メソッドが実行されますので、 全てのメソッドに共通のルーチンはこのメソッドをオーバーライドすると便利です。
また、このメソッドの戻り値が、cmdXXXXメソッドの3番目の引数として渡されます。
オーバーライドしない場合は、常にnullが設定されます。

例えば、クライアントから"Notify:message=Test"と言うメッセージが送られてきた場合、 次のようなメソッドが実行されます。
cmdNotify(client, "message=Test", preprocessed)

指定されたコマンドのメソッドが定義されていない場合は、
cmdUndefined(SocketProcessor client, String command, Object[] params)
メソッドが呼ばれます。 paramsは、cmdXXXXメソッドへ渡す予定だった引数の配列です。
※上記例の場合なら、new Object[]{ client, "message=Test", preprocessed }になります。
未定義コマンドの処理を行なう場合は、このメソッドをオーバーライドしてください。

通常、コマンドの文字列は大文字小文字を区別せず、頭の1文字を大文字、それ以降を小文字として解釈しますが、 execIgnoreCase(SocketProcessor client)メソッドをオーバーライドし、 このメソッドの戻り値を偽にすると、大文字小文字を変更せずにメソッドを検索します。

コマンドリフレクションメソッドの戻り値は "true" / "false"の文字列型でもかまいませんし、int型でも構いませんが、 できるだけbooleanを返してください。
int型を返した場合は、0なら偽、それ以外なら真と解釈します。

このクラスをオーバーライドする方法は、NavalBattle Sockletのソースを参考にしてください。

導入されたバージョン:
1.00β007 2003/06/08
バージョン:
1.00α008 2003/06/14
作成者:
amoi
関連項目:
GeneralSocklet, 直列化された形式

入れ子クラスの概要
 
クラス jp.wda.gpss.CommandSocklet から継承した入れ子クラス
CommandSocklet.CommandInfo
 
フィールドの概要
static java.lang.Class[] clazz
          コマンドリフレクションメソッドの引数タイプ
 
クラス jp.wda.gpss.GeneralSocklet から継承したフィールド
progress
 
コンストラクタの概要
ColonCommandSocklet()
           
 
メソッドの概要
protected  CommandSocklet.CommandInfo parseCommand(SocketProcessor client, java.lang.String command, java.lang.Object preprocessed)
          送られてきたコマンドを解析し、メソッドをリフレクションするための情報を作成します。
 
クラス jp.wda.gpss.CommandSocklet から継承したメソッド
cmdUndefined, doCommand, execIgnoreCase, preProcess
 
クラス jp.wda.gpss.GeneralSocklet から継承したメソッド
addClient, afterDeployedLinks, allowAccessFromOtherSocklet, checkConnection, containsAttributeKey, containsClient, copyInfo, countClients, deployedBy, deployedBy, destroy, disconnectAllClients, getAllClients, getAttribute, getAttributeBoolean, getAttributeDouble, getAttributeInt, getAttributeKeys, getAttributeLong, getAttributes, getClients, getClients, getInitParam, getInitParamKeys, getInitParams, getInitParams, getMain, getName, getOtherSocklet, getTimeout, hasInitParam, init, init, init, log, log, log, log, memo, memo, memo, memo, preCreateFinder, preRemoveClient, 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
 

フィールドの詳細

clazz

public static final java.lang.Class[] clazz
コマンドリフレクションメソッドの引数タイプ

コンストラクタの詳細

ColonCommandSocklet

public ColonCommandSocklet()
メソッドの詳細

parseCommand

protected final CommandSocklet.CommandInfo parseCommand(SocketProcessor client,
                                                        java.lang.String command,
                                                        java.lang.Object preprocessed)
送られてきたコマンドを解析し、メソッドをリフレクションするための情報を作成します。
接続中のクライアントから、コマンドが送信されてきたときに呼ばれます。

定義:
クラス CommandSocklet 内の parseCommand
パラメータ:
client - コマンドを送信してきたクライアントソケット
command - 受信したコマンド
preprocessed - 前処理結果オブジェクト
戻り値:
実行するコマンドリフレクションメソッドの名称等情報