Netty 上でオークション システムを開発しています。私が Netty を使用しているのは、Google で調べたところ、NIO は通常のソケット プログラミングよりもはるかに大きなクライアントを処理できることがわかったからです。
基本的に私は Netty のスターターです。チュートリアルとユーザーガイドについて説明しました。それだけです。したがって、私の質問が「問題」とみなされないかどうかを理解してください。以下は私のクライアントの疑似コードです。
public class AuctionClient
{
private boolean loggedIn;
public AuctionClient() //constructor
///
.... // various functions
///
public void run()
{
while (true)
{
int option = getUserOption(); //get user menu selection
switch(option)
{
case 1:
login(); //user enters username and password. The info is converted into JSON string and sent to AuctionServer.
//AuctionServer returns true if the info is correct, false otherwise
break;
case 2:
startAuction(); //start a new auction
break;
case 3:
makeBid(); //make a bid to an existing auction
break;
case 4:
logout(); //log out from the AuctionServer
break;
default:
break;
}
}
}
public static void main() // Creates AuctionClient class and runs it.
}
これが私がやろうとしていることの要点です。問題は、変数 loggedIn が true の場合にのみ、startAuction()、makeBid()、および logout() を有効にしたいということです。そのため、loggedIn の値を変更するには、ログインが成功したかどうかを知る必要があります。
しかし、login() の結果を処理するのは AuctionClientHandler (ここでは示されていますが) であるため、ログインが成功したかどうかを AuctionClient が知る方法はありません。
この問題を解決する優雅な方法はありますか。AuctionClient と AuctionClientHandler の間で情報を渡すために BlockingQueue を使用することは避けたいと思います。または、オークション システムのより良い設計はありますか?
どんな助けでも大歓迎です。
エドワード