|
| 1 | +# Glossary |
| 2 | + |
| 3 | +* [AboutInfo](#aboutinfo) |
| 4 | +* [Column](#column) |
| 5 | +* [ColumnConfiguration](#columnconfiguration) |
| 6 | +* [ColumnRole](#columnrole) |
| 7 | +* [CompositeDataCooker](#compositedatacooker) |
| 8 | +* [CustomDataProcessor](#customdataprocessor) |
| 9 | +* [DataCooker](#datacooker) |
| 10 | +* [DataSource](#datasource) |
| 11 | +* [DynamicTable](#dynamictable) |
| 12 | +* [Pivot Column](#pivot-column) |
| 13 | +* [Pivot Table](#pivot-table) |
| 14 | +* [Plugin](#plugin) |
| 15 | +* [Processing Pipeline](#processing-pipeline) |
| 16 | +* [ProcessingSource](#processingsource) |
| 17 | +* [Projection](#projection) |
| 18 | +* [SDK Driver](#sdk-driver) |
| 19 | +* [Simple Table](#simple-table) |
| 20 | +* [SourceDataCooker](#sourcedatacooker) |
| 21 | +* [SourceParser](#sourceparser) |
| 22 | +* [Special Columns](#special-columns) |
| 23 | +* [Table](#table) |
| 24 | +* [TableBuilder](#tablebuilder) |
| 25 | +* [Table Building Cycle](#table-building-cycle) |
| 26 | +* [TableCommand](#tablecommand) |
| 27 | +* [TableConfiguration](#tableconfiguration) |
| 28 | +* [VisibleDomainSensitiveProjection](#visibledomainsensitiveprojection) |
| 29 | +* [Windows Performance Analyzer](#windows-performance-analyzer) |
| 30 | + |
| 31 | +--- |
| 32 | + |
| 33 | +## AboutInfo |
| 34 | + |
| 35 | +Exposes information about a plugin, such as its authors, copyright, and license. See [Adding About Information](./Using-the-SDK/Advanced/Adding-About-Information.md). |
| 36 | + |
| 37 | +## Column |
| 38 | + |
| 39 | +A ([ColumnConfiguration](#columnconfiguration), [Projection](#projection)) pair that defines data inside a [Table](#table). |
| 40 | + |
| 41 | +See also: [Special Columns](#special-columns) |
| 42 | + |
| 43 | +## ColumnConfiguration |
| 44 | + |
| 45 | +Information about a column of a [Table](#table). Contains the column's name, metadata, and [UIHints](#uihints). |
| 46 | + |
| 47 | +See also: [Projection](#projection). |
| 48 | + |
| 49 | +## ColumnRole |
| 50 | + |
| 51 | +Meta-information about a [Column](#column) that defines the Column's role in data presentation. For example, a Column that contains a `Timestamp` whose value indicates when an event occured relative to the start of a [DataSource](#datasource) may be marked as a "start time" Column. |
| 52 | + |
| 53 | +## CompositeDataCooker |
| 54 | + |
| 55 | +A [DataCooker](#datacooker) that receives input solely from other DataCookers. |
| 56 | + |
| 57 | +## CustomDataProcessor |
| 58 | + |
| 59 | +Component responsible for processing a [DataSource](#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](#datacooker) or [Table](#table). |
| 60 | + |
| 61 | +In most situations, a CustomDataProcessor will further delegate the responsibility of processing a DataSource to a [SourceParser](#sourceparser). |
| 62 | + |
| 63 | +A CustomDataProcessor is responsible for building any [Simple Tables](#simple-table) discovered by the [ProcessingSource](#processingsource) that created it. |
| 64 | + |
| 65 | +## DataCooker |
| 66 | + |
| 67 | +Component of a [Processing Pipeline](#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. |
| 68 | + |
| 69 | +See also: [SourceDataCooker](#sourcedatacooker) and [CompositeDataCooker](#compositedatacooker). |
| 70 | + |
| 71 | +## DataSource |
| 72 | + |
| 73 | +An input to be processed by a [CustomDataProcessor](#customdataprocessor). In most situations, this is a `FileDataSource` that contains the full path to a file specified by a user. |
| 74 | + |
| 75 | +## DynamicTable |
| 76 | + |
| 77 | +A [Table](#table) that is built outside of the standard [table building cycle](#table-building-cycle). DynamicTables are commonly built in response to a [TableCommand](#tablecommand) being invoked. |
| 78 | + |
| 79 | +## Pivot Column |
| 80 | + |
| 81 | +NOTE: (Not to be confused with the [Special Column](#special-columns) `PivotColumn`) |
| 82 | + |
| 83 | +A special type of [Column](#column) that should be pivoted about when its [Table](#table) is interpreted as a [Pivot Table](#pivot-table). Any Column that appears in a [TableConfiguration](#tableconfiguration) before the `PivotColumn` is a Pivot Column. |
| 84 | + |
| 85 | +## Pivot Table |
| 86 | + |
| 87 | +A representation of a [Table](#table) where certain [Columns](#column) are pivoted/grouped about. For example, consider this table with 5 rows: |
| 88 | + |
| 89 | +| State | Zip Code | Population | |
| 90 | +|--------------|----------|------------| |
| 91 | +| Washington | 98052 | 65,558 | |
| 92 | +| New York | 10023 | 60,998 | |
| 93 | +| Washington | 98101 | 13,877 | |
| 94 | +| Washington | 98109 | 20,715 | |
| 95 | +| New York | 10025 | 94,600 | |
| 96 | + |
| 97 | +If the "State" column above is a [Pivot Column](#pivot-column), the 5 rows would be grouped into the following Pivot Table: |
| 98 | + |
| 99 | +| State | Zip Code | Population | |
| 100 | +|--------------|----------|------------| |
| 101 | +| > Washington | | | |
| 102 | +| | 98052 | 65,558 | |
| 103 | +| | 98101 | 13,877 | |
| 104 | +| | 98109 | 20,715 | |
| 105 | +| > New York | | | |
| 106 | +| | 10023 | 60,998 | |
| 107 | +| | 10025 | 94,600 | |
| 108 | + |
| 109 | +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](#windows-performance-analyzer) to use pivot information in a [Table Configuration](#tableconfiguration) to present a plugin's Table as a Pivot Table. |
| 110 | + |
| 111 | +## Plugin |
| 112 | + |
| 113 | +A collection of one-or-more [ProcessingSources](#processingsource) that collectively create zero-or-more [Tables](#table) and consist of zero-or-more [DataCookers](#datacooker). |
| 114 | + |
| 115 | +## Processing Pipeline |
| 116 | + |
| 117 | +A collection of [DataCookers](#datacooker) and [SourceParsers](#sourceparser) that define a structured flow of data. |
| 118 | + |
| 119 | +## ProcessingSource |
| 120 | + |
| 121 | +An entrypoint for a [Plugin](#plugin). A ProcessingSource |
| 122 | +1. Declares a human-readable name and description |
| 123 | +2. Defines the [DataSource(s)](#datasource) it supports |
| 124 | +3. Creates the [CustomDataProcessor](#customdataprocessor) that will process instances of supported DataSources |
| 125 | +4. Advertises the [Table(s)](#table) that may be built in response to DataSources being processed |
| 126 | + |
| 127 | +## Projection |
| 128 | + |
| 129 | +A function that maps a row index for a [Table](#table) to a piece of data. Conceptually, a Projection is combined with a [ColumnConfiguration](#columnconfiguration) to complete define a Table's [Column](#column): the ColumnConfiguration defines the name and metadata about a Column, and its associated Projection defines the Column's data. |
| 130 | + |
| 131 | +## SDK Driver |
| 132 | + |
| 133 | +A program that utilizes the SDK and SDK plugins to process [Data Sources](#datasource) and present information to users. |
| 134 | + |
| 135 | +See also: [Windows Performance Analyzer](#windows-performance-analyzer). |
| 136 | + |
| 137 | +## Simple Table |
| 138 | + |
| 139 | +A [Table](#table) variant that cannot participate in a [Processing Pipeline](#processing-pipeline) and must be built by a [CustomDataProcessor](#customdataprocessor). Simple Tables should only be used if your plugin does not use [DataCookers](#datacooker). 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](#table). |
| 140 | + |
| 141 | +## SourceDataCooker |
| 142 | + |
| 143 | +A [DataCooker](#datacooker) that receives input from a specific [SourceParser](#sourceparser). A SourceDataCooker may also receive input from other DataCookers of the same SourceParser. |
| 144 | + |
| 145 | +## SourceParser |
| 146 | + |
| 147 | +An object that a [CustomDataProcessor](#customdataprocessor) typically tasks with parsing a [DataSource](#datasource) into individual records. The records that a SourceParser emits typically begin a [Processing Pipeline](#processing-pipeline), wherein [DataCookers](#datacooker) further process data to be consumed by [Tables](#table). |
| 148 | + |
| 149 | +## Special Columns |
| 150 | + |
| 151 | +Columns that all [Tables](#table) may use in their [TableConfiguration](#tableconfiguration) and denote special behavior. These columns are |
| 152 | +* `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 Columns](#pivot-column) |
| 153 | +* `GraphColumn`: a column that marks the start of columns that can/should be graphed |
| 154 | +* `LeftFreezeColumn`: a column that marks the end of columns that should be frozen in GUIs |
| 155 | +* `RightFreezeColumn`: a column that marks the start of columns that should be frozen in GUIs |
| 156 | + |
| 157 | +## Table |
| 158 | + |
| 159 | +A collection of one-or-more columns that contain data. Each column of a Table must consist of the same number of rows. |
| 160 | + |
| 161 | +A Table may receive data from one-or-more [DataCookers](#datacooker). A Table is also responsible for "building itself" by having a static `Build` method interacts with a [TableBuilder](#tablebuilder). |
| 162 | + |
| 163 | +## TableBuilder |
| 164 | + |
| 165 | +The object used to concretely construct [Tables](#table) and [Simple Tables](#simple-table). When a [CustomDataProcessor](#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](#column) and [TableConfigurations](#tableconfiguration) to. |
| 166 | + |
| 167 | +## Table Building Cycle |
| 168 | + |
| 169 | +The standard process used to construct [Tables](#table). This process involves |
| 170 | +1. A user specifying which [DataSource(s)](#datasource) to process |
| 171 | +2. [CustomDataProcessor(s)](#customdataprocessor) being given the selected DataSources to process |
| 172 | +3. [Simple Tables](#simple-table) being built by these CustomDataProcessor(s) |
| 173 | +4. [DataCooker(s)](#datacooker) further processing data produced by any [SourceParsers](#sourceparser) used by the CustomDataProcessor(s) referenced above |
| 174 | +5. [Tables](#table) "building themselves" from the data produced by these DataCookers. |
| 175 | + |
| 176 | +## TableCommand |
| 177 | + |
| 178 | +An action that can be called on a [Table](#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. |
| 179 | + |
| 180 | +A common use-case of TableCommands is creating [DynamicTables](#dynamictable) |
| 181 | + |
| 182 | +## TableConfiguration |
| 183 | + |
| 184 | +A pre-defined collection of properties for a [Table](#table). This includes, but is not limited to, |
| 185 | +* The order of [Columns](#column) in the Table |
| 186 | +* An initial filter to apply to the Table |
| 187 | +* [ColumnRoles](#columnrole) for Columns in the table |
| 188 | + |
| 189 | +## VisibleDomainSensitiveProjection |
| 190 | + |
| 191 | +A [Projection](#projection) that depends upon the visible subrange of values spanned by the Projection's [Table](#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_. |
| 192 | + |
| 193 | +## Windows Performance Analyzer |
| 194 | + |
| 195 | +An [SDK Driver](#sdk-driver) that can display [Tables](#table) plugins create as [Pivot Tables](#pivot-table) and graph data in various formats. |
0 commit comments