Photomechanics API
MftApi Class Reference

API implementation for MFT turn tables. More...

Inheritance diagram for MftApi:
[legend]

Public Member Functions

 MftApi (MftCommandRunner commandRunner, ILogger logger)
 
override String ToString ()
 
- Public Member Functions inherited from ComponentBasedDeviceApiBase
async Task Initialize ()
 Initialize connection with device. More...
 
TComponent GetComponent< TComponent > ()
 Get component of given type. More...
 
- Public Member Functions inherited from AsyncDisposableExtendedBase
async ValueTask DisposeAsync ()
 
Task Initialize ()
 Initialize connection with device. More...
 
TComponent GetComponent< TComponent > ()
 Get component of given type. More...
 

Protected Member Functions

override async Task OnInitializing ()
 Initialize connection with turn table. More...
 
override async ValueTask DisposeAsyncCore ()
 Derived type disposal logic. Do not forget to call base.DisposeAsyncCore() when overriding this. TODO: find base call analyzer for virtual methods like this More...
 
- Protected Member Functions inherited from ComponentBasedDeviceApiBase
 ComponentBasedDeviceApiBase (ILogger logger)
 
abstract Task OnInitializing ()
 Initialize connection with turn table. More...
 
override async ValueTask DisposeAsyncCore ()
 
void InitializeComponents (IEnumerable< IDeviceApiComponent > components)
 Initialize components set. More...
 
void InitializeComponents (params IDeviceApiComponent[] components)
 Initialize components set. More...
 
- Protected Member Functions inherited from AsyncDisposableExtendedBase
 AsyncDisposableExtendedBase (ILogger logger)
 Base constructor for device api. More...
 
abstract ValueTask DisposeAsyncCore ()
 Derived type disposal logic. More...
 
void UpdateLoggerContext ()
 Unfortunately Serilog ForContext method does not store provided object as property value, calling its ToString method immediately instead. In some cases, we want to use information like device name/id as log context but it is only available when derived type is fully constructed and maybe some other initialization took place. For such cases, derived type can use this method to update Logger context value.
 

Properties

MftCommandRunner CommandRunner [get]
 Underlying command runner.
 
String ConnectionInfo [get]
 Human-readable string that will contain information about connection. More...
 
- Properties inherited from AsyncDisposableExtendedBase
ILogger Logger [get]
 Logger associated with this instance. This way extension methods can use logging without requiring it as parameter. More...
 
Boolean IsDisposed [get]
 Determines whether the object is being disposed or already disposed and no longer functional. More...
 
virtual IAsyncDisposableExtended Owner [get]
 Type and ToString values of this object will appear when logging begin/end of DisposeAsync. This object will also be used as Disposed sender, essentially allowing seamlessly using AsyncDisposableExtendedBase logic even when directly inheriting from it is not possible. Usually it simply returns "this" value, but AsyncDisposableExtendedImpl overrides it to return its owner instance for the aforementioned reason.
 
- Properties inherited from IAsyncDisposableExtended
Boolean IsDisposed [get]
 Determines whether the object is being disposed or already disposed and no longer functional. More...
 
ILogger Logger [get]
 Logger associated with this instance. This way extension methods can use logging without requiring it as parameter. More...
 
- Properties inherited from ITurntableApi
String ConnectionInfo [get]
 Human-readable string that will contain information about connection. More...
 

Additional Inherited Members

- Events inherited from AsyncDisposableExtendedBase
AsyncTypedEventHandler< IAsyncDisposableExtended >? Disposed
 
- Events inherited from IAsyncDisposableExtended
AsyncTypedEventHandler< IAsyncDisposableExtendedDisposed
 Occurs when object is disposed. It should be invoked at the end of IAsyncDisposable.DisposeAsync implementation in a Fire-and-Forget fashion (non-blocking).
 

Detailed Description

API implementation for MFT turn tables.

Any unexpected input from turn table (invalid messages, characters not surrounded messages begin/end, etc.) will cause API to self-dispose. IAsyncDisposableExtended.IsDisposed can be used to determine API state after initialization.

Member Function Documentation

◆ OnInitializing()

override async Task MftApi.OnInitializing ( )
protectedvirtual

Initialize connection with turn table.

Implements ComponentBasedDeviceApiBase.

◆ DisposeAsyncCore()

override async ValueTask MftApi.DisposeAsyncCore ( )
protectedvirtual

Derived type disposal logic. Do not forget to call base.DisposeAsyncCore() when overriding this. TODO: find base call analyzer for virtual methods like this

Reimplemented from ComponentBasedDeviceApiBase.

Property Documentation

◆ ConnectionInfo

String MftApi.ConnectionInfo
get

Human-readable string that will contain information about connection.

Implements ITurntableApi.