consumeRelease(); while ( hasNewDataToRead(selector) ) { //single & to ensure we check has new data to read. removeDoneKeys(selectedKeys); ClientConnection abandonded = slowConnections.leadingCandidate(); if (null!=abandonded) { abandonNow(abandonded); while (--i >= 0) { if (null != timedOut[i]) { abandonNow(timedOut[i]); requestShutdown(); return;
private void processSelection(SelectionKey selection) { assert isReadOpsOnly(selection) : "only expected read"; //System.err.println("processSelection"); ClientConnection cc = (ClientConnection)selection.attachment(); boolean didWork = false; if (!cc.isClientClosedNotificationSent() && !cc.isDisconnecting()) { didWork = processConnection(didWork, cc); // if we need the channel we can get it from selection.channel().... } else { didWork = true; } //always remove in-case we need to get to the following doneSelectors.add(selection); if (!didWork) { hasRoomForMore = false;//if any one is blocked go work elsewhere. } }
consumeRelease(); doRead = false; didWork = readFromSocketImpl(didWork, cc, target); } else { didWork = false;
public static void buildSimpleTLSClient(GraphManager graphManager, ClientCoordinator clientCoordinator, Pipe<NetPayloadSchema>[] clientPlainOutput, Pipe<NetPayloadSchema>[] clientPlainInput) { Pipe<ReleaseSchema>[] clientReleaseAck =new Pipe[] {ReleaseSchema.instance.newPipe(1024, 0)}; Pipe<NetPayloadSchema>[] clientHandshakePipe = new Pipe[] {NetPayloadSchema.instance.newPipe(8, 1<<16)}; Pipe<NetPayloadSchema>[] clientEncyptedInput = Pipe.buildPipes(clientPlainInput); Pipe<NetPayloadSchema>[] clientEncryptedOutput = Pipe.buildPipes(clientPlainOutput); ClientSocketReaderStage reader = new ClientSocketReaderStage(graphManager, clientCoordinator, clientReleaseAck, clientEncyptedInput ); GraphManager.addNota(graphManager, GraphManager.DOT_RANK_NAME, "SocketReader", reader); SSLEngineUnWrapStage unwrap = new SSLEngineUnWrapStage(graphManager, clientCoordinator, clientEncyptedInput, clientPlainInput, clientReleaseAck[0], clientHandshakePipe[0], false /*isServer*/); GraphManager.addNota(graphManager, GraphManager.DOT_RANK_NAME, "UnWrap", unwrap); new SSLEngineWrapStage(graphManager, clientCoordinator, false /*isServer*/, clientPlainOutput, clientEncryptedOutput); new ClientSocketWriterStage(graphManager, clientCoordinator, PronghornStage.join(clientEncryptedOutput, clientHandshakePipe)); }
writePlain(cc, target, readCount); } else { writeEncrypted(cc.getId(), target, readCount);
ClientSocketReaderStage socketReaderStage = new ClientSocketReaderStage(gm, ccm, acks, socketResponse); GraphManager.addNota(gm, GraphManager.DOT_RANK_NAME, "SocketReader", socketReaderStage); ccm.processNota(gm, socketReaderStage);
response[z]=new Pipe<NetPayloadSchema>(payloadPipeConfig); new ClientSocketReaderStage(gm, clientCoordinator, releasePipes, response); watch = new SocketClientTestDataStage(gm, response, releasePipes[0], encryptedContent, testUsers, testSeeds, testSizes);