blob: b7532a2eacab0520398357c3601f7ee4a552523a [file] [log] [blame]
//
// ========================================================================
// 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();
}
}