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    }