net.i2p.router.peermanager

## Class DBHistory

- java.lang.Object
- - net.i2p.router.peermanager.DBHistory

-     public class DBHistory
      extends Object

  History of NetDb related activities (lookups, replies, stores, etc)

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `DBHistory(RouterContext context, String statGroup)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `coalesceStats()`
    `RateStat` | `getFailedLookupRate()` how often does the peer fail to reply to a lookup request, broken into 1 hour and 1 day periods
    `long` | `getFailedLookups()` how many times we have sent them a db lookup and not received the value or a lookup reply
    `RateStat` | `getInvalidReplyRate()` not sure how much this is used, to be investigated
    `long` | `getLastLookupFailed()` Not persisted until 0.9.24
    `long` | `getLastLookupSuccessful()` Not persisted until 0.9.24
    `long` | `getLastStoreFailed()` Not persisted until 0.9.24
    `long` | `getLastStoreSuccessful()` Not persisted until 0.9.24
    `long` | `getSuccessfulLookups()` how many times we have sent them a db lookup and received the value back from them
    `long` | `getUnpromptedDbStoreNew()` how many times have they sent us data we didn't ask for and that we've never seen?
    `long` | `getUnpromptedDbStoreOld()` how many times have they sent us data we didn't ask for but that we have seen?
    `void` | `load(Properties props)`
    `void` | `lookupFailed()` Note that the peer failed to respond to the db lookup in any way
    `void` | `lookupReply(int newPeers, int oldPeers, int invalid, int duplicate)` Receive a lookup reply from the peer, where they gave us the specified info
    `void` | `lookupSuccessful()` Note that the peer was not only able to respond to the lookup, but sent us the data we wanted!
    `void` | `setFailedLookups(long num)`
    `void` | `setSuccessfulLookups(long num)`
    `void` | `setUnpromptedDbStoreNew(long num)`
    `void` | `setUnpromptedDbStoreOld(long num)`
    `void` | `store(OutputStream out)` write out the data from the profile to the stream including comments
    `void` | `store(OutputStream out, boolean addComments)` write out the data from the profile to the stream
    `void` | `storeFailed()` Note that floodfill verify failed
    `void` | `storeSuccessful()` Note that we successfully stored to a floodfill peer and verified the result by asking another floodfill peer
    `void` | `unpromptedStoreReceived(boolean wasNew)` Note that the peer sent us a data point without us asking for it

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

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

- - ### Constructor Detail

    - #### DBHistory

          public DBHistory(RouterContext context,
                           String statGroup)

  - ### Method Detail

    - #### coalesceStats

          public void coalesceStats()

    - #### getFailedLookupRate

          public RateStat getFailedLookupRate()

      how often does the peer fail to reply to a lookup request, broken into 1 hour and 1 day periods

    - #### getFailedLookups

          public long getFailedLookups()

      how many times we have sent them a db lookup and not received the value or a lookup reply

    - #### getInvalidReplyRate

          public RateStat getInvalidReplyRate()

      not sure how much this is used, to be investigated

    - #### getLastLookupFailed

          public long getLastLookupFailed()

      Not persisted until 0.9.24

    - #### getLastLookupSuccessful

          public long getLastLookupSuccessful()

      Not persisted until 0.9.24

    - #### getLastStoreFailed

          public long getLastStoreFailed()

      Not persisted until 0.9.24

    - #### getLastStoreSuccessful

          public long getLastStoreSuccessful()

      Not persisted until 0.9.24

    - #### getSuccessfulLookups

          public long getSuccessfulLookups()

      how many times we have sent them a db lookup and received the value back from them

    - #### getUnpromptedDbStoreNew

          public long getUnpromptedDbStoreNew()

      how many times have they sent us data we didn't ask for and that we've never seen?

    - #### getUnpromptedDbStoreOld

          public long getUnpromptedDbStoreOld()

      how many times have they sent us data we didn't ask for but that we have seen?

    - #### load

          public void load(Properties props)

    - #### lookupFailed

          public void lookupFailed()

      Note that the peer failed to respond to the db lookup in any way

    - #### lookupReply

          public void lookupReply(int newPeers,
                                  int oldPeers,
                                  int invalid,
                                  int duplicate)

      Receive a lookup reply from the peer, where they gave us the specified info
      Parameters:
        `newPeers` - number of peers we have never seen before
        `oldPeers` - number of peers we have seen before
        `invalid` - number of peers that are invalid / out of date / otherwise b0rked
        `duplicate` - number of peers we asked them not to give us (though they're allowed to send us themselves if they don't know anyone else)

    - #### lookupSuccessful

          public void lookupSuccessful()

      Note that the peer was not only able to respond to the lookup, but sent us the data we wanted!

    - #### setFailedLookups

          public void setFailedLookups(long num)

    - #### setSuccessfulLookups

          public void setSuccessfulLookups(long num)

    - #### setUnpromptedDbStoreNew

          public void setUnpromptedDbStoreNew(long num)

    - #### setUnpromptedDbStoreOld

          public void setUnpromptedDbStoreOld(long num)

    - #### store

          public void store(OutputStream out)
                     throws IOException

      write out the data from the profile to the stream including comments
      Throws:
        `IOException`

    - #### store

          public void store(OutputStream out,
                            boolean addComments)
                     throws IOException

      write out the data from the profile to the stream
      Parameters:
        `addComments` - add comment lines to the output
      Throws:
        `IOException`

    - #### storeFailed

          public void storeFailed()

      Note that floodfill verify failed

    - #### storeSuccessful

          public void storeSuccessful()

      Note that we successfully stored to a floodfill peer and verified the result by asking another floodfill peer

    - #### unpromptedStoreReceived

          public void unpromptedStoreReceived(boolean wasNew)

      Note that the peer sent us a data point without us asking for it
      Parameters:
        `wasNew` - whether we already knew about this data point or not