なぜSockletの仕様が変わってしまったのか

相変わらずドキュメント、というか文章は下手なので、意味不明な表現がありましたらご遠慮なく突っ込みお願いします。

メソッド名の問題。

checkConnection / preRemoveClient がどうにも気持ち悪かったので、メソッド名を変更しました。

accept:クライアント受け入れ処理←checkConnectionから変更
denied:クライアント接続拒否処理(新設)
desert:クライアント切断処理処理←preRemoveClientから変更

あぁ、すっきり(笑)

実はSockletインターフェースには従来どおり、checkConnection / preRemoveClient の両メソッドを残してあります。
GeneralSockletの基底クラスの checkConnection / preRemoveClient にてアクセスコントロール処理を行うようにしましたので、Sockletを実装する段階では記述する必要がなくなっただけです。
なので、GeneralSockletを使用せずに0からSockletを開発する場合は、やはり checkConnection / preRemoveClient メソッドを実装する必要はあります。

また、Socklet間の連携についてはSeasarに管理してもらうことにしたので、GPSS2では特に記述する必要はなくなりました。
よって、これまた気持ちの悪かったafterDeployedLinks/allowAccessFromOtherSocklet等のメソッドは廃止となりました。

クライアント管理の問題。

S2のHotSwapに対応させるために、Sockletに接続中のクライアントを持たせるわけには行きませんでした。
なぜなら、Sockletに直接接続中のクライアント達一覧を持たせておくと、Sockletを入れ替えた際にインスタンスが初期化され、クライアントが切断されてしまうためです。
(多分、新しいS2のHotDeployでも同様だと思うのですが…)
その他の理由もありますが、なんにしてもSockletには「状態」を持たせないことにして、接続中のクライアント等、Sockletに関する「状態」は別のインスタンスで管理することにしました。

そうなりますと、コマンド処理メソッドの引数として「現在接続中のクライアントたち」を渡す必要が出てきてしまいまして、doCommandメソッドの仕様も変更になってしまいました。