## net.i2p.router
Class MessageValidator

    java.lang.Object
      net.i2p.router.MessageValidator

    public class MessageValidator

extends Object

Singleton to manage the logic (and historical data) to determine whether a message is valid or not (meaning it isn't expired and hasn't already been received). We'll need a revamp once we start dealing with long message expirations (since it might involve keeping a significant number of entries in memory), but that probably won't be necessary until I2P 3.0.

Constructor Summary
`MessageValidator(RouterContext context)`

Method Summary
`(package private) void` `shutdown()`
`void` `startup()`
`String` `validateMessage(long expiration)` Only check the expiration for the message
`String` `validateMessage(long messageId, long expiration)` Determine if this message should be accepted as valid (not expired, not a duplicate)

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### MessageValidator

    public MessageValidator(RouterContext context)

Method Detail

### validateMessage

    public String validateMessage(long messageId,
                                  long expiration)

  Determine if this message should be accepted as valid (not expired, not a duplicate)

  Returns:
    reason why the message is invalid (or null if the message is valid)

### validateMessage

    public String validateMessage(long expiration)

  Only check the expiration for the message

### startup

    public void startup()

### shutdown

    void shutdown()