Show / Hide Table of Contents

Class MountedSession

Service provider interface for external sources of session data to be mounted in SQL Race, which can then provide conversions, re-sampling, filters, functions etc.

Intended to be sub-classed to provide an implementation. Implementations must be thread-safe, and do appropriate paging to avoid using too much memory.

Designed to accept live updates and lazy-loaded data. Implementations can do this by treating the MountedSession as mediator for a pipeline receiving data.

Inheritance
System.Object
MountedSession
Implements
IMountedEventsPageSource
IMountedDataPageSource
Namespace: MESL.SqlRace.Domain.MountedSessions
Assembly: MESL.SqlRace.Domain.dll
Syntax
public abstract class MountedSession : Object, IMountedEventsPageSource, IMountedDataPageSource

Constructors

MountedSession(String, DateTimeOffset, Int64, String, Nullable<UInt32>)

Initialises a new instance of the MountedSession class.

Declaration
protected MountedSession(string identifier, DateTimeOffset timestamp, long epoch, string type, Nullable<uint> ownerId)
Parameters
Type Name Description
System.String identifier

Initial session identifier.

System.DateTimeOffset timestamp

Timestamp of the session.

System.Int64 epoch

Base time (nanos since unix epoch).

System.String type

Session type (for information only).

System.Nullable<System.UInt32> ownerId

Owner id, if available.

Properties

AvailableConfiguration

Gets the configuration available to be bound to the session, by unique identifier.

Declaration
public virtual IImmutableDictionary<string, IMountedConfiguration> AvailableConfiguration { get; }
Property Value
Type Description
System.Collections.Immutable.IImmutableDictionary<System.String, IMountedConfiguration>
See Also
BoundConfiguration

BoundConfiguration

Gets the binding of configuration onto the session, expressed as the configuration identifiers and offsets to be applied to avoid channel id conflicts. The order is significant, with the first-listed configuration identifiers taking priority over later identifiers in the event that there are differences between the configuration definitions.

Declaration
public virtual IImmutableList<KeyValuePair<string, uint>> BoundConfiguration { get; }
Property Value
Type Description
System.Collections.Immutable.IImmutableList<System.Collections.Generic.KeyValuePair<System.String, System.UInt32>>

Capabilities

Gets the capabilities exposed by an implementation of MountedSession.

Declaration
public virtual MountedSessionCapabilities Capabilities { get; }
Property Value
Type Description
MountedSessionCapabilities

Configuration

Configuration of the mounted session

Declaration
public virtual ConfigurationView Configuration { get; protected set; }
Property Value
Type Description
MAT.OCS.Configuration.ConfigurationView

Constants

Gets constant values for use with the session.

Declaration
public virtual IImmutableList<Constant> Constants { get; }
Property Value
Type Description
System.Collections.Immutable.IImmutableList<Constant>

Details

Gets the session details (arbitrary human-readable key-value pairs).

Declaration
public virtual IImmutableDictionary<string, object> Details { get; }
Property Value
Type Description
System.Collections.Immutable.IImmutableDictionary<System.String, System.Object>

Epoch

Base time against which all event and data timestamps are relative (as a nanosecond offset).

Declaration
public long Epoch { get; }
Property Value
Type Description
System.Int64

Identifier

Gets the identifier. Roughly equivalent to a file-system filename.

Declaration
public virtual string Identifier { get; }
Property Value
Type Description
System.String

Laps

Gets the current laps, ordered by timestamp.

Declaration
public virtual IImmutableList<MountedLap> Laps { get; }
Property Value
Type Description
System.Collections.Immutable.IImmutableList<MountedLap>
See Also
LapAdded
AddLap(MountedLap)

OwnerId

Gets the owner id used for team or consortium based access to the session

Declaration
public Nullable<uint> OwnerId { get; }
Property Value
Type Description
System.Nullable<System.UInt32>

State

Gets the state of the session. This may change after mounting unless it is Closed.

Declaration
public virtual MountedSessionState State { get; }
Property Value
Type Description
MountedSessionState

TimeRange

Gets the time range (inclusive start and end time), relative to the Epoch. null if there is no data in the session (Empty).

Declaration
public virtual Nullable<TimeRange> TimeRange { get; }
Property Value
Type Description
System.Nullable<TimeRange>

Timestamp

Gets the session timestamp. This is for information only and may not correspond to the local time on a hardware logger. Roughly equivalent to a file-system timestamp.

Declaration
public DateTimeOffset Timestamp { get; }
Property Value
Type Description
System.DateTimeOffset

Type

Gets the session type. For information only.

Declaration
public string Type { get; }
Property Value
Type Description
System.String

Methods

AddConfiguration(IMountedConfiguration)

Adds the specified IMountedConfiguration to AvailableConfiguration and fires ConfigurationAvailable.

Declaration
protected virtual bool AddConfiguration(IMountedConfiguration config)
Parameters
Type Name Description
IMountedConfiguration config

Configuration to add.

Returns
Type Description
System.Boolean

true if the configuration was not previously added (possibly in another session).

AddExclusiveLap(MountedLap)

Adds the lap which must be the only lap in the session. Will be removed if any other lap is added.

Declaration
protected virtual void AddExclusiveLap(MountedLap exclusiveLap)
Parameters
Type Name Description
MountedLap exclusiveLap

The exclusive lap.

Exceptions
Type Condition
System.ArgumentNullException

exclusiveLap

AddLap(MountedLap)

Adds the specified lap to Laps and fires LapAdded.

No sorting or de-duplication logic is applied.

Declaration
protected virtual void AddLap(MountedLap lap)
Parameters
Type Name Description
MountedLap lap

Lap to add.

BindConfiguration(IEnumerable<KeyValuePair<String, UInt32>>)

Binds the specified IMountedConfiguration into BoundConfiguration and fires ConfigurationBound. The offsets must avoid creating overlaps between channels.

Declaration
protected virtual void BindConfiguration(IEnumerable<KeyValuePair<string, uint>> configChannelOffsets)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<System.String, System.UInt32>> configChannelOffsets

Configuration identifiers and channel id offsets.

ExtendTimeRange(TimeRange)

Updates the TimeRange to cover the specified timeRange and fires StartTimeChanged / EndTimeChanged if appropriate.

Declaration
protected virtual void ExtendTimeRange(TimeRange timeRange)
Parameters
Type Name Description
TimeRange timeRange

Time range to be covered.

GetDataTimeRange(UInt32)

Gets the time range (inclusive start and end time) for the specified channel.

Declaration
public virtual Nullable<TimeRange> GetDataTimeRange(uint channelId)
Parameters
Type Name Description
System.UInt32 channelId

Channel id.

Returns
Type Description
System.Nullable<TimeRange>

Time range, relative to the Epoch.

RaiseConfigurationAvailable(MountedSessionEvents.ConfigurationAvailable)

Raises the ConfigurationAvailable event.

Declaration
protected virtual void RaiseConfigurationAvailable(MountedSessionEvents.ConfigurationAvailable e)
Parameters
Type Name Description
MountedSessionEvents.ConfigurationAvailable e

Event args.

RaiseConfigurationBound(MountedSessionEvents.ConfigurationBound)

Raises the ConfigurationBound event.

Declaration
protected virtual void RaiseConfigurationBound(MountedSessionEvents.ConfigurationBound e)
Parameters
Type Name Description
MountedSessionEvents.ConfigurationBound e

Event args.

RaiseDataAdded(MountedSessionEvents.DataAdded)

Raises the DataAdded event.

Declaration
protected virtual void RaiseDataAdded(MountedSessionEvents.DataAdded e)
Parameters
Type Name Description
MountedSessionEvents.DataAdded e

Event args.

RaiseDetailsChanged(MountedSessionEvents.SessionUpdated)

Raises the DetailsChanged event.

Declaration
protected virtual void RaiseDetailsChanged(MountedSessionEvents.SessionUpdated e)
Parameters
Type Name Description
MountedSessionEvents.SessionUpdated e

Event args.

RaiseEndTimeChanged(MountedSessionEvents.TimeRangeChanged)

Raises the EndTimeChanged event.

Declaration
protected virtual void RaiseEndTimeChanged(MountedSessionEvents.TimeRangeChanged e)
Parameters
Type Name Description
MountedSessionEvents.TimeRangeChanged e

Event args.

RaiseEventsAdded(MountedSessionEvents.EventsAdded)

Raises the EventsAdded event.

Declaration
protected virtual void RaiseEventsAdded(MountedSessionEvents.EventsAdded e)
Parameters
Type Name Description
MountedSessionEvents.EventsAdded e

Event args.

RaiseIdentifierChanged(MountedSessionEvents.SessionUpdated)

Raises the IdentifierChanged event.

Declaration
protected virtual void RaiseIdentifierChanged(MountedSessionEvents.SessionUpdated e)
Parameters
Type Name Description
MountedSessionEvents.SessionUpdated e

Event args.

RaiseLapAdded(MountedSessionEvents.LapAdded)

Raises the LapAdded event.

Declaration
protected virtual void RaiseLapAdded(MountedSessionEvents.LapAdded e)
Parameters
Type Name Description
MountedSessionEvents.LapAdded e

Event args.

RaiseStartTimeChanged(MountedSessionEvents.TimeRangeChanged)

Raises the StartTimeChanged event.

Declaration
protected virtual void RaiseStartTimeChanged(MountedSessionEvents.TimeRangeChanged e)
Parameters
Type Name Description
MountedSessionEvents.TimeRangeChanged e

Event args.

RaiseStateChanged(MountedSessionEvents.StateChanged)

Raises the StateChanged event.

Declaration
protected virtual void RaiseStateChanged(MountedSessionEvents.StateChanged e)
Parameters
Type Name Description
MountedSessionEvents.StateChanged e

Event args.

ReadPagedData(UInt32, ReadDirection, Nullable<Int64>, Nullable<Int64>)

Reads pages of data for the specified channelId overlapping the specified time bounds.

Declaration
public virtual IEnumerable<IMountedDataPage> ReadPagedData(uint channelId, ReadDirection pagingDirection, Nullable<long> startTime, Nullable<long> endTime)
Parameters
Type Name Description
System.UInt32 channelId

Channel id.

ReadDirection pagingDirection

Time-order of pages.

System.Nullable<System.Int64> startTime

Optional inclusive start time, relative to the Epoch.

System.Nullable<System.Int64> endTime

Optional inclusive end time, relative to the Epoch.

Returns
Type Description
System.Collections.Generic.IEnumerable<IMountedDataPage>

Zero or more pages.

ReadPagedEvents(ReadDirection, Nullable<Int64>, Nullable<Int64>)

Reads pages of events overlapping the specified time bounds.

Declaration
public virtual IEnumerable<IMountedEventsPage> ReadPagedEvents(ReadDirection pagingDirection, Nullable<long> startTime, Nullable<long> endTime)
Parameters
Type Name Description
ReadDirection pagingDirection

Time-order of pages.

System.Nullable<System.Int64> startTime

Optional inclusive start time, relative to the Epoch.

System.Nullable<System.Int64> endTime

Optional inclusive end time, relative to the Epoch.

Returns
Type Description
System.Collections.Generic.IEnumerable<IMountedEventsPage>

Zero or more pages.

UpdateDetails(IImmutableDictionary<String, Object>)

Updates the Details and fires DetailsChanged.

Declaration
protected virtual void UpdateDetails(IImmutableDictionary<string, object> details)
Parameters
Type Name Description
System.Collections.Immutable.IImmutableDictionary<System.String, System.Object> details

Updated details.

UpdateIdentifier(String)

Updates the Identifier and fires IdentifierChanged.

Declaration
protected virtual void UpdateIdentifier(string identifier)
Parameters
Type Name Description
System.String identifier

Updated identifier.

UpdateState(MountedSessionState)

Updates the State and fires StateChanged if appropriate.

Declaration
protected virtual void UpdateState(MountedSessionState state)
Parameters
Type Name Description
MountedSessionState state

Updated state.

Events

ConfigurationAvailable

Raised when IMountedConfiguration is available to be bound to the session. SQL Race will respond to this event by mounting (and sharing, if possible) the configuration.

Declaration
public event EventHandler<MountedSessionEvents.ConfigurationAvailable> ConfigurationAvailable
Event Type
Type Description
System.EventHandler<MountedSessionEvents.ConfigurationAvailable>

ConfigurationBound

Raised when IMountedConfiguration is bound to the session. SQL Race will respond to this event by adding the configuration to the SQL Race session.

Declaration
public event EventHandler<MountedSessionEvents.ConfigurationBound> ConfigurationBound
Event Type
Type Description
System.EventHandler<MountedSessionEvents.ConfigurationBound>

DataAdded

Raised when data is added.

Declaration
public event EventHandler<MountedSessionEvents.DataAdded> DataAdded
Event Type
Type Description
System.EventHandler<MountedSessionEvents.DataAdded>

DetailsChanged

Raised when the Details change.

Declaration
public event EventHandler<MountedSessionEvents.SessionUpdated> DetailsChanged
Event Type
Type Description
System.EventHandler<MountedSessionEvents.SessionUpdated>

EndTimeChanged

Raised when the TimeRange end time changes.

Declaration
public event EventHandler<MountedSessionEvents.TimeRangeChanged> EndTimeChanged
Event Type
Type Description
System.EventHandler<MountedSessionEvents.TimeRangeChanged>

EventsAdded

Raised when events are added.

Declaration
public event EventHandler<MountedSessionEvents.EventsAdded> EventsAdded
Event Type
Type Description
System.EventHandler<MountedSessionEvents.EventsAdded>

IdentifierChanged

Raised when the Identifier changes.

Declaration
public event EventHandler<MountedSessionEvents.SessionUpdated> IdentifierChanged
Event Type
Type Description
System.EventHandler<MountedSessionEvents.SessionUpdated>

LapAdded

Raised when a Lap is added.

Declaration
public event EventHandler<MountedSessionEvents.LapAdded> LapAdded
Event Type
Type Description
System.EventHandler<MountedSessionEvents.LapAdded>

StartTimeChanged

Raised when the TimeRange start time changes.

Declaration
public event EventHandler<MountedSessionEvents.TimeRangeChanged> StartTimeChanged
Event Type
Type Description
System.EventHandler<MountedSessionEvents.TimeRangeChanged>

StateChanged

Raised when the State changes.

Declaration
public event EventHandler<MountedSessionEvents.StateChanged> StateChanged
Event Type
Type Description
System.EventHandler<MountedSessionEvents.StateChanged>

Implements

IMountedEventsPageSource
IMountedDataPageSource
Back to top Generated by DocFX