public void wakeupAccepts() { tcpServerLog.logf(FQCN, Logger.Level.TRACE, null, "Wake up accepts on %s", this); resumeAccepts(); handle.wakeup(SelectionKey.OP_ACCEPT); }
void start() { for (WorkerThread worker : workerThreads) { openResourceUnconditionally(); worker.start(); } openResourceUnconditionally(); acceptThread.start(); }
boolean getConnection() { assert currentThread() == getWorkerThread(); if (stopped) { return false; } if (tokenCount != -1 && --tokenCount == 0) { setThreadNewCount(getWorkerThread().getNextThread(), server.getTokenConnectionCount()); } if (++count >= high || tokenCount == 0) { stopped = true; super.suspend(SelectionKey.OP_ACCEPT); } return true; }
private static WorkerThread getPeerThread(final XnioIoFactory peer) throws ClosedWorkerException { final WorkerThread peerThread; if (peer instanceof NioXnioWorker) { final NioXnioWorker peerWorker = (NioXnioWorker) peer; peerWorker.checkShutdown(); peerThread = peerWorker.chooseThread(); } else if (peer instanceof WorkerThread) { peerThread = (WorkerThread) peer; peerThread.getWorker().checkShutdown(); } else { throw log.notNioProvider(); } return peerThread; }
NioUdpChannel(final NioXnioWorker worker, final DatagramChannel datagramChannel) throws ClosedChannelException { super(worker); this.datagramChannel = datagramChannel; final WorkerThread workerThread = worker.chooseThread(); final SelectionKey key = workerThread.registerChannel(datagramChannel); handle = new NioUdpChannelHandle(workerThread, key, this); key.attach(handle); }
void resume() { final WorkerThread thread = getWorkerThread(); if (thread == currentThread()) { if (! stopped && server.resumed) super.resume(SelectionKey.OP_ACCEPT); } else { thread.execute(new Runnable() { public void run() { resume(); } }); } }
void suspend() { final WorkerThread thread = getWorkerThread(); if (thread == currentThread()) { if (stopped || ! server.resumed) super.suspend(SelectionKey.OP_ACCEPT); } else { thread.execute(new Runnable() { public void run() { suspend(); } }); } }
public void run() { server.getHandle(number).setTokenCount(newCount); } });
void checkShutdown() throws ClosedWorkerException { if (isShutdown()) throw log.workerShutDown(); }
public void run() { server.getHandle(number).initializeTokenCount(newCount); } });
public XnioWorker getWorker() { return getWorkerThread().getWorker(); }
protected XnioWorker build(final XnioWorker.Builder builder) { final NioXnioWorker worker = new NioXnioWorker(builder); worker.start(); return worker; }
public XnioWorker getWorker() { return getWorkerThread().getWorker(); }
public void suspendAccepts() { synchronized (this) { handle.suspend(SelectionKey.OP_ACCEPT); suspended = true; } }
public void resumeAccepts() { synchronized (this) { suspended = false; handle.resume(SelectionKey.OP_ACCEPT); } }