tigase.server.filters

## Class PacketCounter

- java.lang.Object
- - tigase.server.filters.PacketCounter

- All Implemented Interfaces:
    PacketFilterIfc

      public class PacketCounter
      extends Object
      implements PacketFilterIfc

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `PacketCounter()`
    `PacketCounter(boolean detailedOtherStat)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Packet` | `filter(Packet packet)` This is the actual packet filtering method.
    `void` | `getStatistics(StatisticsList list)` A filter may optionally return some processing statistics.
    `void` | `init(String name, QueueType qType)` The method initializes the filter.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### PacketCounter

          public PacketCounter()

    - #### PacketCounter

          public PacketCounter(boolean detailedOtherStat)

  - ### Method Detail

    - #### filter

          public Packet filter(Packet packet)

      Description copied from interface: `PacketFilterIfc`
      This is the actual packet filtering method. It receives a packet as a parameter and may make any change to the packet it wishes, remove or add specific payloads or redirect the packet to specific destination. Please note! it is recommended not to modify the actual packet itself. If the filter needs to make any changes to the packet it should create a copy of the object, then make any changes on the copy and return the copy as the result. It may also optionally block the packet from further processing. This means that the packet is effectivelly dropped and forgotten.
      If the method returns a `Packet` as a result. It is normally recommended not to modify the existing packet as it maybe processed simultanuously by other components/threads at the same time. Modifying packet while it is being processed may lead to unpredictable results. Therefore, if the filter wants to modify the packet it should create a copy of the packet and return modified copy from the method. If the filter decided to block the packet it just has to return null. In most cases, however the method returns the packet it received as a parameter to method call.
      Specified by:
        `filter` in interface `PacketFilterIfc`
      Parameters:
        `packet` - for the filter processing.
        Please note, the packet filtering may affect performance significantly therefore this method should be carefully tested and optimized under a high load.
      Returns:
        a Packet object which is further processed by the system. If the method decided to block the packet it returns null. If the method want the packet to be processed without any modifications it returns the same object it received as a parameter. It may also return a modified copy of the Packet.

    - #### getStatistics

          public void getStatistics(StatisticsList list)

      Description copied from interface: `PacketFilterIfc`
      A filter may optionally return some processing statistics. Please note the method may be called quite frequently (once a second) therefore no expensive calculation should be performed inside the method.
      Specified by:
        `getStatistics` in interface `PacketFilterIfc`
      Parameters:
        `list` - of statistics created by the master object. The packet instance should add its statistics to the list.

    - #### init

          public void init(String name,
                           QueueType qType)

      Description copied from interface: `PacketFilterIfc`
      The method initializes the filter. It is always called only once after an instance of the filter has been created.
      Specified by:
        `init` in interface `PacketFilterIfc`
      Parameters:
        `name` - is a component name which loaded and initialized the filter. This is the name of the component which uses the filter.
        `qType` - is a packet queue type, differnt one for outgoing traffic and different for incoming. A filter may want to treat the traffic differently depending on the direction it flows.

Copyright © 2004–2020 "Tigase, Inc.". All rights reserved.