11 KiB
Glossary
- AboutInfo
- Column
- ColumnConfiguration
- ColumnRole
- Column Variant
- CompositeDataCooker
- CustomDataProcessor
- DataCooker
- DataSource
- DynamicTable
- Pivot Column
- Pivot Table
- Plugin
- Processing Pipeline
- ProcessingSource
- Projection
- SDK Driver
- Simple Table
- SourceDataCooker
- SourceParser
- Special Columns
- Table
- TableBuilder
- Table Building Cycle
- TableCommand
- TableConfiguration
- VisibleDomainSensitiveProjection
- Windows Performance Analyzer
AboutInfo
Exposes information about a plugin, such as its authors, copyright, and license. See Adding About Information.
Column
A (ColumnConfiguration, Projection) pair that defines data inside a Table.
See also: Special Columns
ColumnConfiguration
Information about a column of a Table. Contains the column's name, metadata, and UIHints.
See also: Projection.
ColumnRole
Meta-information about a Column that defines the Column's role in data presentation.
For example, a Column of Timestamp
values relative to the start of a DataSource may be marked as a "start time" Column.
ColumnRoles are specified as part of a Table Configuration.
Column Variant
An alternative projection for a column. While table authors are free to define column variants however they wish, variants are often used to provide alternate views of the same underlying data. For example, a "Process" column may define
- one
IProjection<int, string>
variant that projects to the process name - one
IProjection<int, uint>
variant that projects to the process ID
⚠️ Note: column variants cannot be assigned as a column role or highlight entries within a column configuration; only the "base" projection associated with the column may be used for these purposes.
For more information on the different types of column variants, refer to the Adding Column Variants documentation.
CompositeDataCooker
A DataCooker that receives input solely from other DataCookers.
CustomDataProcessor
Component responsible for processing a DataSource. For example, a CustomDataProcessor may be responsible for parsing lines in a .txt
file into LineItem
objects that later get consumed by a DataCooker or Table.
In most situations, a CustomDataProcessor will further delegate the responsibility of processing a DataSource to a SourceParser.
A CustomDataProcessor is responsible for building any Simple Tables discovered by the ProcessingSource that created it.
DataCooker
Component of a Processing Pipeline that consumes data from one or more sources and optionally outputs new data for other components to consume. Conceptually, a DataCooker "cooks" data from one type to another.
See also: SourceDataCooker and CompositeDataCooker.
DataSource
An input to be processed by a CustomDataProcessor. In most situations, this is a FileDataSource
that contains the full path to a file specified by a user.
DynamicTable
A Table that is built outside of the standard table building cycle. DynamicTables are commonly built in response to a TableCommand being invoked.
Pivot Column
NOTE: (Not to be confused with the Special Column PivotColumn
)
A special type of Column that should be pivoted about when its Table is interpreted as a Pivot Table. Any Column that appears in a TableConfiguration before the PivotColumn
is a Pivot Column.
Pivot Table
A representation of a Table where certain Columns are pivoted/grouped about. For example, consider this table with 5 rows:
State | Zip Code | Population |
---|---|---|
Washington | 98052 | 65,558 |
New York | 10023 | 60,998 |
Washington | 98101 | 13,877 |
Washington | 98109 | 20,715 |
New York | 10025 | 94,600 |
If the "State" column above is a Pivot Column, the 5 rows would be grouped into the following Pivot Table:
State | Zip Code | Population |
---|---|---|
> Washington | ||
98052 | 65,558 | |
98101 | 13,877 | |
98109 | 20,715 | |
> New York | ||
10023 | 60,998 | |
10025 | 94,600 |
⚠️ Note: the SDK has no understanding of Pivot Tables. Tables created by a plugin are purely "flat" tables - i.e. tables similar the first one above. It is up to programs like Windows Performance Analyzer to use pivot information in a Table Configuration to present a plugin's Table as a Pivot Table.
See also: Wikipedia Pivot Tables.
Plugin
A collection of one-or-more ProcessingSources that collectively create zero-or-more Tables and consist of zero-or-more DataCookers.
Processing Pipeline
A collection of DataCookers and SourceParsers that define a structured flow of data.
ProcessingSource
An entrypoint for a Plugin. A ProcessingSource
- Declares a human-readable name and description
- Defines the DataSource(s) it supports
- Creates the CustomDataProcessor that will process instances of supported DataSources
- Advertises the Table(s) that may be built in response to DataSources being processed
Projection
A function that maps a row index for a Table to a piece of data. Conceptually, a Projection is combined with a ColumnConfiguration to complete define a Table's Column: the ColumnConfiguration defines the name and metadata about a Column, and its associated Projection defines the Column's data.
SDK Driver
A program that utilizes the SDK and SDK plugins to process Data Sources and present information to users.
See also: Windows Performance Analyzer.
Simple Table
A Table variant that cannot participate in a Processing Pipeline and must be built by a CustomDataProcessor. Simple Tables should only be used if your plugin does not use DataCookers. However, since in most data-processing situations it is recommended to use DataCookers to architect your data-processing, it is recommended to use only standard Tables.
SourceDataCooker
A DataCooker that receives input from an associated SourceParser. A SourceDataCooker may also receive input from other SourceDataCookers enabled on the same SourceParser.
SourceParser
An object that a CustomDataProcessor tasks with parsing a DataSource into individual records. The records that a SourceParser emits begin a Processing Pipeline, wherein DataCookers further process data to be consumed by Tables.
Special Columns
Columns that all Tables may use in their TableConfiguration and denote special behavior. These columns are
PivotColumn
: a column that marks the end of columns which should be pivoted about. All columns in a Table that appear before this Special Column are interpreted as Pivot ColumnsGraphColumn
: a column that marks the start of columns that can/should be graphedLeftFreezeColumn
: a column that marks the end of columns that should be frozen in GUIsRightFreezeColumn
: a column that marks the start of columns that should be frozen in GUIs
Table
A collection of one-or-more columns that contain data. Each column of a Table must consist of the same number of rows.
A Table may receive data from one-or-more DataCookers. A Table is also responsible for "building itself" by having a static Build
method interacts with a TableBuilder.
TableBuilder
The object used to concretely construct Tables and Simple Tables. When a CustomDataProcessor is asked to build a Simple Table, or when a normal Table "builds itself," it will be given an instance of an ITableBuilder
to add its Columns and TableConfigurations to.
Table Building Cycle
The standard process used to construct Tables. This process involves
- A user specifying which DataSource(s) to process
- CustomDataProcessor(s) being given the selected DataSources to process
- Simple Tables being built by these CustomDataProcessor(s)
- DataCooker(s) further processing data produced by any SourceParsers used by the CustomDataProcessor(s) referenced above
- Tables "building themselves" from the data produced by these DataCookers.
TableCommand
An action that can be called on a Table. Concretely, a TableCommand is a string => Func
key-value pair where the key is the TableCommand's name and the value is a function to be called when the TableCommand is invoked.
A common use-case of TableCommands is creating DynamicTables
TableConfiguration
A pre-defined collection of properties for a Table. This includes, but is not limited to,
- The order of Columns in the Table
- An initial filter to apply to the Table
- ColumnRoles for Columns in the table
VisibleDomainSensitiveProjection
A Projection that depends upon the visible subrange of values spanned by the Projection's Table's domain. For example, if a Table's domain is time-based (e.g. Timestamp
-based), a VisibleDomainSensitiveProjection could be a Projection that reports the percent of time spent inside a method call relative to the timerange currently visible to the user.
Windows Performance Analyzer
An SDK Driver that can display Tables plugins create as Pivot Tables and graph data in various formats.