// // ======================================================================== // Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 // and Apache License v2.0 which accompanies this distribution. // // The Eclipse Public License is available at // http://www.eclipse.org/legal/epl-v10.html // // The Apache License v2.0 is available at // http://www.opensource.org/licenses/apache2.0.php // // You may elect to redistribute this code under either of these licenses. // ======================================================================== // package org.eclipse.jetty.websocket.jsr356; import javax.websocket.MessageHandler; import javax.websocket.MessageHandler.Partial; import javax.websocket.MessageHandler.Whole; import org.eclipse.jetty.websocket.jsr356.metadata.MessageHandlerMetadata; /** * Expose a {@link MessageHandler} instance along with its associated {@link MessageHandlerMetadata} and {@link DecoderFactory.Wrapper} */ public class MessageHandlerWrapper { private final MessageHandler handler; private final MessageHandlerMetadata metadata; private final DecoderFactory.Wrapper decoder; public MessageHandlerWrapper(MessageHandler handler, MessageHandlerMetadata metadata, DecoderFactory.Wrapper decoder) { this.handler = handler; this.metadata = metadata; this.decoder = decoder; } public DecoderFactory.Wrapper getDecoder() { return decoder; } public MessageHandler getHandler() { return handler; } public MessageHandlerMetadata getMetadata() { return metadata; } public boolean isMessageType(Class<?> msgType) { return msgType.isAssignableFrom(metadata.getMessageClass()); } /** * Flag for a onMessage() that wants partial messages. * <p> * This indicates the use of MessageHandler.{@link Partial}. * * @return true for use of MessageHandler.{@link Partial}, false for use of MessageHandler.{@link Whole} */ public boolean wantsPartialMessages() { return metadata.isPartialSupported(); } /** * Flag for a onMessage() method that wants MessageHandler.{@link Whole} with a Decoder that is based on {@link javax.websocket.Decoder.TextStream} or {@link javax.websocket.Decoder.BinaryStream} * * @return true for Streaming based Decoder, false for normal decoder for whole messages. */ public boolean wantsStreams() { return decoder.getMetadata().isStreamed(); } }