1 package com.quadcap.net.server; 2 3 40 41 import java.io.IOException ; 42 43 import java.net.ServerSocket ; 44 import java.net.Socket ; 45 46 import com.quadcap.util.Debug; 47 48 55 public class Acceptor implements Runnable { 56 Server server; 57 int port; 58 ServerSocket serverSocket; 59 boolean terminate = false; 60 61 public Acceptor(Server server, int port, int queueDepth) 62 throws IOException 63 { 64 this.server = server; 65 this.port = port; 66 this.serverSocket = new ServerSocket (port, queueDepth); 67 } 68 69 public void run() { 70 while (!terminate) { 71 try { 72 Worker w = server.getIdleWorker(); 73 Socket socket = null; 74 try { 75 socket = serverSocket.accept(); 76 w.handle(socket, port); 77 } catch (Throwable e) { 78 Debug.print(e); 79 server.returnIdleWorker(w); 80 } 81 } catch (Throwable e) { 82 Debug.print(e); 83 terminate = true; 84 } 85 } 86 } 87 88 static final int WCNT = 4; 89 90 public void runxxx() { 91 Worker[] wv = new Worker[WCNT]; 92 int valid = -1; 93 int pos = 0; 94 while (!terminate) { 95 try { 96 while (pos >= valid) { 97 valid = server.getIdleWorkers(wv); 98 pos = 0; 99 } 100 while (pos < valid && !terminate) { 101 Worker w = wv[pos++]; 102 try { 103 Socket socket = serverSocket.accept(); 104 w.handle(socket, port); 105 } catch (Throwable e) { 106 Debug.print(e); 107 server.returnIdleWorker(w); 108 } 109 } 110 } catch (Exception e) { 111 Debug.print(e); 112 terminate = true; 113 } 114 } 115 } 116 117 public void stop() { 118 } 119 } 120 | Popular Tags |