Search in sources :

Example 1 with TextPartialOnMessage

use of org.eclipse.jetty.websocket.jsr356.messages.TextPartialOnMessage in project jetty.project by eclipse.

the class JsrAnnotatedEventDriver method onTextFrame.

/**
     * Entry point for all incoming text frames.
     */
@Override
public void onTextFrame(ByteBuffer buffer, boolean fin) throws IOException {
    if (LOG.isDebugEnabled()) {
        LOG.debug("onTextFrame({}, {})", BufferUtil.toDetailString(buffer), fin);
        LOG.debug("events.hasText={}", events.hasText());
        LOG.debug("events.hasTextStream={}", events.hasTextStream());
    }
    boolean handled = false;
    if (events.hasText()) {
        handled = true;
        if (activeMessage == null) {
            if (events.isTextPartialSupported()) {
                // Partial Message Support
                if (LOG.isDebugEnabled()) {
                    LOG.debug("Partial Text Message: fin={}", fin);
                }
                activeMessage = new TextPartialOnMessage(this);
            } else {
                // Whole Message Support
                if (LOG.isDebugEnabled()) {
                    LOG.debug("Whole Text Message");
                }
                activeMessage = new SimpleTextMessage(this);
            }
        }
    }
    if (events.hasTextStream()) {
        handled = true;
        // Streaming Message Support
        if (activeMessage == null) {
            if (LOG.isDebugEnabled()) {
                LOG.debug("Text Message Writer");
            }
            final MessageReader stream = new MessageReader(new MessageInputStream());
            activeMessage = stream;
            // Always dispatch streaming read to another thread.
            dispatch(new Runnable() {

                @Override
                public void run() {
                    try {
                        events.callTextStream(jsrsession.getAsyncRemote(), websocket, stream);
                    } catch (Throwable e) {
                        onFatalError(e);
                    }
                }
            });
        }
    }
    if (LOG.isDebugEnabled()) {
        LOG.debug("handled = {}", handled);
    }
    // Process any active MessageAppender
    if (handled && (activeMessage != null)) {
        appendMessage(buffer, fin);
    }
}
Also used : MessageInputStream(org.eclipse.jetty.websocket.common.message.MessageInputStream) SimpleTextMessage(org.eclipse.jetty.websocket.common.message.SimpleTextMessage) TextPartialOnMessage(org.eclipse.jetty.websocket.jsr356.messages.TextPartialOnMessage) MessageReader(org.eclipse.jetty.websocket.common.message.MessageReader)

Aggregations

MessageInputStream (org.eclipse.jetty.websocket.common.message.MessageInputStream)1 MessageReader (org.eclipse.jetty.websocket.common.message.MessageReader)1 SimpleTextMessage (org.eclipse.jetty.websocket.common.message.SimpleTextMessage)1 TextPartialOnMessage (org.eclipse.jetty.websocket.jsr356.messages.TextPartialOnMessage)1