@Override public synchronized void outgoingFrame(Frame frame, WriteCallback callback) { if (frame.getType().isControl()) { // skip, cannot compress control frames. nextOutgoingFrame(frame,callback); return; } ByteBuffer data = frame.getPayload(); // deflate data method.compress().input(data); while (!method.compress().isDone()) { ByteBuffer buf = method.compress().process(); WebSocketFrame out = new WebSocketFrame(frame).setPayload(buf); out.setRsv1(true); if (!method.compress().isDone()) { out.setFin(false); nextOutgoingFrame(frame,null); // no callback for start/end frames } else { nextOutgoingFrame(out,callback); // pass thru callback } } // reset on every frame. method.compress().end(); }
@Override public synchronized void incomingFrame(Frame frame) { if (frame.getType().isControl() || !frame.isRsv1()) { // Cannot modify incoming control frames or ones with RSV1 set. nextIncomingFrame(frame); return; } ByteBuffer data = frame.getPayload(); method.decompress().input(data); while (!method.decompress().isDone()) { ByteBuffer uncompressed = method.decompress().process(); WebSocketFrame out = new WebSocketFrame(frame).setPayload(uncompressed); if (!method.decompress().isDone()) { out.setFin(false); } out.setRsv1(false); // Unset RSV1 on decompressed frame nextIncomingFrame(out); } // reset on every frame. // method.decompress().end(); }
method.decompress().input(data); while (!method.decompress().isDone()) ByteBuffer uncompressed = method.decompress().process(); if (uncompressed == null) if (!method.decompress().isDone()) method.decompress().end();
@Override public synchronized void outgoingFrame(Frame frame, WriteCallback callback) { if (frame.getType().isControl()) { // skip, cannot compress control frames. nextOutgoingFrame(frame,callback); return; } ByteBuffer data = frame.getPayload(); // deflate data method.compress().input(data); while (!method.compress().isDone()) { ByteBuffer buf = method.compress().process(); WebSocketFrame out = new WebSocketFrame(frame).setPayload(buf); out.setRsv1(true); if (!method.compress().isDone()) { out.setFin(false); nextOutgoingFrame(frame,null); // no callback for start/end frames } else { nextOutgoingFrame(out,callback); // pass thru callback } } // reset on every frame. method.compress().end(); }
@Override public synchronized void incomingFrame(Frame frame) { if (frame.getType().isControl() || !frame.isRsv1()) { // Cannot modify incoming control frames or ones with RSV1 set. nextIncomingFrame(frame); return; } ByteBuffer data = frame.getPayload(); method.decompress().input(data); while (!method.decompress().isDone()) { ByteBuffer uncompressed = method.decompress().process(); WebSocketFrame out = new WebSocketFrame(frame).setPayload(uncompressed); if (!method.decompress().isDone()) { out.setFin(false); } out.setRsv1(false); // Unset RSV1 on decompressed frame nextIncomingFrame(out); } // reset on every frame. // method.decompress().end(); }
method.decompress().input(data); while (!method.decompress().isDone()) ByteBuffer uncompressed = method.decompress().process(); if (uncompressed == null) if (!method.decompress().isDone()) method.decompress().end();