Java 2 SDK 開発ガイド (Solaris 編)

poller クラスの基本的な使い方


    Poller Mux = new Poller();

    int serverFd = Mux.add(serverSocket, Poller.POLLIN);    
    int fd1 = Mux.add(socket1, Poller.POLLIN);
    ...
    int fdN = Mux.add(socketN, Poller.POLLIN);
    long timeout = 1000; // 1 秒

    int numEvents = Mux.waitMultiple(100, fds, revents, timeout);

    for (int i = 0; i < numEvents; i++) {
       /*
        * より洗練させる必要がある
        */
        if (fds[i] == serverFd) {
            System.out.println("Got new connection.");
            newSocket = serverSocket.accept();
            newSocketFd = Mux.add(newSocket,Poller.POLLIN);
        } else if (fds[i] == fd1) {
            System.out.println("Got data on socket1");
            socket1.getInputStream().read(byteArray);
            // fd1 接続の状態に基づいて処理を行う
        }
        ...
    }