    001    /*
    002     * Copyright 2009 Red Hat, Inc.
    003     * Red Hat licenses this file to you under the Apache License, version
    004     * 2.0 (the "License"); you may not use this file except in compliance
    005     * with the License.  You may obtain a copy of the License at
    006     *    http://www.apache.org/licenses/LICENSE-2.0
    007     * Unless required by applicable law or agreed to in writing, software
    008     * distributed under the License is distributed on an "AS IS" BASIS,
    009     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
    010     * implied.  See the License for the specific language governing
    011     * permissions and limitations under the License.
    012     */
    013
    014    package org.hornetq.api.core;
    015
    016    import org.hornetq.api.core.client.ClientSessionFactory;
    017    import org.hornetq.core.protocol.core.Packet;
    018    import org.hornetq.spi.core.protocol.RemotingConnection;
    019
    020    /**
    021     * This is class is a simple way to intercepting calls on HornetQ client and servers.
    022     * <p/>
    023     * To add an interceptor to HornetQ server, you have to modify hornetq-configuration.xml.
    024     * To add it to a client, use {@link ClientSessionFactory#addInterceptor(Interceptor)}
    025     *
    026     * @author clebert.suconic@jboss.com
    027     * @author <a href="mailto:tim.fox@jboss.com">Tim Fox</a>
    028     */
    029    public interface Interceptor
    030    {
    031       /**
    032        * Intercepts a packet which is received before it is sent to the channel
    033        *
    034        * @param packet     the packet being received
    035        * @param connection the connection the packet was received on
    036        * @return {@code true} to process the next interceptor and handle the packet,
    037        *         {@code false} to abort processing of the packet
    038        * @throws HornetQException
    039        */
    040       boolean intercept(Packet packet, RemotingConnection connection) throws HornetQException;
    041    }