/** * Alternate constructor providing additional control over the * {@link ConnectionBuilder} for each WebSocket connection. * @param worker the Xnio worker to use to create {@code ConnectionBuilder}'s * @param builderConsumer a consumer to configure {@code ConnectionBuilder}'s */ public UndertowWebSocketClient(XnioWorker worker, Consumer<ConnectionBuilder> builderConsumer) { this(worker, new DefaultByteBufferPool(false, DEFAULT_POOL_BUFFER_SIZE), builderConsumer); }
@Override public InetSocketAddress getRemoteAddress() { return this.exchange.getSourceAddress(); }
public RequestBodyPublisher(HttpServerExchange exchange, DataBufferFactory bufferFactory) { super(UndertowServerHttpRequest.this.getLogPrefix()); this.channel = exchange.getRequestChannel(); this.bufferFactory = bufferFactory; this.byteBufferPool = exchange.getConnection().getByteBufferPool(); }
@Override public void onError(Throwable ex) { logger.trace(this.logPrefix + "Failed to complete: " + ex.getMessage()); if (this.exchange.isResponseStarted()) { try { logger.debug(this.logPrefix + "Closing connection"); this.exchange.getConnection().close(); } catch (IOException ex2) { // ignore } } else { logger.debug(this.logPrefix + "Setting HttpServerExchange status to 500 Server Error"); this.exchange.setStatusCode(500); this.exchange.endExchange(); } }
@Override public void handleRequest(final HttpServerExchange exchange) throws Exception { exchange.putAttachment(key, instance); next.handleRequest(exchange); }
private static HttpHeaders createHeaders(HttpServerExchange exchange) { UndertowHeadersAdapter headersMap = new UndertowHeadersAdapter(exchange.getResponseHeaders()); return new HttpHeaders(headersMap); }
private static HttpHeaders initHeaders(HttpServerExchange exchange) { UndertowHeadersAdapter headersMap = new UndertowHeadersAdapter(exchange.getRequestHeaders()); return new HttpHeaders(headersMap); }
@Override public void exchangeEvent(HttpServerExchange exchange, NextListener nextListener) { exchange.getConnection().setSslSessionInfo(null); nextListener.proceed(); } };
@Override protected void applyStatusCode() { Integer statusCode = getStatusCodeValue(); if (statusCode != null) { this.exchange.setStatusCode(statusCode); } }
@Override public void onComplete() { logger.trace(this.logPrefix + "Handling completed"); this.exchange.endExchange(); } }
@Override public String getMethodValue() { return this.exchange.getRequestMethod().toString(); }
private void registerListeners(HttpServerExchange exchange) { exchange.addExchangeCompleteListener((ex, next) -> { onAllDataRead(); next.proceed(); }); this.channel.getReadSetter().set(c -> onDataAvailable()); this.channel.getCloseSetter().set(c -> onAllDataRead()); this.channel.resumeReads(); }
@Override public String readAttribute(HttpServerExchange exchange) { SSLSessionInfo ssl = exchange.getConnection().getSslSessionInfo(); if(ssl == null) { return null; } return ssl.getCipherSuite(); }
@Override public StreamSinkConduit create() { if (position == -1) { return exchange.getConnection().getSinkConduit(exchange, first); } else { return wrappers[position--].wrap(this, exchange); } } }
@Override public HttpStatus getStatusCode() { HttpStatus httpStatus = super.getStatusCode(); return httpStatus != null ? httpStatus : HttpStatus.resolve(this.exchange.getStatusCode()); }
@Nullable @Override protected SslInfo initSslInfo() { SSLSession session = this.exchange.getConnection().getSslSession(); if (session != null) { return new DefaultSslInfo(session); } return null; }
@Override protected String initId() { return ObjectUtils.getIdentityHexString(this.exchange.getConnection()); }
@Override public void renegotiate(HttpServerExchange exchange, SslClientAuthMode sslClientAuthMode) throws IOException { unverified = null; renegotiationRequiredException = null; if (exchange.isRequestComplete()) { renegotiateNoRequest(exchange, sslClientAuthMode); } else { renegotiateBufferRequest(exchange, sslClientAuthMode); } }
private void invokeExchangeCompleteListeners() { if (exchangeCompletionListenersCount > 0) { int i = exchangeCompletionListenersCount - 1; ExchangeCompletionListener next = exchangeCompleteListeners[i]; exchangeCompletionListenersCount = -1; next.exchangeEvent(this, new ExchangeCompleteNextListener(exchangeCompleteListeners, this, i)); } else if (exchangeCompletionListenersCount == 0) { exchangeCompletionListenersCount = -1; connection.exchangeComplete(this); } }
private ResponseBodyProcessor createBodyProcessor() { if (this.responseChannel == null) { this.responseChannel = this.exchange.getResponseChannel(); } return new ResponseBodyProcessor(this.responseChannel); }