Search in sources :

Example 6 with Extension

use of org.eclipse.jetty.websocket.api.extensions.Extension in project jetty.project by eclipse.

the class ExtensionStack method doStart.

@Override
protected void doStart() throws Exception {
    super.doStart();
    // Wire up Extensions
    if ((extensions != null) && (extensions.size() > 0)) {
        ListIterator<Extension> exts = extensions.listIterator();
        // Connect outgoings
        while (exts.hasNext()) {
            Extension ext = exts.next();
            ext.setNextOutgoingFrames(nextOutgoing);
            nextOutgoing = ext;
            if (ext instanceof LifeCycle) {
                addBean(ext, true);
            }
        }
        // Connect incomings
        while (exts.hasPrevious()) {
            Extension ext = exts.previous();
            ext.setNextIncomingFrames(nextIncoming);
            nextIncoming = ext;
        }
    }
}
Also used : Extension(org.eclipse.jetty.websocket.api.extensions.Extension) LifeCycle(org.eclipse.jetty.util.component.LifeCycle) ContainerLifeCycle(org.eclipse.jetty.util.component.ContainerLifeCycle)

Example 7 with Extension

use of org.eclipse.jetty.websocket.api.extensions.Extension in project jetty.project by eclipse.

the class IdentityExtensionTest method testIncomingFrames.

/**
     * Verify that incoming frames are unmodified
     */
@Test
public void testIncomingFrames() {
    IncomingFramesCapture capture = new IncomingFramesCapture();
    Extension ext = new IdentityExtension();
    ext.setNextIncomingFrames(capture);
    Frame frame = new TextFrame().setPayload("hello");
    ext.incomingFrame(frame);
    capture.assertFrameCount(1);
    capture.assertHasFrame(OpCode.TEXT, 1);
    WebSocketFrame actual = capture.getFrames().poll();
    Assert.assertThat("Frame.opcode", actual.getOpCode(), is(OpCode.TEXT));
    Assert.assertThat("Frame.fin", actual.isFin(), is(true));
    Assert.assertThat("Frame.rsv1", actual.isRsv1(), is(false));
    Assert.assertThat("Frame.rsv2", actual.isRsv2(), is(false));
    Assert.assertThat("Frame.rsv3", actual.isRsv3(), is(false));
    ByteBuffer expected = BufferUtil.toBuffer("hello", StandardCharsets.UTF_8);
    Assert.assertThat("Frame.payloadLength", actual.getPayloadLength(), is(expected.remaining()));
    ByteBufferAssert.assertEquals("Frame.payload", expected, actual.getPayload().slice());
}
Also used : Extension(org.eclipse.jetty.websocket.api.extensions.Extension) IdentityExtension(org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension) Frame(org.eclipse.jetty.websocket.api.extensions.Frame) WebSocketFrame(org.eclipse.jetty.websocket.common.WebSocketFrame) TextFrame(org.eclipse.jetty.websocket.common.frames.TextFrame) TextFrame(org.eclipse.jetty.websocket.common.frames.TextFrame) IncomingFramesCapture(org.eclipse.jetty.websocket.common.test.IncomingFramesCapture) IdentityExtension(org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension) WebSocketFrame(org.eclipse.jetty.websocket.common.WebSocketFrame) ByteBuffer(java.nio.ByteBuffer) Test(org.junit.Test)

Example 8 with Extension

use of org.eclipse.jetty.websocket.api.extensions.Extension in project jetty.project by eclipse.

the class ExtensionStackTest method testStartIdentity.

@Test
public void testStartIdentity() throws Exception {
    ExtensionStack stack = createExtensionStack();
    try {
        // 1 extension
        List<ExtensionConfig> configs = new ArrayList<>();
        configs.add(ExtensionConfig.parse("identity"));
        stack.negotiate(configs);
        // Setup Listeners
        DummyIncomingFrames session = new DummyIncomingFrames("Session");
        DummyOutgoingFrames connection = new DummyOutgoingFrames("Connection");
        stack.setNextOutgoing(connection);
        stack.setNextIncoming(session);
        // Start
        stack.start();
        // Dump
        LOG.debug("{}", stack.dump());
        // Should be no change to handlers
        Extension actualIncomingExtension = assertIsExtension("Incoming", stack.getNextIncoming(), IdentityExtension.class);
        Extension actualOutgoingExtension = assertIsExtension("Outgoing", stack.getNextOutgoing(), IdentityExtension.class);
        Assert.assertEquals(actualIncomingExtension, actualOutgoingExtension);
    } finally {
        stack.stop();
    }
}
Also used : Extension(org.eclipse.jetty.websocket.api.extensions.Extension) IdentityExtension(org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension) ExtensionConfig(org.eclipse.jetty.websocket.api.extensions.ExtensionConfig) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Aggregations

Extension (org.eclipse.jetty.websocket.api.extensions.Extension)8 IdentityExtension (org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension)3 Test (org.junit.Test)3 ByteBuffer (java.nio.ByteBuffer)2 ExtensionConfig (org.eclipse.jetty.websocket.api.extensions.ExtensionConfig)2 Frame (org.eclipse.jetty.websocket.api.extensions.Frame)2 WebSocketFrame (org.eclipse.jetty.websocket.common.WebSocketFrame)2 TextFrame (org.eclipse.jetty.websocket.common.frames.TextFrame)2 ArrayList (java.util.ArrayList)1 ContainerLifeCycle (org.eclipse.jetty.util.component.ContainerLifeCycle)1 LifeCycle (org.eclipse.jetty.util.component.LifeCycle)1 WebSocketException (org.eclipse.jetty.websocket.api.WebSocketException)1 IncomingFrames (org.eclipse.jetty.websocket.api.extensions.IncomingFrames)1 OutgoingFrames (org.eclipse.jetty.websocket.api.extensions.OutgoingFrames)1 IncomingFramesCapture (org.eclipse.jetty.websocket.common.test.IncomingFramesCapture)1 OutgoingFramesCapture (org.eclipse.jetty.websocket.common.test.OutgoingFramesCapture)1