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 }