001 /**
002 *
003 * Copyright 2004 Protique Ltd
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 *
017 **/
018
019 package org.activemq.service;
020
021 import org.activemq.broker.BrokerClient;
022
023 /**
024 * A dispatcher of messages to some JMS connection.
025 * <p/>
026 * Typically this uses either IO or NIO to shovel the messages down
027 * a socket as fast as possible - in either a push or pull way.
028 *
029 * @version $Revision: 1.1.1.1 $
030 */
031 public interface Dispatcher extends Service {
032
033 /**
034 * Register the MessageContainerManager for the Dispatcher
035 *
036 * @param mcm
037 */
038 public void register(MessageContainerManager mcm);
039
040 /**
041 * Called to indicate that there is work to do on a Subscription this will wake up a Dispatch Worker if it is
042 * waiting for messages to dispatch
043 *
044 * @param sub the Subscription that now has messages to dispatch
045 */
046 public void wakeup(Subscription sub);
047
048 /**
049 * Called to indicate that there is work to do this will wake up a Dispatch Worker if it is
050 * waiting for messages to dispatch
051 */
052 public void wakeup();
053
054 /**
055 * Add an active subscription
056 *
057 * @param client
058 * @param sub
059 */
060 public void addActiveSubscription(BrokerClient client, Subscription sub);
061
062 /**
063 * remove an active subscription
064 *
065 * @param client
066 * @param sub
067 */
068 public void removeActiveSubscription(BrokerClient client, Subscription sub);
069
070 }