CounterAsyncChannel xref

View Javadoc

    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  }