diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-12-21 02:19:12 +0200 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-12-21 02:19:12 +0200 |
| commit | 4ccaf0b3f68b3675a8527df349b3bc4b5b566682 (patch) | |
| tree | 32c407b0011d0ea42569a860eb55651892418241 /Software/Visual_Studio | |
| parent | 68aaf51e93e8a60fd8897baa50e97f4e87a24257 (diff) | |
| download | Tango-4ccaf0b3f68b3675a8527df349b3bc4b5b566682.tar.gz Tango-4ccaf0b3f68b3675a8527df349b3bc4b5b566682.zip | |
StubUtils.
Diffstat (limited to 'Software/Visual_Studio')
26 files changed, 614 insertions, 35 deletions
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures/ProcedureContext.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures/ProcedureContext.cs index f47f1174e..594698c4c 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures/ProcedureContext.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures/ProcedureContext.cs @@ -152,7 +152,7 @@ namespace Tango.FSE.Procedures return Send<T>(messageName, null, args); } - public IMessage Send(IMessage message, int? timeout = null) + public virtual IMessage Send(IMessage message, int? timeout = null) { TimeSpan? timespan = null; @@ -172,7 +172,7 @@ namespace Tango.FSE.Procedures return Send(messageName, timeout) as T; } - public void SendContinuous<T>(IMessage message, Action<T> callback, int? timeout = null) where T : class, IMessage + public virtual void SendContinuous<T>(IMessage message, Action<T> callback, int? timeout = null) where T : class, IMessage { TaskCompletionSource<object> completion = new TaskCompletionSource<object>(); diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Program.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Program.cs index b975093d1..f59f97de3 100644 --- a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Program.cs +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Program.cs @@ -26,9 +26,9 @@ namespace Tango.StubsUtils.Client.CLI var writer = new StreamWriter(_client); - var jsonRequest = String.Join(" ", args); + var request = String.Join("^", args); - writer.WriteLine(jsonRequest); + writer.WriteLine(request); writer.Flush(); var reader = new StreamReader(_client); diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Program.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Program.cs index ff172737a..b6fde8383 100644 --- a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Program.cs +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Program.cs @@ -10,7 +10,8 @@ namespace Tango.StubsUtils.PerformanceTest.CLI { class Program { - private const int ROUNDS = 100; + private const int ROUNDS_SMALL = 100; + private const int ROUNDS_BIG = 1000; private const int DELAY = 0; static void Main(string[] args) @@ -18,6 +19,8 @@ namespace Tango.StubsUtils.PerformanceTest.CLI PerformanceTestStandard(); Console.WriteLine(); PerformanceTestSession(); + Console.WriteLine(); + PerformanceTestProcedure(); Console.WriteLine(); Console.WriteLine(); @@ -31,7 +34,7 @@ namespace Tango.StubsUtils.PerformanceTest.CLI Stopwatch watch = new Stopwatch(); - for (int i = 0; i < ROUNDS; i++) + for (int i = 0; i < ROUNDS_SMALL; i++) { watch.Restart(); @@ -61,7 +64,7 @@ namespace Tango.StubsUtils.PerformanceTest.CLI durations.Add(watch.ElapsedMilliseconds); Console.SetCursorPosition(0, 0); - Console.Write($"Performance Test (Standard): {i + 1}/{ROUNDS}, Avg: {Math.Round(durations.Average(), 2)} ms "); + Console.Write($"Performance Test (Standard): {i + 1}/{ROUNDS_SMALL}, Avg: {Math.Round(durations.Average(), 2)} ms "); } } @@ -83,7 +86,7 @@ namespace Tango.StubsUtils.PerformanceTest.CLI Stopwatch watch = new Stopwatch(); - for (int i = 0; i < ROUNDS; i++) + for (int i = 0; i < ROUNDS_BIG; i++) { watch.Restart(); @@ -127,10 +130,71 @@ namespace Tango.StubsUtils.PerformanceTest.CLI durations.Add(watch.ElapsedMilliseconds); Console.SetCursorPosition(0, 1); - Console.Write($"Performance Test (Session) : {i + 1}/{ROUNDS}, Avg: {Math.Round(durations.Average(), 2)} ms "); + Console.Write($"Performance Test (Session) : {i + 1}/{ROUNDS_BIG}, Avg: {Math.Round(durations.Average(), 2)} ms "); } } + private static void PerformanceTestProcedure() + { + List<double> durations = new List<double>(); + + Process process = new Process(); + process.StartInfo.FileName = "tangostub_p.exe"; + process.StartInfo.Arguments = $"procedure_test.pproj {ROUNDS_BIG} 10 15"; + process.StartInfo.CreateNoWindow = true; + process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + process.StartInfo.RedirectStandardOutput = true; + process.StartInfo.RedirectStandardInput = true; + process.StartInfo.UseShellExecute = false; + process.Start(); + process.PriorityClass = ProcessPriorityClass.RealTime; + + Stopwatch watch = new Stopwatch(); + Stopwatch realWatch = new Stopwatch(); + realWatch.Stop(); + + int count = 0; + + do + { + watch.Restart(); + + String line = process.StandardOutput.ReadLine(); + + if (count == 0) + { + realWatch.Start(); + } + + if (line == null) + { + break; + } + + if (line.StartsWith("Status: Error")) + { + OnError(process.StandardOutput.ReadToEnd()); + return; + } + else if (line.StartsWith("Status: Completed")) + { + break; + } + + if (count > 0) + { + durations.Add(watch.ElapsedMilliseconds); + Console.SetCursorPosition(0, 2); + Console.Write($"Performance Test (Procedure) : {count + 1}/{ROUNDS_BIG}, Avg: {Math.Round(durations.Average(), 2)} ms "); + } + + count++; + } while (!process.HasExited); + + Console.SetCursorPosition(0, 2); + Console.Write($"Performance Test (Procedure) : {ROUNDS_BIG}/{ROUNDS_BIG}, Avg: {Math.Round(realWatch.ElapsedMilliseconds / (double)ROUNDS_BIG, 2)} ms "); + } + private static void OnError(String error) { Console.ForegroundColor = ConsoleColor.Red; diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/App.config b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/App.config new file mode 100644 index 000000000..731f6de6c --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/App.config @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> + </startup> +</configuration>
\ No newline at end of file diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/Program.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/Program.cs new file mode 100644 index 000000000..c5b7a030e --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/Program.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Pipes; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.StubsUtils.Shared; + +namespace Tango.StubsUtils.ProcedureClient.CLI +{ + class Program + { + private const string PIPE_NAME = "Tango_Stubs_Server"; + + static void Main(string[] args) + { + try + { + Console.ForegroundColor = ConsoleColor.Gray; + + var _client = new NamedPipeClientStream(PIPE_NAME); + _client.Connect(1000); + + var writer = new StreamWriter(_client); + + String s = Environment.CommandLine; + + List<String> arguments = args.ToList(); + arguments.Insert(0, "procedure"); + var request = String.Join("^", arguments); + + writer.WriteLine(request); + writer.Flush(); + + var reader = new StreamReader(_client); + + while (true) + { + String responseString = reader.ReadLine(); + Console.WriteLine(responseString); + + if (responseString.StartsWith("Status: OK")) + { + responseString = reader.ReadToEnd(); + Console.WriteLine(responseString); + Environment.Exit(0); + } + else if (responseString.StartsWith("Status: Error")) + { + responseString = reader.ReadToEnd(); + Console.WriteLine(responseString); + ExitError(responseString); + } + } + } + catch (Exception ex) + { + ExitError($"Status: Error\nError: Error communicating with the stubs service. {ex.Message}"); + } + } + + private static void ExitError(String error) + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine($"{error}"); + Console.ForegroundColor = ConsoleColor.Gray; + Environment.Exit(-1); + } + } +} diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..82bf9f837 --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Tango.StubsUtils.ProcedureClient.CLI")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Tango.StubsUtils.ProcedureClient.CLI")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("8f0bcfc8-af0f-40d3-882a-902cd221a6de")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/Tango.StubsUtils.ProcedureClient.CLI.csproj b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/Tango.StubsUtils.ProcedureClient.CLI.csproj new file mode 100644 index 000000000..606fcfcfe --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/Tango.StubsUtils.ProcedureClient.CLI.csproj @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}</ProjectGuid> + <OutputType>Exe</OutputType> + <RootNamespace>Tango.StubsUtils.ProcedureClient.CLI</RootNamespace> + <AssemblyName>tangostub_p</AssemblyName> + <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> + <Deterministic>true</Deterministic> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\..\Build\StubsUtils\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>..\..\Build\StubsUtils\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Data" /> + <Reference Include="System.Net.Http" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <None Include="App.config" /> + <None Include="procedure_test.pproj"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\Tango.StubsUtils.Shared\Tango.StubsUtils.Shared.csproj"> + <Project>{dae96f06-72cd-411d-90a3-9456ae79f699}</Project> + <Name>Tango.StubsUtils.Shared</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> +</Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/procedure_test.pproj b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/procedure_test.pproj new file mode 100644 index 000000000..2ed7a56d3 --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.ProcedureClient.CLI/procedure_test.pproj @@ -0,0 +1 @@ +{"$id":"1","Name":"procedure_test","Visibility":"Public","Description":null,"Scripts":{"$id":"2","$values":[{"$id":"3","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Program\r\n{\r\n public const String Iterations = \"1\";\r\n public const String Num1 = \"1\";\r\n public const String Num2 = \"2\";\r\n\r\n public void OnExecute(IProcedureContext context)\r\n {\r\n int rounds = int.Parse(Iterations);\r\n\r\n for (int i = 0; i < rounds; i++)\r\n {\r\n CalculateRequest request = new CalculateRequest();\r\n request.A = double.Parse(Num1);\r\n request.B = double.Parse(Num2);\r\n CalculateResponse response = context.Send<CalculateResponse>(request);\r\n context.WriteLine(\"Sum: \" + response.Sum);\r\n }\r\n }\r\n}","Name":"Program.csx","IsEntryPoint":true},{"$id":"4","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Service\r\n{\r\n public double Calc(double a, double b)\r\n {\r\n return a + b;\r\n }\r\n}","Name":"Service.csx","IsEntryPoint":false}]},"Inputs":{"$id":"5","$values":[]},"Variables":{"$id":"6","$values":[]},"ReferenceAssemblies":{"$id":"7","$values":[{"$id":"8","File":"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll","HintType":"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"9","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Core\\v4.0_4.0.0.0__b77a5c561934e089\\System.Core.dll","HintType":"System.Linq.Enumerable, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"10","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Windows.Forms\\v4.0_4.0.0.0__b77a5c561934e089\\System.Windows.Forms.dll","HintType":"System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"11","File":"C:\\DATA\\Development\\Tango\\Software\\Visual_Studio\\Build\\FSE\\Debug\\Tango.FSE.Procedures.dll","HintType":"Tango.FSE.Procedures.ProcedureProject, Tango.FSE.Procedures, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"12","File":"C:\\DATA\\Development\\Tango\\Software\\Visual_Studio\\Build\\FSE\\Debug\\Tango.FSE.Common.dll","HintType":"Tango.FSE.Common.Diagnostics.IDiagnosticsProvider, Tango.FSE.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"13","File":"C:\\DATA\\Development\\Tango\\Software\\Visual_Studio\\Build\\FSE\\Debug\\Tango.BL.dll","HintType":"Tango.BL.Enumerations.TechMonitors, Tango.BL, Version=2.0.36.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"14","File":"C:\\DATA\\Development\\Tango\\Software\\Visual_Studio\\Build\\FSE\\Debug\\Tango.PMR.dll","HintType":"Tango.PMR.Common.MessageType, Tango.PMR, Version=2.0.40.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"15","File":"C:\\DATA\\Development\\Tango\\Software\\Visual_Studio\\Build\\FSE\\Debug\\Tango.Transport.dll","HintType":"Tango.Transport.ITransporter, Tango.Transport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"16","File":"C:\\DATA\\Development\\Tango\\Software\\Visual_Studio\\Build\\FSE\\Debug\\Tango.Integration.dll","HintType":"Tango.Integration.Operation.IMachineOperator, Tango.Integration, Version=2.0.31.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"17","File":"C:\\DATA\\Development\\Tango\\Software\\Visual_Studio\\Build\\FSE\\Debug\\Google.Protobuf.dll","HintType":"Google.Protobuf.IMessage, Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604"},{"$id":"18","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Drawing\\v4.0_4.0.0.0__b03f5f7f11d50a3a\\System.Drawing.dll","HintType":"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"},{"$id":"19","File":"C:\\DATA\\Development\\Tango\\Software\\Visual_Studio\\Build\\FSE\\Debug\\Tango.DataStore.dll","HintType":"Tango.DataStore.IDataStoreItem, Tango.DataStore, Version=2.0.4.1608, Culture=neutral, PublicKeyToken=null"}]},"Resources":{"$id":"20","$values":[]},"Dialogs":{"$id":"21","$values":[]},"ID":"44a4b6b3-647d-4ffd-9144-b44f871bffe2","ApartmentState":"STA"}
\ No newline at end of file diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.config b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.config index 9dfd8545b..e49ea898a 100644 --- a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.config +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.config @@ -7,19 +7,6 @@ <legacyCorruptedStateExceptionsPolicy enabled="true" /> <legacyUnhandledExceptionPolicy enabled="1" /> - <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> - <dependentAssembly> - <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-5.0.5.0" newVersion="5.0.5.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.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> - </assemblyBinding> + </runtime> </configuration>
\ No newline at end of file diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Tango.StubsUtils.Service.UI.csproj b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Tango.StubsUtils.Service.UI.csproj index 28d49f4d2..abf378e14 100644 --- a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Tango.StubsUtils.Service.UI.csproj +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Tango.StubsUtils.Service.UI.csproj @@ -59,8 +59,40 @@ <HintPath>..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> </Reference> <Reference Include="System" /> + <Reference Include="System.Collections.Immutable, Version=1.2.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\Tango.StubsUtils.Service\Reference Assemblies\System.Collections.Immutable.dll</HintPath> + </Reference> + <Reference Include="System.Composition.AttributedModel, Version=1.0.31.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\Tango.StubsUtils.Service\Reference Assemblies\System.Composition.AttributedModel.dll</HintPath> + </Reference> + <Reference Include="System.Composition.Hosting, Version=1.0.31.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\Tango.StubsUtils.Service\Reference Assemblies\System.Composition.Hosting.dll</HintPath> + </Reference> + <Reference Include="System.Composition.Runtime, Version=1.0.31.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\Tango.StubsUtils.Service\Reference Assemblies\System.Composition.Runtime.dll</HintPath> + </Reference> + <Reference Include="System.Composition.TypedParts, Version=1.0.31.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\Tango.StubsUtils.Service\Reference Assemblies\System.Composition.TypedParts.dll</HintPath> + </Reference> <Reference Include="System.Data" /> <Reference Include="System.Drawing" /> + <Reference Include="System.Reflection.Metadata, Version=1.4.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\Tango.StubsUtils.Service\Reference Assemblies\System.Reflection.Metadata.dll</HintPath> + </Reference> + <Reference Include="System.Text.Encoding.CodePages, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\Tango.StubsUtils.Service\Reference Assemblies\System.Text.Encoding.CodePages.dll</HintPath> + </Reference> + <Reference Include="System.ValueTuple, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\Tango.StubsUtils.Service\Reference Assemblies\System.ValueTuple.dll</HintPath> + </Reference> <Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\..\packages\ControlzEx.3.0.2.4\lib\net45\System.Windows.Interactivity.dll</HintPath> </Reference> diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Collections.Immutable.dll b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Collections.Immutable.dll Binary files differnew file mode 100644 index 000000000..ce6fc0e8d --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Collections.Immutable.dll diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Composition.AttributedModel.dll b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Composition.AttributedModel.dll Binary files differnew file mode 100644 index 000000000..4acc216e1 --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Composition.AttributedModel.dll diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Composition.Hosting.dll b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Composition.Hosting.dll Binary files differnew file mode 100644 index 000000000..a446fe6e0 --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Composition.Hosting.dll diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Composition.Runtime.dll b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Composition.Runtime.dll Binary files differnew file mode 100644 index 000000000..a05bfe9c8 --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Composition.Runtime.dll diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Composition.TypedParts.dll b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Composition.TypedParts.dll Binary files differnew file mode 100644 index 000000000..cfae95d0c --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Composition.TypedParts.dll diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Reflection.Metadata.dll b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Reflection.Metadata.dll Binary files differnew file mode 100644 index 000000000..ee68731c0 --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Reflection.Metadata.dll diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Text.Encoding.CodePages.dll b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Text.Encoding.CodePages.dll Binary files differnew file mode 100644 index 000000000..0f2f44744 --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.Text.Encoding.CodePages.dll diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.ValueTuple.dll b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.ValueTuple.dll Binary files differnew file mode 100644 index 000000000..502f8cd47 --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Reference Assemblies/System.ValueTuple.dll diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsService.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsService.cs index 13a8b38e5..f1b6f9d9c 100644 --- a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsService.cs +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsService.cs @@ -9,10 +9,13 @@ using System.Linq; using System.Reflection; using System.Runtime.Serialization.Formatters.Binary; using System.Text; +using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using Tango.Core; +using Tango.Core.DI; using Tango.Core.ExtensionMethods; +using Tango.FSE.Procedures; using Tango.Logging; using Tango.PMR; using Tango.PMR.Common; @@ -196,14 +199,37 @@ namespace Tango.StubsUtils.Service if (EnableLogs) LogManager.Log($"Stub package received: '{request}'..."); var package = new StubPackageRequestDTO(); - package.Arguments = request.Split(' '); + package.Arguments = request.Split('^'); - var response = ProcessStubPackage(package); + if (package.Arguments.Length == 0) + { + throw new InvalidOperationException("Zero arguments provided."); + } + + if (package.Arguments[0] == "procedure") + { + ProcessProcedureProject(package); - //if (EnableLogs) LogManager.Log($"Stub package response:\n'{response.ToJsonString()}'..."); + try + { + var response = new StubPackageResponseDTO() + { + Status = StubPackageResponseStatus.OK, + Message = $"Completed." + }; + + _writer.WriteLine(response.ToString()); + _writer.Flush(); + } + catch { } + } + else + { + var response = ProcessStubPackage(package); - _writer.Write(response.ToString()); - _writer.Flush(); + _writer.Write(response.ToString()); + _writer.Flush(); + } } catch (Exception ex) { @@ -231,6 +257,45 @@ namespace Tango.StubsUtils.Service #endregion + #region Process Procedure + + public void ProcessProcedureProject(StubPackageRequestDTO package) + { + List<String> arguments = package.Arguments.Skip(1).ToList(); + String projectPath = arguments[0]; + arguments = arguments.Skip(1).ToList(); + String json = File.ReadAllText(projectPath); + ProcedureProject project = ProcedureProject.FromJson(json); + var mainScript = project.Scripts.FirstOrDefault(x => x.IsEntryPoint); + + int index = 0; + + foreach (var match in Regex.Matches(mainScript.Code, "public const [S|s]tring.+;").OfType<Match>()) + { + if (index < arguments.Count) + { + String defLine = match.Value; + String replace = Regex.Replace(defLine, "(?<=\").*(?=\")", arguments[index]); + mainScript.Code = mainScript.Code.Replace(defLine, replace); + index++; + } + } + + TangoIOC.Default.ThrowOnRequestedTypeNotFound = false; + + StubsServiceProcedureContext context = new StubsServiceProcedureContext(project, Transporter, new StubsServiceProcedureLogger((message) => + { + _writer.WriteLine(message); + })); + + var session = project.Run(context).Result; + var obj = session.WaitForCompletion().Result; + + return; + } + + #endregion + #region Process Package private StubPackageResponseDTO ProcessStubPackage(StubPackageRequestDTO package) diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsServiceProcedureContext.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsServiceProcedureContext.cs new file mode 100644 index 000000000..02eba672e --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsServiceProcedureContext.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Reactive.Concurrency; +using System.Reactive.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Google.Protobuf; +using Tango.Core; +using Tango.Core.ExtensionMethods; +using Tango.FSE.Procedures; +using Tango.PMR; +using Tango.Transport; + +namespace Tango.StubsUtils.Service +{ + public class StubsServiceProcedureContext : ProcedureContext + { + private ITransporter _transporter; + + public StubsServiceProcedureContext(ProcedureProject project, ITransporter transporter, IProcedureLogger logger) : base(project, logger) + { + _transporter = transporter; + } + + public override IMessage Send(IMessage message, int? timeout = null) + { + TimeSpan? timespan = null; + + if (timeout != null) + { + timespan = TimeSpan.FromMilliseconds(timeout.Value); + } + + return _transporter.SendRequest(message, new TransportRequestConfig() + { + Timeout = timespan, + }).Result; + } + + public override void SendContinuous<T>(IMessage message, Action<T> callback, int? timeout = null) + { + TaskCompletionSource<object> completion = new TaskCompletionSource<object>(); + + TimeSpan? timespan = null; + + if (timeout != null) + { + timespan = TimeSpan.FromMilliseconds(timeout.Value); + } + + _transporter.SendContinuousRequest(message, new TransportContinuousRequestConfig() + { + Timeout = timespan, + ContinuousTimeout = timespan + }).ObserveOn(new NewThreadScheduler()).Subscribe((msg) => + { + try + { + callback?.Invoke(msg as T); + } + catch { } + }, (ex) => + { + completion.SetException(ex); + }, () => + { + completion.SetResult(true); + }); + + completion.Task.GetAwaiter().GetResult(); + } + } +} diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsServiceProcedureLogger.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsServiceProcedureLogger.cs new file mode 100644 index 000000000..7b3f34a04 --- /dev/null +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsServiceProcedureLogger.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.FSE.Procedures; + +namespace Tango.StubsUtils.Service +{ + public class StubsServiceProcedureLogger : IProcedureLogger + { + private Action<String> _writeLineCallback; + + public StubsServiceProcedureLogger(Action<String> writeLineCallback) + { + _writeLineCallback = writeLineCallback; + } + + public void WriteLine(string text) + { + _writeLineCallback(text); + } + + public void Write(string text) + { + throw new NotImplementedException(); + } + + public void Clear() + { + throw new NotImplementedException(); + } + } +} diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Tango.StubsUtils.Service.csproj b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Tango.StubsUtils.Service.csproj index 40ec9d29f..035fa39e0 100644 --- a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Tango.StubsUtils.Service.csproj +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Tango.StubsUtils.Service.csproj @@ -42,6 +42,22 @@ </Reference> <Reference Include="System" /> <Reference Include="System.Core" /> + <Reference Include="System.Reactive.Core, Version=3.0.3000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Reactive.Core.3.1.1\lib\net46\System.Reactive.Core.dll</HintPath> + </Reference> + <Reference Include="System.Reactive.Interfaces, Version=3.0.1000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Reactive.Interfaces.3.1.1\lib\net45\System.Reactive.Interfaces.dll</HintPath> + </Reference> + <Reference Include="System.Reactive.Linq, Version=3.0.3000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Reactive.Linq.3.1.1\lib\net46\System.Reactive.Linq.dll</HintPath> + </Reference> + <Reference Include="System.Reactive.PlatformServices, Version=3.0.3000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL"> + <HintPath>..\..\packages\System.Reactive.PlatformServices.3.1.1\lib\net46\System.Reactive.PlatformServices.dll</HintPath> + </Reference> + <Reference Include="System.ValueTuple, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>Reference Assemblies\System.ValueTuple.dll</HintPath> + </Reference> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> @@ -53,9 +69,27 @@ <Compile Include="StubReflection.cs" /> <Compile Include="StubsService.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="StubsServiceProcedureContext.cs" /> + <Compile Include="StubsServiceProcedureLogger.cs" /> <Compile Include="StubsServiceSettings.cs" /> </ItemGroup> <ItemGroup> + <ProjectReference Include="..\..\FSE\Modules\Tango.FSE.Procedures\Tango.FSE.Procedures.csproj"> + <Project>{1754f846-4763-4000-807f-c7bfaa145db2}</Project> + <Name>Tango.FSE.Procedures</Name> + </ProjectReference> + <ProjectReference Include="..\..\Scripting\Tango.Scripting.Basic\Tango.Scripting.Basic.csproj"> + <Project>{2b29a699-1d65-463a-8250-a2ce81d019c9}</Project> + <Name>Tango.Scripting.Basic</Name> + </ProjectReference> + <ProjectReference Include="..\..\Scripting\Tango.Scripting.Core\Tango.Scripting.Core.csproj"> + <Project>{5812e1c6-abaa-4066-94ac-971c27b4f46a}</Project> + <Name>Tango.Scripting.Core</Name> + </ProjectReference> + <ProjectReference Include="..\..\Scripting\Tango.Scripting.Editors\Tango.Scripting.Editors.csproj"> + <Project>{da62fa39-668b-47a6-b0f2-d2c1daf777b0}</Project> + <Name>Tango.Scripting.Editors</Name> + </ProjectReference> <ProjectReference Include="..\..\Tango.Core\Tango.Core.csproj"> <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project> <Name>Tango.Core</Name> diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/app.config b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/app.config index f63670818..c3e34655f 100644 --- a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/app.config +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/app.config @@ -14,6 +14,86 @@ <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="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-5.6.4.0" newVersion="5.6.4.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="Microsoft.Data.Services.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-5.6.4.0" newVersion="5.6.4.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-5.6.4.0" newVersion="5.6.4.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Security.Cryptography.Algorithms" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.IO.FileSystem" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.IO.FileSystem.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Security.Cryptography.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Xml.XPath.XDocument" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Console" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Diagnostics.StackTrace" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-1.2.1.0" newVersion="1.2.1.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Threading.Thread" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="SharpDX.Mathematics" publicKeyToken="b4dcf0f35e5521f1" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="SharpDX.Direct3D11" publicKeyToken="b4dcf0f35e5521f1" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="SharpDX.DXGI" publicKeyToken="b4dcf0f35e5521f1" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="SharpDX" publicKeyToken="b4dcf0f35e5521f1" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory.Platform" publicKeyToken="31bf3856ad364e35" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-3.19.8.16603" newVersion="3.19.8.16603" /> + </dependentAssembly> </assemblyBinding> </runtime> </configuration>
\ No newline at end of file diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/packages.config b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/packages.config index 52834fea3..41d99b940 100644 --- a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/packages.config +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/packages.config @@ -3,4 +3,8 @@ <package id="FastMember" version="1.5.0" targetFramework="net461" /> <package id="Google.Protobuf" version="3.4.1" targetFramework="net461" /> <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net461" /> + <package id="System.Reactive.Core" version="3.1.1" targetFramework="net461" /> + <package id="System.Reactive.Interfaces" version="3.1.1" targetFramework="net461" /> + <package id="System.Reactive.Linq" version="3.1.1" targetFramework="net461" /> + <package id="System.Reactive.PlatformServices" version="3.1.1" targetFramework="net461" /> </packages>
\ No newline at end of file diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Program.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Program.cs index d384ebba6..60f4c3def 100644 --- a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Program.cs +++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Program.cs @@ -41,7 +41,7 @@ namespace Tango.StubsUtils.SessionClient.CLI var writer = new StreamWriter(_client); - var jsonRequest = String.Join(" ", args); + var jsonRequest = String.Join("^", args); writer.WriteLine(jsonRequest); writer.Flush(); diff --git a/Software/Visual_Studio/Tango.sln b/Software/Visual_Studio/Tango.sln index 0593cb0ec..5ace654c3 100644 --- a/Software/Visual_Studio/Tango.sln +++ b/Software/Visual_Studio/Tango.sln @@ -457,6 +457,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.StubsUtils.SessionCli EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Notifications.Wpf", "StubsUtils\Notifications.Wpf\Notifications.Wpf.csproj", "{5C9A4F46-263D-4C23-B361-F09E14BB109E}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.StubsUtils.ProcedureClient.CLI", "StubsUtils\Tango.StubsUtils.ProcedureClient.CLI\Tango.StubsUtils.ProcedureClient.CLI.csproj", "{8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -4332,6 +4334,26 @@ Global {5C9A4F46-263D-4C23-B361-F09E14BB109E}.Release|x64.Build.0 = Release 4.6.1|Any CPU {5C9A4F46-263D-4C23-B361-F09E14BB109E}.Release|x86.ActiveCfg = Release 4.6.1|Any CPU {5C9A4F46-263D-4C23-B361-F09E14BB109E}.Release|x86.Build.0 = Release 4.6.1|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Debug|ARM.ActiveCfg = Debug|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Debug|ARM.Build.0 = Debug|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Debug|ARM64.Build.0 = Debug|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Debug|x64.ActiveCfg = Debug|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Debug|x64.Build.0 = Debug|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Debug|x86.ActiveCfg = Debug|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Debug|x86.Build.0 = Debug|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Release|Any CPU.Build.0 = Release|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Release|ARM.ActiveCfg = Release|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Release|ARM.Build.0 = Release|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Release|ARM64.ActiveCfg = Release|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Release|ARM64.Build.0 = Release|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Release|x64.ActiveCfg = Release|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Release|x64.Build.0 = Release|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Release|x86.ActiveCfg = Release|Any CPU + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -4492,14 +4514,15 @@ Global {F423324C-7D0A-4512-BEBA-DF3A931A09F6} = {4A8BD6EC-41CF-46A9-B2CD-9D0DF6465963} {F1B727F5-ADF5-4A81-A740-7E64E48B29D4} = {4A8BD6EC-41CF-46A9-B2CD-9D0DF6465963} {5C9A4F46-263D-4C23-B361-F09E14BB109E} = {4A8BD6EC-41CF-46A9-B2CD-9D0DF6465963} + {8F0BCFC8-AF0F-40D3-882A-902CD221A6DE} = {4A8BD6EC-41CF-46A9-B2CD-9D0DF6465963} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - BuildVersion_UseGlobalSettings = False - BuildVersion_AssemblyInfoFilename = Properties\AssemblyInfo.cs - BuildVersion_StartDate = 2000/1/1 - BuildVersion_UpdateFileVersion = False - BuildVersion_UpdateAssemblyVersion = True - BuildVersion_BuildVersioningStyle = None.None.Increment.DeltaBaseYearDayOfYear SolutionGuid = {7986F7F4-A86A-4994-B1B6-0988D7F057B6} + BuildVersion_BuildVersioningStyle = None.None.Increment.DeltaBaseYearDayOfYear + BuildVersion_UpdateAssemblyVersion = True + BuildVersion_UpdateFileVersion = False + BuildVersion_StartDate = 2000/1/1 + BuildVersion_AssemblyInfoFilename = Properties\AssemblyInfo.cs + BuildVersion_UseGlobalSettings = False EndGlobalSection EndGlobal |
