Click or drag to resize
Grid Solutions Framework


The time-series data processing library of the Grid Solutions Framework is a core collection of classes used to manage, process and respond to dynamic changes in fast moving streaming time-series data in real-time. The library components allow applications to be architected as measurement routing systems. Any application can host the library which will allow the system become a "measurement router" that can host a variety of pluggable adapters. More information about the time-series adapters that are available as part of the Grid Solutions Framework can be found in this documentation.

The open Phasor Data Concentrator, Secure Information Exchange Gateway (SIEGate) and the open Historian are examples of projects based on this time-series adapter library.

See the following for documentation for core components of the Grid Solutions Framework: GSF Core Framework


The time-series adapter library can be molded to route measurements in any fashion, but the system defines three fundamental measurement processing categorizations to kick start most any time-series processing architecture; these are the Input, Action and Output interface adapters. These base level adapters are called Iaon Adapters (pronounced "yo-wan" if you want to speak it). Each adapter type performs a basic time-series data operation:

  • Input Adapters: Typically "maps" measurements from a data source (i.e., assigns a timestamp and an ID to measured values parsed from a stream of data), new measurements are presented to the system by calling void OnNewMeasurements(ICollection<IMeasurement> measurements) method.

    Interface: IInputAdapter, base class: InputAdapterBase

  • Action Adapters: Typically filters and sorts measurements by time allowing adapter to take action on a synchronized set of data provided in the abstract void PublishFrame(IFrame frame, int index) method which adapter overrides (note that frame contains a collection of measurements all collected into the same time-indexed frame bucket). If the action causes the creation of new measurements, new measurements are presented to the system by calling void OnNewMeasurements(ICollection<IMeasurement> measurements) method.

    Interface: IActionAdapter, base class: ActionAdapterBase

  • Output Adapters: Typically queues all measurements (no sorting) for processing. Queued measurements are presented to the adapter for processing in the void ProcessMeasurements(IMeasurement[] measurements) method – if measurements continue to build up in memory and are not processed in a timely manner they will be removed from the queue as protective measure to prevent catastrophic out-of-memory failures. Since output adapters are used to archive data this is often the slowest part in the system (disks tend to be a bottleneck), outputs can optionally be set to filter based on a measurement's defined "Source" property – this allows multiple outputs to be targeted to several different distributed outputs which allows large systems to stay ahead of the incoming data stream.

    Interface: IOutputAdapter, base class: OutputAdapterBase