1 /*** 2 * 3 * Copyright 2004 Hiram Chirino 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.activeio.filter; 18 19 import java.io.IOException; 20 21 import org.activeio.AsynchChannel; 22 import org.activeio.FilterAsynchChannel; 23 import org.activeio.Packet; 24 25 26 /*** 27 * A CounterAsyncChannel is a simple {@see org.activeio.AsynchChannelFilter} 28 * that counts the number bytes that been sent down and up through the channel. 29 * 30 * The {@see org.activeio.counter.CounterAttribueEnum.COUNTER_INBOUND_COUNT} 31 * and {@see org.activeio.counter.CounterAttribueEnum.COUNTER_OUTBOUND_COUNT} 32 * attributes can be used to find query the channel to get the current inbound and outbound 33 * byte counts. 34 * 35 * @version $Revision$ 36 */ 37 final public class CounterAsyncChannel extends FilterAsynchChannel { 38 39 long inBoundCounter = 0; 40 41 long outBoundCounter = 0; 42 43 /*** 44 * @param next 45 */ 46 public CounterAsyncChannel(AsynchChannel next) { 47 super(next); 48 } 49 50 /*** 51 * @see org.activeio.FilterAsynchChannel#onPacket(org.activeio.channel.Packet) 52 */ 53 public void onPacket(Packet packet) { 54 inBoundCounter += packet.remaining(); 55 super.onPacket(packet); 56 } 57 58 /*** 59 * @see org.activeio.FilterAsynchChannel#write(org.activeio.channel.Packet) 60 */ 61 public void write(Packet packet) throws IOException { 62 outBoundCounter += packet.position(); 63 super.write(packet); 64 } 65 66 public long getInBoundCounter() { 67 return inBoundCounter; 68 } 69 70 public long getOutBoundCounter() { 71 return outBoundCounter; 72 } 73 }