alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Tomcat example source code file (ChannelInterceptor.java)

This example Tomcat source code file (ChannelInterceptor.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Tomcat tags/keywords

channelexception, channelexception, channelinterceptor, channelinterceptor, channelmessage, channelmessage, heartbeat, interceptorevent, interceptorpayload, member, member, membershiplistener, string

The Tomcat ChannelInterceptor.java source code

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.catalina.tribes;

import org.apache.catalina.tribes.group.InterceptorPayload;

/**
 * A ChannelInterceptor is an interceptor that intercepts 
 * messages and membership messages in the channel stack.
 * This allows interceptors to modify the message or perform
 * other actions when a message is sent or received.<br>
 * Interceptors are tied together in a linked list.
 * @see org.apache.catalina.tribes.group.ChannelInterceptorBase
 * @author Filip Hanik
 * @version $Revision: 467222 $, $Date: 2006-10-24 05:17:11 +0200 (mar., 24 oct. 2006) $
 */   

public interface ChannelInterceptor extends MembershipListener, Heartbeat {

    /**
     * An interceptor can react to a message based on a set bit on the 
     * message options. <br>
     * When a message is sent, the options can be retrieved from ChannelMessage.getOptions()
     * and if the bit is set, this interceptor will react to it.<br>
     * A simple evaluation if an interceptor should react to the message would be:<br>
     * <code>boolean react = (getOptionFlag() == (getOptionFlag() & ChannelMessage.getOptions()));
* The default option is 0, meaning there is no way for the application to trigger the * interceptor. The interceptor itself will decide.<br> * @return int * @see ChannelMessage#getOptions() */ public int getOptionFlag(); /** * Sets the option flag * @param flag int * @see #getOptionFlag() */ public void setOptionFlag(int flag); /** * Set the next interceptor in the list of interceptors * @param next ChannelInterceptor */ public void setNext(ChannelInterceptor next) ; /** * Retrieve the next interceptor in the list * @return ChannelInterceptor - returns the next interceptor in the list or null if no more interceptors exist */ public ChannelInterceptor getNext(); /** * Set the previous interceptor in the list * @param previous ChannelInterceptor */ public void setPrevious(ChannelInterceptor previous); /** * Retrieve the previous interceptor in the list * @return ChannelInterceptor - returns the previous interceptor in the list or null if no more interceptors exist */ public ChannelInterceptor getPrevious(); /** * The <code>sendMessage method is called when a message is being sent to one more destinations. * The interceptor can modify any of the parameters and then pass on the message down the stack by * invoking <code>getNext().sendMessage(destination,msg,payload)
* Alternatively the interceptor can stop the message from being sent by not invoking * <code>getNext().sendMessage(destination,msg,payload)
* If the message is to be sent asynchronous the application can be notified of completion and * errors by passing in an error handler attached to a payload object.<br> * The ChannelMessage.getAddress contains Channel.getLocalMember, and can be overwritten * to simulate a message sent from another node.<br> * @param destination Member[] - the destination for this message * @param msg ChannelMessage - the message to be sent * @param payload InterceptorPayload - the payload, carrying an error handler and future useful data, can be null * @throws ChannelException * @see ErrorHandler * @see InterceptorPayload */ public void sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload) throws ChannelException; /** * the <code>messageReceived is invoked when a message is received. * <code>ChannelMessage.getAddress() is the sender, or the reply-to address * if it has been overwritten. * @param data ChannelMessage */ public void messageReceived(ChannelMessage data); /** * The <code>heartbeat() method gets invoked periodically * to allow interceptors to clean up resources, time out object and * perform actions that are unrelated to sending/receiving data. */ public void heartbeat(); /** * Intercepts the <code>Channel.hasMembers() method * @return boolean - if the channel has members in its membership group * @see Channel#hasMembers() */ public boolean hasMembers() ; /** * Intercepts the code>Channel.getMembers()</code> method * @return Member[] * @see Channel#getMembers() */ public Member[] getMembers() ; /** * Intercepts the code>Channel.getLocalMember(boolean)</code> method * @param incAliveTime boolean * @return Member * @see Channel#getLocalMember(boolean) */ public Member getLocalMember(boolean incAliveTime) ; /** * Intercepts the code>Channel.getMember(Member)</code> method * @param mbr Member * @return Member - the actual member information, including stay alive * @see Channel#getMember(Member) */ public Member getMember(Member mbr); /** * Starts up the channel. This can be called multiple times for individual services to start * The svc parameter can be the logical or value of any constants * @param svc int value of <BR> * Channel.DEFAULT - will start all services <BR> * Channel.MBR_RX_SEQ - starts the membership receiver <BR> * Channel.MBR_TX_SEQ - starts the membership broadcaster <BR> * Channel.SND_TX_SEQ - starts the replication transmitter<BR> * Channel.SND_RX_SEQ - starts the replication receiver<BR> * @throws ChannelException if a startup error occurs or the service is already started. * @see Channel */ public void start(int svc) throws ChannelException; /** * Shuts down the channel. This can be called multiple times for individual services to shutdown * The svc parameter can be the logical or value of any constants * @param svc int value of <BR> * Channel.DEFAULT - will shutdown all services <BR> * Channel.MBR_RX_SEQ - stops the membership receiver <BR> * Channel.MBR_TX_SEQ - stops the membership broadcaster <BR> * Channel.SND_TX_SEQ - stops the replication transmitter<BR> * Channel.SND_RX_SEQ - stops the replication receiver<BR> * @throws ChannelException if a startup error occurs or the service is already started. * @see Channel */ public void stop(int svc) throws ChannelException; public void fireInterceptorEvent(InterceptorEvent event); interface InterceptorEvent { int getEventType(); String getEventTypeDesc(); ChannelInterceptor getInterceptor(); } }

Other Tomcat examples (source code examples)

Here is a short list of links related to this Tomcat ChannelInterceptor.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.