Skip to content

Commit

Permalink
Merge branch 'master' into 83525-Optional-Transient-Custom-Markers-vi…
Browse files Browse the repository at this point in the history
…a-SQL-Race-API
  • Loading branch information
MykolaAtMcLarenApplied authored Dec 15, 2023
2 parents bc5ac36 + c10b227 commit 6ae3ad9
Show file tree
Hide file tree
Showing 12 changed files with 439 additions and 11 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
dotnet-version: '6.0.x'

- name: Install dependencies
run: dotnet restore
run: dotnet restore --verbosity normal

- name: Build
run: dotnet build --configuration Release --no-restore
19 changes: 16 additions & 3 deletions MAT.OCS.SQLRace.Examples.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29102.190
# Visual Studio Version 17
VisualStudioVersion = 17.6.33829.357
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MAT.SQLRace.HelloData", "MAT.SQLRace.HelloData\MAT.SQLRace.HelloData.csproj", "{FB3E8850-40AF-443E-82C1-183C1C76D460}"
EndProject
Expand Down Expand Up @@ -35,6 +34,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MAT.SQLRace.HelloCreateSSN2
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MAT.SQLRace.LoadSessionFromDatabaseAndReadParameters", "MAT.SQLRace.LoadSessionFromDatabaseAndReadParameters\MAT.SQLRace.LoadSessionFromDatabaseAndReadParameters.csproj", "{FF2BE15F-8E2A-4247-B25D-0FFE2FEFFF20}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MAT.SqlRace.ServerListener", "MAT.SqlRace.ServerListener\MAT.SqlRace.ServerListener.csproj", "{C4281449-70AD-4A9F-A5F8-A11C6E58E460}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -161,6 +162,18 @@ Global
{FF2BE15F-8E2A-4247-B25D-0FFE2FEFFF20}.Release|x64.Build.0 = Release|Any CPU
{FF2BE15F-8E2A-4247-B25D-0FFE2FEFFF20}.Release|x86.ActiveCfg = Release|Any CPU
{FF2BE15F-8E2A-4247-B25D-0FFE2FEFFF20}.Release|x86.Build.0 = Release|Any CPU
{C4281449-70AD-4A9F-A5F8-A11C6E58E460}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C4281449-70AD-4A9F-A5F8-A11C6E58E460}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C4281449-70AD-4A9F-A5F8-A11C6E58E460}.Debug|x64.ActiveCfg = Debug|Any CPU
{C4281449-70AD-4A9F-A5F8-A11C6E58E460}.Debug|x64.Build.0 = Debug|Any CPU
{C4281449-70AD-4A9F-A5F8-A11C6E58E460}.Debug|x86.ActiveCfg = Debug|Any CPU
{C4281449-70AD-4A9F-A5F8-A11C6E58E460}.Debug|x86.Build.0 = Debug|Any CPU
{C4281449-70AD-4A9F-A5F8-A11C6E58E460}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C4281449-70AD-4A9F-A5F8-A11C6E58E460}.Release|Any CPU.Build.0 = Release|Any CPU
{C4281449-70AD-4A9F-A5F8-A11C6E58E460}.Release|x64.ActiveCfg = Release|Any CPU
{C4281449-70AD-4A9F-A5F8-A11C6E58E460}.Release|x64.Build.0 = Release|Any CPU
{C4281449-70AD-4A9F-A5F8-A11C6E58E460}.Release|x86.ActiveCfg = Release|Any CPU
{C4281449-70AD-4A9F-A5F8-A11C6E58E460}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<PackageReference Include="Google.Protobuf" Version="3.14.0" />
<PackageReference Include="IronSnappy" Version="1.3.0" />
<PackageReference Include="Irony" Version="1.2.0" />
<PackageReference Include="MAT.ATLAS.SupportFiles" Version="9.84.1.35" />
<PackageReference Include="MAT.ATLAS.SupportFiles" Version="*" />
<PackageReference Include="MAT.OCS.Core" Version="2.1.15" />
<PackageReference Include="MAT.OCS.FFC" Version="1.5.0" />
<PackageReference Include="MAT.OCS.FFC.Configuration.Format" Version="1.5.0" />
Expand Down
4 changes: 2 additions & 2 deletions MAT.SQLRace.BaseExampleLoadSSN/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ class Program
/// In order to be able to use this example follow these instructions;
/// https://github.com/mat-docs/packages
///
/// Whenever you are setting up your project you should use .NETFramework 4.8.
/// Whenever you are setting up your project you should use .NETCore 6.0.
///
/// Once registered in Visual Studio, you need to install MESL.SQLRace.API package from NuGet making sure that you have selected the McLaren Applied Github packages in the top
/// right corner (defaults to nuget.org, where if you search for the package it would not show).
/// Apart from this NuGet package, if you plan to use SSN files you need to follow these steps too:
/// - Install MAT.ATLAS.SupportFiles from NuGet directory making sure that you have selected on the top right corner MA repository
/// - Setup the build config to build in x64 based CPUs. This is required for SSNs to be loaded.
/// Once this package is installed, you would only need to pay attenion to the TODOs written in the code.
/// Once this package is installed, you would only need to pay attention to the TODOs written in the code.
///
/// Find the documentation for the API in the link below
/// https://mat-docs.github.io/Atlas.SQLRaceAPI.Documentation/api/index.html
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<PackageReference Include="Google.Protobuf" Version="3.14.0" />
<PackageReference Include="IronSnappy" Version="1.3.0" />
<PackageReference Include="Irony" Version="1.2.0" />
<PackageReference Include="MAT.ATLAS.SupportFiles" Version="9.84.1.35" />
<PackageReference Include="MAT.ATLAS.SupportFiles" Version="*" />
<PackageReference Include="MAT.OCS.Core" Version="2.1.15" />
<PackageReference Include="MAT.OCS.FFC" Version="1.5.0" />
<PackageReference Include="MAT.OCS.FFC.Configuration.Format" Version="1.5.0" />
Expand Down
2 changes: 1 addition & 1 deletion MAT.SQLRace.HelloData/MAT.SQLRace.HelloData.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<PackageReference Include="Google.Protobuf" Version="3.14.0" />
<PackageReference Include="IronSnappy" Version="1.3.0" />
<PackageReference Include="Irony" Version="1.2.0" />
<PackageReference Include="MAT.ATLAS.SupportFiles" Version="9.84.1.35" />
<PackageReference Include="MAT.ATLAS.SupportFiles" Version="*" />
<PackageReference Include="MAT.OCS.Core" Version="2.1.15" />
<PackageReference Include="MAT.OCS.FFC" Version="1.5.0" />
<PackageReference Include="MAT.OCS.FFC.Configuration.Format" Version="1.5.0" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<PackageReference Include="Google.Protobuf" Version="3.14.0" />
<PackageReference Include="IronSnappy" Version="1.3.0" />
<PackageReference Include="Irony" Version="1.2.0" />
<PackageReference Include="MAT.ATLAS.SupportFiles" Version="9.84.1.35" />
<PackageReference Include="MAT.ATLAS.SupportFiles" Version="*" />
<PackageReference Include="MAT.OCS.Core" Version="2.1.15" />
<PackageReference Include="MAT.OCS.FFC" Version="1.5.0" />
<PackageReference Include="MAT.OCS.FFC.Configuration.Format" Version="1.5.0" />
Expand Down
62 changes: 62 additions & 0 deletions MAT.SqlRace.ServerListener/App.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
</configSections>
<nlog throwExceptions="true" xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:p4="http://www.w3.org/2001/XMLSchema-instance">
<!-- See http://nlog-project.org/wiki/Configuration_file for information on customising logging rules and outputs -->
<targets async="true">
<target name="file" p4:type="File" archiveAboveSize="10485760" archiveNumbering="Sequence" autoFlush="true" concurrentWrites="true" keepFileOpen="true" createDirs="true" fileName="${specialfolder:MyDocuments}\McLaren Applied Technologies\ATLAS 10\Logs\HelloData.log" header="---------- Date: ${date:format=dd-MM-yyyy}, Windows User: ${windows-identity:userName=True:domain=True}, Machine Name: ${machinename} ----------" layout="${date:format=HH\:mm\:ss.fff}: ${uppercase:${level}} - ${message} ${onexception:${exception:format=tostring} | ${stacktrace}}" />
</targets>
<rules>
<logger minlevel="Trace" name="*" writeTo="file" />
</rules>
</nlog>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.3.0" newVersion="1.2.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.4.3.0" newVersion="1.4.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.115.5" newVersion="1.0.115.5" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.InteropServices" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Reflection" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.Extensions" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Reactive.Core" publicKeyToken="94bc3704cddfc263" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.3000.0" newVersion="3.0.3000.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Google.Protobuf" publicKeyToken="a7d26565bac4d604" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.10.1.0" newVersion="3.10.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
50 changes: 50 additions & 0 deletions MAT.SqlRace.ServerListener/MAT.SqlRace.ServerListener.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0-windows</TargetFramework>
<OutputType>Exe</OutputType>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<UseWindowsForms>true</UseWindowsForms>
<ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Autofac" Version="4.5.0" />
<PackageReference Include="AutoMapper" Version="6.0.2" />
<PackageReference Include="Google.Protobuf" Version="3.14.0" />
<PackageReference Include="IronSnappy" Version="1.3.0" />
<PackageReference Include="Irony" Version="1.2.0" />
<PackageReference Include="MAT.ATLAS.SupportFiles" Version="*" />
<PackageReference Include="MAT.OCS.Core" Version="2.1.15" />
<PackageReference Include="MAT.OCS.FFC" Version="1.5.0" />
<PackageReference Include="MAT.OCS.FFC.Configuration.Format" Version="1.5.0" />
<PackageReference Include="MAT.OCS.RDA" Version="2.1.15" />
<PackageReference Include="MAT.OCS.Utilities" Version="2.1.15" />
<PackageReference Include="MathNet.Numerics" Version="4.15.0" />
<PackageReference Include="MESL.SQLRace.API" Version="*" />
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.3" />
<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="4.3.1" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.3.1" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="2.1.2" />
<PackageReference Include="NLog" Version="4.5.6" />
<PackageReference Include="prometheus-net" Version="4.2.0" />
<PackageReference Include="protobuf-net" Version="2.1.0" />
<PackageReference Include="Simple.Migrations" Version="0.9.19" />
<PackageReference Include="System.ComponentModel.Composition" Version="7.0.0" />
<PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
<PackageReference Include="System.Data.SQLite.Core" Version="1.0.115.5" />
<PackageReference Include="System.Reactive" Version="4.4.1" />
<PackageReference Include="System.Runtime.Caching" Version="7.0.0" />
<PackageReference Include="System.Collections.Immutable" Version="6.0.0" />
<PackageReference Include="System.Reflection.Metadata" Version="6.0.1" />
<PackageReference Include="System.Resources.Extensions" Version="6.0.0" />
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="7.0.0" />
<PackageReference Include="System.ServiceModel.Primitives" Version="6.0.0" />
<PackageReference Include="System.ServiceModel.Http" Version="6.0.0" />
<PackageReference Include="System.ServiceModel.Duplex" Version="6.0.0" />
<PackageReference Include="System.ServiceModel.NetTcp" Version="6.0.0" />
<PackageReference Include="System.ServiceModel.Security" Version="6.0.0" />
<PackageReference Include="System.ServiceModel.Federation" Version="6.0.0" />
</ItemGroup>
</Project>
80 changes: 80 additions & 0 deletions MAT.SqlRace.ServerListener/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
using MAT.OCS.Core;
using MESL.SqlRace.Common.Extensions;
using MESL.SqlRace.Domain;
using System;
using System.Linq;
using System.Threading;
using System.Net;


namespace MAT.SqlRace.ServerListenerLive
{
/// <summary>
/// Record live data to a local SqlRace (Sqlite)
///
/// NOTE:
/// If the session is in the state LiveNotInServer,
/// make sure Server Listener port in ATLAS is different to the one specified here.
/// </summary>
internal class Program
{
// The server listener configuration
private const int ServerListenerPortNumber = 6565;
private const string ServerListenerIpAddress = "127.0.0.1";

public static void Main(string[] args)
{
var dataSource = @"C:\temp\livesession.ssndb";
Console.WriteLine(dataSource);

/// connection strings are case and whitespace sensitive, the following format must be strightly followed for the Server Listener Protocol to successfully establish.
/// SQLite: "DbEngine=SQLite;Data Source={dataSource};Pooling=false;"
/// SQLServer: "server={dataSource};Initial Catalog={database};Trusted_Connection=True;"
var connectionString = $@"DbEngine=SQLite;Data Source={dataSource};Pooling=false;";
var sessionIdentifier = "Server Listener Live Demo";

Console.WriteLine("Initialising");
Core.Initialize();

Console.WriteLine("Setting up Server Listener Instance");
Core.ConfigureServer(true, new IPEndPoint(IPAddress.Parse(ServerListenerIpAddress),ServerListenerPortNumber));
var sessionManager = SessionManager.CreateSessionManager();
var recordersConfiguration = RecordersConfiguration.GetRecordersConfiguration();
recordersConfiguration.AddConfiguration(Guid.NewGuid(), "SQLite", dataSource, dataSource, connectionString, false);


Console.WriteLine("Creating new Session");
var clientSession = sessionManager.CreateSession(connectionString, SessionKey.NewKey(), sessionIdentifier, DateTime.Now, "Session");
var session = clientSession.Session;
try
{
var parameter = SessionHelper.CreateSessionConfigurationForOneParameter(session);

for (int i = 0; i < 1000; i++)
{
var newTimestamp = DateTime.Now.ToNanoseconds();
var newValue = Math.Sin(i / 360.0);

session.AddChannelData(
parameter.ChannelIds.FirstOrDefault(),
newTimestamp,
1, //value of 1 param
BitConverter.GetBytes(newValue));
Thread.Sleep(100);
Console.WriteLine($"Written sample. Timestamp: {newTimestamp.ToTimeString()} Value:{newValue}");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
session.EndData();
clientSession.Close();
}
}


}
}
Loading

0 comments on commit 6ae3ad9

Please sign in to comment.