jp.wda.gpss
インタフェース Socklet

すべてのスーパーインタフェース:
java.io.Serializable
既知の実装クラスの一覧:
GeneralSocklet

public interface Socklet
extends java.io.Serializable

Sockletインターフェース

全てのSockletは、このインターフェースを実装する必要があります。
通常の場合は、jp.wda.gpss.GeneralSockletを継承する方が楽チンです。

導入されたバージョン:
1.00α007 2003/05/10
バージョン:
1.00α008 2003/06/14
作成者:
amoi

メソッドの概要
 void addClient(SocketProcessor client)
          指定したクライアントを、このSockletの接続中クライアント一覧に追加します。
 void afterDeployedLinks(java.util.Map linkedSocklets)
          このメソッドはinit(SockletDeployInfo info, List links, Progress progress)にて、 linksオブジェクトに設定された追加配備Sockletを配備し終えた後、サーバにより起動時に1回だけ呼ばれます。
 boolean allowAccessFromOtherSocklet(Socklet from)
          他のSockletからのアクセスを許可するかどうかを確認します。
 boolean checkConnection(SocketProcessor client)
          接続用初期コマンド受信後、クライアントの検査を行うためのメソッド。
 int countClients()
          現在接続中のクライアント数を数えます。
 java.lang.String deployedBy()
          このSockletを配備したSocklet名を取得します。
 void deployedBy(ExecutableBase server, java.lang.String name)
          このSockletを配備したSocklet名を設定します。
 void destroy()
          Sockletがサービスを停止する際に、待受けメインサーバによって呼び出されます。
 void disconnectAllClients(java.lang.String message)
          このSockletに接続中の全クライアントを切断します。
 boolean doCommand(SocketProcessor client, java.lang.String command)
          コマンドを処理するためのメソッド。
 java.lang.String getName()
          このSockletの配備名を取得します。
 int getTimeout()
          タイムアウト時間(ミリ秒単位)を取得します。
 void init(SockletDeployInfo info, java.util.List links, Progress progress)
          このSockletを初期化します。
 void log(java.lang.Object message, org.apache.log4j.Priority priority, java.lang.Throwable throwable)
          Socklet指定ログファイルか、それが登録されていない場合はシステムログファイルに、 指定された種類のログを出力します。
 void preRemoveClient(SocketProcessor client)
          クライアント削除前に呼び出されるメソッド。
 void removeClient(SocketProcessor client)
          指定したクライアントを、このSockletの接続中クライアント一覧から削除します。
 void sendToAllClients(java.lang.String message)
          このSockletに接続中の全てのクライアントに向けて、メッセージを送信します。
 void sendToClients(java.lang.String message, Finder finder)
          このSockletに接続中のクライアントのうち、特定の条件を有するクライアントのみに向けて、メッセージを送信します。
 void sendToClients(java.lang.String message, java.lang.String condition)
          このSockletに接続中のクライアントのうち、特定の条件を有するクライアントのみに向けて、メッセージを送信します。
 void setTimeout(int timeout)
          このSockletを配備したSocklet名を設定します。
 

メソッドの詳細

checkConnection

public boolean checkConnection(SocketProcessor client)
接続用初期コマンド受信後、クライアントの検査を行うためのメソッド。
このメソッドは、サーバが新しいクライアントからの接続を確認した時点で、 そのクライアントを検査するために呼ばれます。
接続クライアントに対し一番初めに一回だけ呼ばれます。
SocketProcessorクラスのメソッドを使用して、このクラスが適切であるか検査し、 またクライアントに必要な初期化情報を与えてください。

このクライアントが適切でないと判断された場合は、偽falseを返してください。 直ちにクライアントソケットを終了します。
その他の場合は、真を返してください。真を返すと、クライアントソケットを継続します。

パラメータ:
client - 接続を試みているクライアント
戻り値:
検査後、即終了する場合は偽。
関連項目:
SocketProcessor

preRemoveClient

public void preRemoveClient(SocketProcessor client)
クライアント削除前に呼び出されるメソッド。
接続中のクライアントが切断され、このアプリケーションから除外される直前に呼ばれます。
接続クライアントに対し、終了前に一回だけ呼ばれます。
他の接続中クライアントへ、このクライアントが切断されたことを通知するような場合は、 このメソッド中で記述してください。

パラメータ:
client - これから削除されるクライアント

doCommand

public boolean doCommand(SocketProcessor client,
                         java.lang.String command)
コマンドを処理するためのメソッド。
接続中のクライアントから、コマンドが送信されてきたときに呼ばれます。 サブクラスはこのメッソド中で、クライアントから送られてきたコマンドを処理してください。
クライアントの接続中に何度でも呼ばれます。

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

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

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

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

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

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

SocketProcessorFinderには、ユーザー名での検索用クラスやパラメタ値での検索用クラスなどが用意されています。

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

init

public void init(SockletDeployInfo info,
                 java.util.List links,
                 Progress progress)
このSockletを初期化します。

パラメータ:
info - Socklet配備情報
links - 自動的に追加配備したいSockletのSocklet配備情報オブジェクトを設定するためのList
progress - ソケット処理状況進捗管理オブジェクト。

afterDeployedLinks

public void afterDeployedLinks(java.util.Map linkedSocklets)
このメソッドはinit(SockletDeployInfo info, List links, Progress progress)にて、 linksオブジェクトに設定された追加配備Sockletを配備し終えた後、サーバにより起動時に1回だけ呼ばれます。
サーバによって追加配備されたSockletを予め取得したい場合にこのメソッドを使用してください。

パラメータ:
linkedSocklets - 自動的に追加配備されたSockletのうち、このSockletからのアクセスを許可されたSocklet一覧を、Socklet配備名をキーとして保持するMapオブジェクト

destroy

public void destroy()
Sockletがサービスを停止する際に、待受けメインサーバによって呼び出されます。
Sockletの終了処理ルーチンを記述し、このメソッドを実装してください。


getName

public java.lang.String getName()
このSockletの配備名を取得します。
配備名とは、GPSS設定ファイルのノードに記述されたname属性の値です。
クライアントは、この”配備名”を頼りに、Sockletを検索します。

戻り値:
Socklet名

getTimeout

public int getTimeout()
タイムアウト時間(ミリ秒単位)を取得します。

戻り値:
タイムアウト時間(ミリ秒単位)

setTimeout

public void setTimeout(int timeout)
このSockletを配備したSocklet名を設定します。

戻り値:
タイムアウト時間(ミリ秒単位)

deployedBy

public java.lang.String deployedBy()
このSockletを配備したSocklet名を取得します。

戻り値:
Socklet名

deployedBy

public void deployedBy(ExecutableBase server,
                       java.lang.String name)
このSockletを配備したSocklet名を設定します。

戻り値:
Socklet名

addClient

public void addClient(SocketProcessor client)
指定したクライアントを、このSockletの接続中クライアント一覧に追加します。

パラメータ:
client - 追加するクライアント

removeClient

public void removeClient(SocketProcessor client)
指定したクライアントを、このSockletの接続中クライアント一覧から削除します。

パラメータ:
client - 削除するクライアント

countClients

public int countClients()
現在接続中のクライアント数を数えます。

戻り値:
現在接続中のクライアント数

disconnectAllClients

public void disconnectAllClients(java.lang.String message)
このSockletに接続中の全クライアントを切断します。

パラメータ:
message - 閉鎖メッセージ

sendToAllClients

public void sendToAllClients(java.lang.String message)
このSockletに接続中の全てのクライアントに向けて、メッセージを送信します。

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

sendToClients

public void sendToClients(java.lang.String message,
                          Finder finder)
このSockletに接続中のクライアントのうち、特定の条件を有するクライアントのみに向けて、メッセージを送信します。
例えば、特定のユーザー名を指定して、そのユーザーのみに送信したい場合は、以下のようにします。
sendToClients("送りたいメッセージ", new SocketProcessorFinderByUsername("送りたいユーザー名"));
また、特定のユーザにのみ送りたくない場合は以下のようにします。
sendToClients("送りたいメッセージ", new SocketProcessorFinderByUsername(false, "送りたくないユーザー名"));

パラメータ:
message - 送信するメッセージ
finder - 送信したいクライアント検索用オブジェクト
関連項目:
SocketProcessorFinder.getFinder(String)

sendToClients

public void sendToClients(java.lang.String message,
                          java.lang.String condition)
このSockletに接続中のクライアントのうち、特定の条件を有するクライアントのみに向けて、メッセージを送信します。
条件の指定方法は、SocketProcessorFinder#getFinder(String)をご覧ください。

パラメータ:
message - 送信するメッセージ
condition - 送信したいクライアントの検索条件文
関連項目:
SocketProcessorFinder.getFinder(String)

allowAccessFromOtherSocklet

public boolean allowAccessFromOtherSocklet(Socklet from)
他のSockletからのアクセスを許可するかどうかを確認します。

パラメータ:
from - アクセスを試みてきた、他のSocklet
戻り値:
そのSockletからのアクセスを許可する場合は真

log

public void log(java.lang.Object message,
                org.apache.log4j.Priority priority,
                java.lang.Throwable throwable)
Socklet指定ログファイルか、それが登録されていない場合はシステムログファイルに、 指定された種類のログを出力します。

パラメータ:
message - 出力するログメッセージ
priority - ログ情報種類
throwable - 発生したエラー