/** * Assert a boolean expression, throwing {@link IllegalStateException} if * the test result is {@code false}. * <p> * Call {@link #isTrue(boolean)} if you wish to throw * {@link IllegalArgumentException} on an assertion failure. * * <pre class="code"> * Assert.state(id == null); * </pre> * * @param expression a boolean expression * @throws IllegalStateException if the supplied expression is {@code false} */ public static void state(boolean expression) { state(expression, "[Assertion failed] - this state invariant must be true"); }
/** * Assert a boolean expression, throwing {@link IllegalStateException} if * the test result is {@code false}. * <p> * Call {@link #isTrue(boolean)} if you wish to throw * {@link IllegalArgumentException} on an assertion failure. * * <pre class="code"> * Assert.state(id == null); * </pre> * * @param expression a boolean expression * @throws IllegalStateException if the supplied expression is {@code false} */ public static void state(boolean expression) { state(expression, "[Assertion failed] - this state invariant must be true"); }
@Override public synchronized PrintWriter getPrintWriter() { Assert.state(bufferedOutputStream == null, "The OutputStream is initialized"); if (printWriter == null) { printWriter = new PrintWriter(new OutputStreamWriter(newBufferedOutputStream(), StandardCharsets.UTF_8)); } return printWriter; }
@Override public synchronized OutputStream getOutputStream() { Assert.state(printWriter == null, "The PrintWriter is initialized"); if (bufferedOutputStream == null) { bufferedOutputStream = newBufferedOutputStream(); } return bufferedOutputStream; }
@Override public synchronized OutputStream getOutputStream() { Assert.state(printWriter == null, "The PrintWriter is initialized"); if (bufferedOutputStream == null) { bufferedOutputStream = newBufferedOutputStream(); } return bufferedOutputStream; }
@Override public synchronized PrintWriter getPrintWriter() { Assert.state(bufferedOutputStream == null, "The OutputStream is initialized"); if (printWriter == null) { printWriter = new PrintWriter(new OutputStreamWriter(newBufferedOutputStream(), StandardCharsets.UTF_8)); } return printWriter; }
protected FlexContext createContext(Stream stream) { ByteArrayOutputStream outputStream = getMetaInfoByteArrayOutputStream(stream); Request request = Optional.ofNullable(configuration.getMetaInfoParser()).orElse(MetaInfoParser.DEFAULT) .parse(outputStream.toByteArray(), Request.class); stream.getAttributes().remove(METAINFO_BYTES_KEY); Assert.state(request != null, "Parse request meta info failure"); return new FlexContext(request, stream, FlexConnectionImpl.this); }
protected FlexContext createContext(Stream stream) { ByteArrayOutputStream outputStream = getMetaInfoByteArrayOutputStream(stream); Request request = Optional.ofNullable(configuration.getMetaInfoParser()).orElse(MetaInfoParser.DEFAULT) .parse(outputStream.toByteArray(), Request.class); stream.getAttributes().remove(METAINFO_BYTES_KEY); Assert.state(request != null, "Parse request meta info failure"); return new FlexContext(request, stream, FlexConnectionImpl.this); }
private void checkWrite(Request request, HTTP1ClientResponseHandler handler) { Assert.notNull(request, "The http client request is null."); Assert.notNull(handler, "The http1 client response handler is null."); Assert.state(isOpen(), "The current connection " + tcpSession.getSessionId() + " has been closed."); Assert.state(!upgradeHTTP2Complete.get(), "The current connection " + tcpSession.getSessionId() + " has upgraded HTTP2."); Assert.state(!upgradeWebSocketComplete.get(), "The current connection " + tcpSession.getSessionId() + " has upgraded WebSocket."); if (wrap.writing.compareAndSet(null, handler)) { request.getFields().put(HttpHeader.HOST, tcpSession.getRemoteAddress().getHostString()); handler.connection = this; handler.request = request; } else { throw new WritePendingException(); } }
public void notifyNewStream(FlexStream stream, boolean local) { Stream old = streamMap.putIfAbsent(stream.getId(), stream); Assert.state(old == null, "The stream " + stream.getId() + " has been created."); stream.setIdleTimeout(streamMaxIdleTime); if (log.isDebugEnabled()) { if (local) { log.debug("Create a new local stream: {}", stream.toString()); } else { log.debug("Create a new remote stream: {}", stream.toString()); } } flexMetric.getActiveStreamCount().inc(); flexMetric.getRequestMeter().mark(); }
private void checkWrite(Request request, HTTP1ClientResponseHandler handler) { Assert.notNull(request, "The http client request is null."); Assert.notNull(handler, "The http1 client response handler is null."); Assert.state(isOpen(), "The current connection " + tcpSession.getSessionId() + " has been closed."); Assert.state(!upgradeHTTP2Complete.get(), "The current connection " + tcpSession.getSessionId() + " has upgraded HTTP2."); Assert.state(!upgradeWebSocketComplete.get(), "The current connection " + tcpSession.getSessionId() + " has upgraded WebSocket."); if (wrap.writing.compareAndSet(null, handler)) { request.getFields().put(HttpHeader.HOST, tcpSession.getRemoteAddress().getHostString()); handler.connection = this; handler.request = request; } else { throw new WritePendingException(); } }
public void notifyNewStream(FlexStream stream, boolean local) { Stream old = streamMap.putIfAbsent(stream.getId(), stream); Assert.state(old == null, "The stream " + stream.getId() + " has been created."); stream.setIdleTimeout(streamMaxIdleTime); if (log.isDebugEnabled()) { if (local) { log.debug("Create a new local stream: {}", stream.toString()); } else { log.debug("Create a new remote stream: {}", stream.toString()); } } flexMetric.getActiveStreamCount().inc(); flexMetric.getRequestMeter().mark(); }
protected void onDataFrame(Stream stream, DataFrame dataFrame, Listener listener) { FlexContext context = getContext(stream); Assert.state(context != null, "The flex context has not been created"); try { if (dataFrame.isEndFrame()) { Optional.ofNullable(dataFrame.getData()).ifPresent(data -> listener.content(context, data)); listener.contentComplete(context); if (dataFrame.isEndStream()) { listener.messageComplete(context); } } else { Optional.ofNullable(dataFrame.getData()).ifPresent(data -> listener.content(context, data)); } } catch (Exception e) { listener.exception(context, e); } }
@Override public void onData(DataFrame dataFrame) { Stream stream = getSession().getStream(dataFrame.getStreamId()); Assert.state(stream != null, "The stream has not been created. id: " + dataFrame.getStreamId()); onDataFrame(stream, dataFrame, listener); } }
@Override public void onData(DataFrame dataFrame) { Stream stream = getSession().getStream(dataFrame.getStreamId()); Assert.state(stream != null, "The stream has not been created. id: " + dataFrame.getStreamId()); onDataFrame(stream, dataFrame, listener); } }
@Override public synchronized void write(ByteBuffer data) { Stream stream = getStream(); Assert.state(!closed, "The stream " + stream + " output is closed."); noContent = false; commit(); writeFrame(new DataFrame(stream.getId(), data, isLastFrame(data))); }
@Override public synchronized void write(ByteBuffer data) { Stream stream = getStream(); Assert.state(!closed, "The stream " + stream + " output is closed."); noContent = false; commit(); writeFrame(new DataFrame(stream.getId(), data, isLastFrame(data))); }
protected FlexParser.Result parseFrame() { Assert.state(frame != null, "The frame header is null"); FlexParser<? extends Frame> parser = getParser(frame.getType()); if (parser == null) { throw new ProtocolException("The frame type is not supported"); } Pair<FlexParser.Result, ? extends Frame> pair = parser.parse(buffer, frame); switch (pair.first) { case UNDERFLOW: break; case OVERFLOW: case COMPLETE: action.call(pair.second); reset(); break; } return pair.first; }
public synchronized void write(ByteBuffer data) { Stream stream = getStream(); Assert.state(!closed, "The stream " + stream + " output is closed."); noContent = false; commit(); if (data.remaining() > Frame.MAX_PAYLOAD_LENGTH) { BufferUtils.split(data, Frame.MAX_PAYLOAD_LENGTH) .forEach(buf -> writeFrame(new DataFrame(false, getStream().getId(), false, BufferUtils.toArray(buf)))); } else { writeFrame(new DataFrame(false, getStream().getId(), false, BufferUtils.toArray(data))); } }
public synchronized void write(ByteBuffer data) { Stream stream = getStream(); Assert.state(!closed, "The stream " + stream + " output is closed."); noContent = false; commit(); if (data.remaining() > Frame.MAX_PAYLOAD_LENGTH) { BufferUtils.split(data, Frame.MAX_PAYLOAD_LENGTH) .forEach(buf -> writeFrame(new DataFrame(false, getStream().getId(), false, BufferUtils.toArray(buf)))); } else { writeFrame(new DataFrame(false, getStream().getId(), false, BufferUtils.toArray(data))); } }