/*******************************************************************************
* Copyright © 2012-2015 eBay Software Foundation
* This program is dual licensed under the MIT and Apache 2.0 licenses.
* Please see LICENSE for more information.
*******************************************************************************/
package com.ebay.jetstream.messaging;
import java.util.List;
import com.ebay.jetstream.messaging.exception.MessageServiceException;
import com.ebay.jetstream.messaging.interfaces.IMessageListener;
import com.ebay.jetstream.messaging.interfaces.ITransportListener;
import com.ebay.jetstream.messaging.messagetype.JetstreamMessage;
import com.ebay.jetstream.messaging.topic.JetstreamTopic;
import com.ebay.jetstream.messaging.transport.netty.eventconsumer.EventConsumer;
import com.ebay.jetstream.messaging.transport.netty.eventproducer.EventProducer;
/**
* @author shmurthy
*
* Proxy for Transports to subscribe to messages.
*/
public final class MessageServiceProxy implements ITransportListener {
private final MessageService m_messageService;
public MessageServiceProxy(MessageService service) {
m_messageService = service;
}
/*
* (non-Javadoc)
*
* @see com.ebay.jetstream.messaging.TransportListener#postAdvise(com.ebay.jetstream.messaging.JetstreamMessage)
*/
public void postAdvise(JetstreamMessage tm) {
if (m_messageService != null) {
m_messageService.postAdvise(tm);
}
}
/*
* (non-Javadoc)
*
* @see com.ebay.jetstream.messaging.TransportListener#receive(com.ebay.jetstream.messaging.JetstreamMessage,
* com.ebay.jetstream.messaging.DispatchQueueStats)
*/
public void postMessage(JetstreamMessage tm, DispatchQueueStats stats) throws MessageServiceException {
if (m_messageService != null) {
m_messageService.postMessage(tm, stats);
}
}
/**
* @param topic
* @param tm
* @param who
* @throws java.lang.Exception
*/
public void publish(JetstreamTopic topic, JetstreamMessage tm, Object who) throws java.lang.Exception {
if (who.getClass() != EventProducer.class
&& who.getClass() != EventConsumer.class)
throw new MessageServiceException(MessageServiceException.PERMISSION_DENIED, who.getClass()
+ " not allowed to execute this method");
m_messageService.dispatchDownStream(topic, tm);
}
/**
* @param topic
* @param tml
* @param who
* @throws java.lang.Exception
*/
public void subscribe(JetstreamTopic topic, IMessageListener tml, Object who) throws java.lang.Exception {
if (who.getClass() != EventProducer.class
&& who.getClass() != EventConsumer.class)
throw new MessageServiceException(MessageServiceException.PERMISSION_DENIED, who.getClass()
+ " not allowed to execute this method");
m_messageService.createDispatcherRegisterWithTransport(topic);
m_messageService.addSubscriber(topic, tml);
}
@Override
public void postMessage(List<JetstreamMessage> msgs, DispatchQueueStats m_queueStats)
throws MessageServiceException {
if (m_messageService != null) {
m_messageService.postMessage(msgs, m_queueStats);
}
}
}