net.i2p.router.tunnel

## Class BatchedRouterPreprocessor

- java.lang.Object
- - net.i2p.router.tunnel.TrivialPreprocessor
  - - net.i2p.router.tunnel.BatchedPreprocessor
    - - net.i2p.router.tunnel.BatchedRouterPreprocessor

- All Implemented Interfaces:
    TunnelGateway.QueuePreprocessor

      public class BatchedRouterPreprocessor
      extends BatchedPreprocessor

  Honor the 'batchFrequency' tunnel pool setting or the 'router.batchFrequency' router config setting, and track fragmentation.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected HopConfig` | `_hopConfig`
    `protected RouterContext` | `_routerContext`
    `static int` | `DEFAULT_BATCH_FREQUENCY` for IBGWs for efficiency (not our data)
    `static int` | `OB_CLIENT_BATCH_FREQ` for client OBGWs only (our data)
    `static int` | `OB_EXPL_BATCH_FREQ` for exploratory OBGWs only (our tunnel tests and build messages)
    `static String` | `PROP_BATCH_FREQUENCY` How frequently should we flush non-full messages, in milliseconds This goes in I2CP custom options for the pool.
    `static String` | `PROP_ROUTER_BATCH_FREQUENCY` This goes in router advanced config

    - ### Fields inherited from class net.i2p.router.tunnel.BatchedPreprocessor

      `DEFAULT_DELAY`

    - ### Fields inherited from class net.i2p.router.tunnel.TrivialPreprocessor

      `_context, _dataCache, _log, IV_SIZE, PREPROCESSED_SIZE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BatchedRouterPreprocessor(RouterContext ctx, HopConfig cfg)` for IBGWs
    `BatchedRouterPreprocessor(RouterContext ctx, TunnelCreatorConfig cfg)` for OBGWs

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected long` | `getSendDelay()` how long should we wait before flushing
    `protected void` | `notePreprocessing(long messageId, int numFragments, int totalLength, List<Long> messageIds, String msg)`

    - ### Methods inherited from class net.i2p.router.tunnel.BatchedPreprocessor

      `getDelayAmount, preprocessQueue, send`

    - ### Methods inherited from class net.i2p.router.tunnel.TrivialPreprocessor

      `getInstructionAugmentationSize, getInstructionsSize, preprocess, writeFirstFragment, writeSubsequentFragment`

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

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

- - ### Field Detail

    - #### _routerContext

          protected RouterContext _routerContext

    - #### _hopConfig

          protected HopConfig _hopConfig

    - #### PROP_BATCH_FREQUENCY

          public static final String PROP_BATCH_FREQUENCY

      How frequently should we flush non-full messages, in milliseconds This goes in I2CP custom options for the pool. Only applies to OBGWs.
      See Also:
        Constant Field Values

    - #### PROP_ROUTER_BATCH_FREQUENCY

          public static final String PROP_ROUTER_BATCH_FREQUENCY

      This goes in router advanced config
      See Also:
        Constant Field Values

    - #### OB_CLIENT_BATCH_FREQ

          public static final int OB_CLIENT_BATCH_FREQ

      for client OBGWs only (our data)
      See Also:
        Constant Field Values

    - #### OB_EXPL_BATCH_FREQ

          public static final int OB_EXPL_BATCH_FREQ

      for exploratory OBGWs only (our tunnel tests and build messages)
      See Also:
        Constant Field Values

    - #### DEFAULT_BATCH_FREQUENCY

          public static final int DEFAULT_BATCH_FREQUENCY

      for IBGWs for efficiency (not our data)
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### BatchedRouterPreprocessor

          public BatchedRouterPreprocessor(RouterContext ctx,
                                   TunnelCreatorConfig cfg)

      for OBGWs

    - #### BatchedRouterPreprocessor

          public BatchedRouterPreprocessor(RouterContext ctx,
                                   HopConfig cfg)

      for IBGWs

  - ### Method Detail

    - #### getSendDelay

          protected long getSendDelay()

      how long should we wait before flushing
      Overrides:
        `getSendDelay` in class `BatchedPreprocessor`

    - #### notePreprocessing

          protected void notePreprocessing(long messageId,
                               int numFragments,
                               int totalLength,
                               List<Long> messageIds,
                               String msg)

      Overrides:
        `notePreprocessing` in class `TrivialPreprocessor`