@Override public void flush() throws IOException { lockMsg(MsgType.ASYNC); try (WriteBlocker b = blocker.acquireWriteBlocker()) { uncheckedSendFrame(FrameFlusher.FLUSH_FRAME, b); b.block(); } finally { unlockMsg(MsgType.ASYNC); } }
@Override public Future<Void> sendBytesByFuture(ByteBuffer data) { lockMsg(MsgType.ASYNC); try { if (LOG.isDebugEnabled()) { LOG.debug("sendBytesByFuture with {}", BufferUtil.toDetailString(data)); } return sendAsyncFrame(new BinaryFrame().setPayload(data)); } finally { unlockMsg(MsgType.ASYNC); } }
@Override public void sendBytes(ByteBuffer data, WriteCallback callback) { lockMsg(MsgType.ASYNC); try { if (LOG.isDebugEnabled()) { LOG.debug("sendBytes({}, {})", BufferUtil.toDetailString(data), callback); } uncheckedSendFrame(new BinaryFrame().setPayload(data), callback == null ? NOOP_CALLBACK : callback); } finally { unlockMsg(MsgType.ASYNC); } }
@Override public void sendString(String text) throws IOException { lockMsg(MsgType.BLOCKING); try { WebSocketFrame frame = new TextFrame().setPayload(text); if (LOG.isDebugEnabled()) { LOG.debug("sendString with {}", BufferUtil.toDetailString(frame.getPayload())); } blockingWrite(frame); } finally { unlockMsg(MsgType.BLOCKING); } }
@Override public Future<Void> sendStringByFuture(String text) { lockMsg(MsgType.ASYNC); try { TextFrame frame = new TextFrame().setPayload(text); if (LOG.isDebugEnabled()) { LOG.debug("sendStringByFuture with {}", BufferUtil.toDetailString(frame.getPayload())); } return sendAsyncFrame(frame); } finally { unlockMsg(MsgType.ASYNC); } }
@Override public void sendString(String text, WriteCallback callback) { lockMsg(MsgType.ASYNC); try { TextFrame frame = new TextFrame().setPayload(text); if (LOG.isDebugEnabled()) { LOG.debug("sendString({},{})", BufferUtil.toDetailString(frame.getPayload()), callback); } uncheckedSendFrame(frame, callback == null ? NOOP_CALLBACK : callback); } finally { unlockMsg(MsgType.ASYNC); } }
@Override public void sendPartialBytes(ByteBuffer fragment, boolean isLast) throws IOException { boolean first = lockMsg(MsgType.PARTIAL_BINARY); try { if (LOG.isDebugEnabled()) { LOG.debug("sendPartialBytes({}, {})", BufferUtil.toDetailString(fragment), isLast); } DataFrame frame = first ? new BinaryFrame() : new ContinuationFrame(); frame.setPayload(fragment); frame.setFin(isLast); blockingWrite(frame); } finally { if (isLast) unlockMsg(MsgType.PARTIAL_BINARY); } }
/** * Blocking write of bytes. */ @Override public void sendBytes(ByteBuffer data) throws IOException { lockMsg(MsgType.BLOCKING); try { connection.getIOState().assertOutputOpen(); if (LOG.isDebugEnabled()) { LOG.debug("sendBytes with {}", BufferUtil.toDetailString(data)); } blockingWrite(new BinaryFrame().setPayload(data)); } finally { unlockMsg(MsgType.BLOCKING); } }
@Override public void sendPartialString(String fragment, boolean isLast) throws IOException { boolean first = lockMsg(MsgType.PARTIAL_TEXT); try { if (LOG.isDebugEnabled()) { LOG.debug("sendPartialString({}, {})", fragment, isLast); } DataFrame frame = first ? new TextFrame() : new ContinuationFrame(); frame.setPayload(BufferUtil.toBuffer(fragment, StandardCharsets.UTF_8)); frame.setFin(isLast); blockingWrite(frame); } finally { if (isLast) unlockMsg(MsgType.PARTIAL_TEXT); } }