Class RegisterBlockFetcher

  • All Implemented Interfaces:

    
    public class RegisterBlockFetcher
    
                        

    A RegisterBlockFetcher needs to have a Schema, a target RegisterBlock and a ModbusDevice

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      public class RegisterBlockFetcher.FetchBatch
      public final class RegisterBlockFetcher.MergedFetchBatch

      When doing fetch optimization we are sometimes combining the FetchBatches. This is the class to hold such a combination. This is needed to be able to handle the retry in case of a read error

    • Field Summary

      Fields 
      Modifier and Type Field Description
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • Method Summary

      Modifier and Type Method Description
      final Unit update(Field field) We force an immediate update of all registers needed for the provided field.
      final Unit update(Long maxAge) Update all registers related to the needed fields to be updated with a maximum age of the provided milliseconds
      final Unit update() Update all registers related to the needed fields to be updated with a maximum age of the provided milliseconds
      List<RegisterBlockFetcher.FetchBatch> calculateFetchBatches(Long maxAge) Determine which sets of registers need to be retrieved again.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • RegisterBlockFetcher

        RegisterBlockFetcher(SchemaDevice schemaDevice, ModbusDevice modbusDevice)
    • Method Detail

      • update

         final Unit update(Field field)

        We force an immediate update of all registers needed for the provided field. No batching, buffering or any optimization is done.

        Parameters:
        field - The field that must be updated
      • update

        @JvmOverloads() final Unit update(Long maxAge)

        Update all registers related to the needed fields to be updated with a maximum age of the provided milliseconds

        Parameters:
        maxAge - maximum age of the fields in milliseconds
      • update

        @JvmOverloads() final Unit update()

        Update all registers related to the needed fields to be updated with a maximum age of the provided milliseconds

      • calculateFetchBatches

         List<RegisterBlockFetcher.FetchBatch> calculateFetchBatches(Long maxAge)

        Determine which sets of registers need to be retrieved again.

        Parameters:
        maxAge - The maximum age (in milliseconds) of the data for it to need an update.
        Returns:

        The list of address ranges that must be retrieved (Sorted by the start address)