Class MemoryBackedHistorian
- java.lang.Object
-
- com.inductiveautomation.gateway.tsdb.historians.MemoryBackedHistorian
-
- All Implemented Interfaces:
Historian
,StorageSession
,java.lang.AutoCloseable
public class MemoryBackedHistorian extends java.lang.Object implements Historian, StorageSession
A tag historian that stores data in memory. Supports max age and max size constraints, on the historian, and per-tag.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
MemoryBackedHistorian.Tag
-
Field Summary
-
Fields inherited from interface com.inductiveautomation.gateway.tsdb.api.Historian
QUALITY_NOT_FOUND
-
-
Constructor Summary
Constructors Constructor Description MemoryBackedHistorian()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addNode(MemoryBackedHistorian.Tag node)
java.util.List<java.lang.String>
browse(java.util.Optional<java.lang.String> filter)
Returns a list of paths with data stored, optionally matching a filter.void
close()
StorageSession
createStorageSession()
Used to store values to the historian.void
delete(java.util.List<java.lang.String> paths)
Deletes the tags and all data for the specified paths.<T> T
getProperty(Property<T> prop)
Returns the configured or status property requested, or the default value if no further info is available.Status
getQueryStatus()
Returns the status of the storage system.Status
getStorageStatus()
Returns the status of the storage system.java.lang.Long
getTotalDataCount()
void
initialize(PropertySet properties)
protected void
performTimePruning(boolean force)
QueryResult
query(java.util.List<java.lang.String> tags, long startTime, long endTime, boolean includeBounding)
Queries the values for the given paths over the specified span of time.void
register(java.lang.String tag, PropertySet properties)
Provides information about a path.void
shutdown()
void
store(java.lang.String tag, java.lang.Object value, int quality, long timestamp)
Stores a value for the given tag path.
-
-
-
Method Detail
-
initialize
public void initialize(PropertySet properties) throws java.lang.Exception
- Specified by:
initialize
in interfaceHistorian
- Throws:
java.lang.Exception
-
getProperty
@Nullable public <T> T getProperty(Property<T> prop)
Description copied from interface:Historian
Returns the configured or status property requested, or the default value if no further info is available. Most of these properties are defined in HistorianProperties.- Specified by:
getProperty
in interfaceHistorian
-
getTotalDataCount
public java.lang.Long getTotalDataCount()
-
register
public void register(java.lang.String tag, PropertySet properties)
Description copied from interface:Historian
Provides information about a path. May be called before or after values have been stored, will replace any previous information stored for a path. The property values are usually defined in HistorianProperties.
-
store
public void store(java.lang.String tag, java.lang.Object value, int quality, long timestamp) throws java.lang.Exception
Description copied from interface:StorageSession
Stores a value for the given tag path.- Specified by:
store
in interfaceStorageSession
- Throws:
java.lang.Exception
-
performTimePruning
protected void performTimePruning(boolean force)
-
browse
public java.util.List<java.lang.String> browse(java.util.Optional<java.lang.String> filter)
Description copied from interface:Historian
Returns a list of paths with data stored, optionally matching a filter.
-
delete
public void delete(java.util.List<java.lang.String> paths)
Description copied from interface:Historian
Deletes the tags and all data for the specified paths. Paths may be wildcards using "*". Only expected to work if the historian supports storage, as indicated by getStorageStatus().
-
query
public QueryResult query(java.util.List<java.lang.String> tags, long startTime, long endTime, boolean includeBounding)
Description copied from interface:Historian
Queries the values for the given paths over the specified span of time. The implementation will conform to the following rules:
- If endTime is less than start time, results MAY be provided latest first. If that is not possible, the parameters will be swapped and values returned as normal.
- The result will have a unique PathInfo item for EACH of the paths passed in. If a path is specified multiple times, it will be returned multiple times.
- If a path is not valid, the query result will return ONE DataPoint for the query start time with a quality of 404 (NOT FOUND)
- The timestamps for a given path will be ascending, though between paths they may not be.
-
addNode
protected void addNode(MemoryBackedHistorian.Tag node)
-
getStorageStatus
public Status getStorageStatus()
Description copied from interface:Historian
Returns the status of the storage system. If the system does not support storage, NotAvailable will be returned. If this is the case, calls to createStorageSession will fail.- Specified by:
getStorageStatus
in interfaceHistorian
-
getQueryStatus
public Status getQueryStatus()
Description copied from interface:Historian
Returns the status of the storage system. If the system does not support querying, NotAvailable will be returned.- Specified by:
getQueryStatus
in interfaceHistorian
-
createStorageSession
public StorageSession createStorageSession()
Description copied from interface:Historian
Used to store values to the historian. Should be used for the immediate set of values and then closed. It should not be held open for longer than necessary.It implements AutoClosable, and should often be used in a try-with-resources block, such as:
try(StorageSession s = historian.createStorageSession()){ s.store... }Important: Not every historian will support storage, some are read-only. This can be checked by calling getStorageStatus() and checking the return for "NotSupported".
- Specified by:
createStorageSession
in interfaceHistorian
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Throws:
java.io.IOException
-
-