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);
}
}
Aggregations