Compare commits
15
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
47e4c69dba | ||
|
|
7119e18436 | ||
|
|
a6edbbe7b5 | ||
|
|
51276d161c | ||
|
|
3fa699b4c9 | ||
|
|
c9396bd6af | ||
|
|
f4dc550f1a | ||
|
|
bc978ed065 | ||
|
|
202c5faffd | ||
|
|
4cd3bc40d9 | ||
|
|
3800f3344b | ||
|
|
6ad139804f | ||
|
|
45d5c2d7cd | ||
|
|
65d55a7618 | ||
|
|
57c3ec34c2 |
No files matched your search
+2
-2
@@ -67,10 +67,10 @@ else ()
|
||||
|
||||
if(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
|
||||
add_custom_command(TARGET server_layout POST_BUILD
|
||||
COMMAND ln -fs ${CMAKE_BINARY_DIR}/../${CMAKE_BUILD_TYPE}/bin/netcoreapp3.0/linux-x64/sparkcmd ${CMAKE_BINARY_DIR}/server/ )
|
||||
COMMAND ln -fs ${CMAKE_BINARY_DIR}/../${CMAKE_BUILD_TYPE}/bin/netcoreapp3.1/linux-x64/sparkcmd ${CMAKE_BINARY_DIR}/server/ )
|
||||
else()
|
||||
add_custom_command(TARGET server_layout POST_BUILD
|
||||
COMMAND ln -fs ${CMAKE_BINARY_DIR}/../${CMAKE_BUILD_TYPE}/bin/netcoreapp3.0/linux-x64/publish/sparkcmd ${CMAKE_BINARY_DIR}/server/ )
|
||||
COMMAND ln -fs ${CMAKE_BINARY_DIR}/../${CMAKE_BUILD_TYPE}/bin/netcoreapp3.1/linux-x64/publish/sparkcmd ${CMAKE_BINARY_DIR}/server/ )
|
||||
endif()
|
||||
|
||||
endif()
|
||||
@@ -71,12 +71,12 @@ The first step is to start the spark_sdk Docker container with the examples dire
|
||||
|
||||
Windows Command Prompt:
|
||||
{% clipable() %}
|
||||
docker run --rm -it -v %CD%:/examples -u bts -w /examples --shm-size 1024m --name spark_sdk -h spark_sdk --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -p 9000:9000 -p 9001:9001 spark_sdk bash
|
||||
docker run --rm -it -v %CD%:/examples -u bts -w /examples --shm-size 2048m --name spark_sdk -h spark_sdk --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -p 9000:9000 -p 9001:9001 spark_sdk bash
|
||||
{% end %}
|
||||
|
||||
**Powershell** / Linux / Mac:
|
||||
{% clipable() %}
|
||||
docker run --rm -it -v ${PWD}:/examples -u bts -w /examples --shm-size 1024m --name spark_sdk -h spark_sdk --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -p 9000:9000 -p 9001:9001 spark_sdk bash
|
||||
docker run --rm -it -v ${PWD}:/examples -u bts -w /examples --shm-size 2048m --name spark_sdk -h spark_sdk --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -p 9000:9000 -p 9001:9001 spark_sdk bash
|
||||
{% end %}
|
||||
|
||||
### Attach
|
||||
|
||||
+1
-1
Submodule docker/linux updated: e106e6e704...abf81fc240.
+1
-1
Submodule externals updated: af352fd677...c2c2791adf.
@@ -0,0 +1,95 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29609.76
|
||||
MinimumVisualStudioVersion = 15.0.26124.0
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_api", "src\client\spark_api\spark_api.csproj", "{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspark", "build\src\lib\libspark.vcxproj", "{8C03E81A-6981-3441-BF6C-6ECE7F0482E4}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spark", "src\client\spark\Spark.csproj", "{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "sparkcmd", "src\client\sparkcmd\sparkcmd.csproj", "{387566C6-C6F6-412C-A30C-9855BBCB4816}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_core", "src\client\spark_core\spark_core.csproj", "{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZERO_CHECK", "build\ZERO_CHECK.vcxproj", "{23CC41FA-C9CE-3B77-BED8-71C058B05C4F}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_test", "src\client\spark_test\spark_test.csproj", "{ECD78CC5-138F-4809-A764-2358C2AC2E82}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
MinSizeRel|x64 = MinSizeRel|x64
|
||||
Release|x64 = Release|x64
|
||||
RelWithDebInfo|x64 = RelWithDebInfo|x64
|
||||
EndGlobalSection
|
||||
# The dotnet (core) build cli does not support c++ projects.
|
||||
# Until this changes, c++ projects/solutions must be built with msbuild.
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Debug|x64.Build.0 = Debug|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|x64.Build.0 = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Release|x64.ActiveCfg = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Release|x64.Build.0 = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||
{8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.Debug|x64.ActiveCfg = Debug|x64
|
||||
# {8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.Debug|x64.Build.0 = Debug|x64
|
||||
{8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
|
||||
# {8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
|
||||
{8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.Release|x64.ActiveCfg = Release|x64
|
||||
# {8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.Release|x64.Build.0 = Release|x64
|
||||
{8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
|
||||
# {8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Debug|x64.Build.0 = Debug|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.MinSizeRel|x64.Build.0 = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Release|x64.ActiveCfg = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Release|x64.Build.0 = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|x64.Build.0 = Debug|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|x64.Build.0 = Release|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|x64.ActiveCfg = Release|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|x64.Build.0 = Release|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Debug|x64.Build.0 = Debug|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|x64.Build.0 = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Release|x64.ActiveCfg = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Release|x64.Build.0 = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||
{23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
# {23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.Debug|x64.Build.0 = Debug|x64
|
||||
{23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
|
||||
# {23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
|
||||
{23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.Release|x64.ActiveCfg = Release|x64
|
||||
# {23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.Release|x64.Build.0 = Release|x64
|
||||
{23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
|
||||
# {23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|x64.Build.0 = Debug|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|x64.Build.0 = Release|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|x64.ActiveCfg = Release|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|x64.Build.0 = Release|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {422D1620-0166-4C26-9A81-CA8A2EB1AB58}
|
||||
EndGlobalSection
|
||||
GlobalSection(Performance) = preSolution
|
||||
HasPerformanceSessions = true
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
+39
-171
@@ -1,10 +1,10 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27130.2024
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29609.76
|
||||
MinimumVisualStudioVersion = 15.0.26124.0
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_api", "src\client\spark_api\spark_api.csproj", "{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspark", "build\src\lib\libspark.vcxproj", "{3335AAF0-489D-359D-8305-9B7A44E2C760}"
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspark", "build\src\lib\libspark.vcxproj", "{8C03E81A-6981-3441-BF6C-6ECE7F0482E4}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spark", "src\client\spark\Spark.csproj", "{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}"
|
||||
EndProject
|
||||
@@ -12,213 +12,81 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "sparkcmd", "src\client\spar
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_core", "src\client\spark_core\spark_core.csproj", "{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZERO_CHECK", "build\ZERO_CHECK.vcxproj", "{2256015B-E7D5-3614-8F39-814CA68A4444}"
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZERO_CHECK", "build\ZERO_CHECK.vcxproj", "{23CC41FA-C9CE-3B77-BED8-71C058B05C4F}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_test", "src\client\spark_test\spark_test.csproj", "{ECD78CC5-138F-4809-A764-2358C2AC2E82}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_sdk", "src\client\spark_sdk\spark_sdk.csproj", "{6963C314-83C4-4667-B0D0-C2F7AE208C29}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760} = {3335AAF0-489D-359D-8305-9B7A44E2C760}
|
||||
{8C03E81A-6981-3441-BF6C-6ECE7F0482E4} = {8C03E81A-6981-3441-BF6C-6ECE7F0482E4}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_test", "src\client\spark_test\spark_test.csproj", "{ECD78CC5-138F-4809-A764-2358C2AC2E82}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_excel", "src\client\spark_excel\spark_excel.csproj", "{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
MinSizeRel|Any CPU = MinSizeRel|Any CPU
|
||||
MinSizeRel|x64 = MinSizeRel|x64
|
||||
MinSizeRel|x86 = MinSizeRel|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
RelWithDebInfo|Any CPU = RelWithDebInfo|Any CPU
|
||||
RelWithDebInfo|x64 = RelWithDebInfo|x64
|
||||
RelWithDebInfo|x86 = RelWithDebInfo|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Debug|x64.Build.0 = Debug|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Debug|x86.ActiveCfg = Debug|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|Any CPU.ActiveCfg = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|Any CPU.Build.0 = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|x64.Build.0 = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|x86.ActiveCfg = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|x86.Build.0 = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Release|x64.ActiveCfg = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Release|x64.Build.0 = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Release|x86.ActiveCfg = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|Any CPU.ActiveCfg = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|Any CPU.Build.0 = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|x86.ActiveCfg = Release|x64
|
||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|x86.Build.0 = Release|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.Debug|x64.Build.0 = Debug|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.Debug|x86.ActiveCfg = Debug|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.Release|x64.ActiveCfg = Release|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.Release|x64.Build.0 = Release|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.Release|x86.ActiveCfg = Release|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
|
||||
{3335AAF0-489D-359D-8305-9B7A44E2C760}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.Debug|x64.Build.0 = Debug|x64
|
||||
{8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
|
||||
{8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
|
||||
{8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.Release|x64.ActiveCfg = Release|x64
|
||||
{8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.Release|x64.Build.0 = Release|x64
|
||||
{8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
|
||||
{8C03E81A-6981-3441-BF6C-6ECE7F0482E4}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Debug|x64.Build.0 = Debug|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Debug|x86.ActiveCfg = Debug|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.MinSizeRel|Any CPU.ActiveCfg = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.MinSizeRel|Any CPU.Build.0 = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.MinSizeRel|x64.Build.0 = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.MinSizeRel|x86.ActiveCfg = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.MinSizeRel|x86.Build.0 = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Release|x64.ActiveCfg = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Release|x64.Build.0 = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Release|x86.ActiveCfg = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.RelWithDebInfo|Any CPU.ActiveCfg = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.RelWithDebInfo|Any CPU.Build.0 = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.RelWithDebInfo|x86.ActiveCfg = Release|x64
|
||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.RelWithDebInfo|x86.Build.0 = Release|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|x64.Build.0 = Release|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|x86.Build.0 = Release|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|x64.Build.0 = Debug|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|x64.Build.0 = Release|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|x64.ActiveCfg = Release|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|x64.Build.0 = Release|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Debug|x64.Build.0 = Debug|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Debug|x86.ActiveCfg = Debug|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|Any CPU.ActiveCfg = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|Any CPU.Build.0 = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|x64.Build.0 = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|x86.ActiveCfg = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|x86.Build.0 = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Release|x64.ActiveCfg = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Release|x64.Build.0 = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Release|x86.ActiveCfg = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|Any CPU.ActiveCfg = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|Any CPU.Build.0 = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|x86.ActiveCfg = Release|x64
|
||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|x86.Build.0 = Release|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.Debug|x64.Build.0 = Debug|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.Debug|x86.ActiveCfg = Debug|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.Release|x64.ActiveCfg = Release|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.Release|x64.Build.0 = Release|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.Release|x86.ActiveCfg = Release|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
|
||||
{2256015B-E7D5-3614-8F39-814CA68A4444}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Debug|x64.Build.0 = Debug|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Debug|x86.ActiveCfg = Debug|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.MinSizeRel|Any CPU.ActiveCfg = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.MinSizeRel|Any CPU.Build.0 = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.MinSizeRel|x64.Build.0 = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.MinSizeRel|x86.ActiveCfg = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.MinSizeRel|x86.Build.0 = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Release|x64.ActiveCfg = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Release|x64.Build.0 = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Release|x86.ActiveCfg = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.RelWithDebInfo|Any CPU.ActiveCfg = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.RelWithDebInfo|Any CPU.Build.0 = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.RelWithDebInfo|x86.ActiveCfg = Release|x64
|
||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.RelWithDebInfo|x86.Build.0 = Release|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|x64.Build.0 = Release|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|x86.Build.0 = Release|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.Debug|x64.Build.0 = Debug|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.Debug|x86.ActiveCfg = Debug|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.MinSizeRel|Any CPU.ActiveCfg = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.MinSizeRel|Any CPU.Build.0 = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.MinSizeRel|x64.Build.0 = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.MinSizeRel|x86.ActiveCfg = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.MinSizeRel|x86.Build.0 = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.Release|x64.ActiveCfg = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.Release|x64.Build.0 = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.Release|x86.ActiveCfg = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.RelWithDebInfo|Any CPU.ActiveCfg = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.RelWithDebInfo|Any CPU.Build.0 = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.RelWithDebInfo|x86.ActiveCfg = Release|x64
|
||||
{BE9F27C3-B583-47DF-95FA-1F8BBC89DCCB}.RelWithDebInfo|x86.Build.0 = Release|x64
|
||||
{23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.Debug|x64.Build.0 = Debug|x64
|
||||
{23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
|
||||
{23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
|
||||
{23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.Release|x64.ActiveCfg = Release|x64
|
||||
{23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.Release|x64.Build.0 = Release|x64
|
||||
{23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
|
||||
{23CC41FA-C9CE-3B77-BED8-71C058B05C4F}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|x64.Build.0 = Debug|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|x64.Build.0 = Release|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|x64.ActiveCfg = Release|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|x64.Build.0 = Release|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
#$1 = Debug / Release (CMAKE_BUILD_TYPE), $2 = CMAKE_BINARY_DIR
|
||||
cd "$(dirname "$0")"
|
||||
echo $PWD dotnet build -c $1 ./sparkcmd/
|
||||
dotnet build -c $1 -o $2/../$1/bin/netcoreapp3.0/linux-x64 ./sparkcmd/
|
||||
dotnet build -c $1 -o $2/../$1/bin/netcoreapp3.1/linux-x64 ./sparkcmd/
|
||||
|
||||
if [ "$1" == "Release" ]
|
||||
then
|
||||
dotnet publish -c $1 -o $2/../$1/bin/netcoreapp3.0/linux-x64 ./sparkcmd/
|
||||
ln -fs $2/src/lib/libspark.so $2/../$1/bin/netcoreapp3.0/linux-x64/publish
|
||||
dotnet publish -c $1 -o $2/../$1/bin/netcoreapp3.1/linux-x64 ./sparkcmd/
|
||||
ln -fs $2/src/lib/libspark.so $2/../$1/bin/netcoreapp3.1/linux-x64/publish
|
||||
fi
|
||||
|
||||
ln -fs $2/src/lib/libspark.so $2/../$1/bin/netcoreapp3.0/linux-x64
|
||||
ln -fs $2/src/lib/libspark.so $2/../$1/bin/netcoreapp3.1/linux-x64
|
||||
@@ -2,7 +2,7 @@
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:mbts.ui.shell"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
xmlns:converters="clr-namespace:mbts.ui.converters">
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:mbts="clr-namespace:mbts.ui"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
|
||||
<sys:String x:Key="{x:Static mbts:Icons.AttachAlgosKey}">
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime">
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Resources/Converters.xaml"/>
|
||||
<ResourceDictionary Source="/view/Resources/ComboBoxes.xaml"/>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime">
|
||||
<cv:ValueMap x:Key="EmptyStringVisibilityConverter" Default="{u:Visibility Visible}">
|
||||
<cv:KeyValue Key="{x:Static sys:String.Empty}" Value="{u:Visibility Collapsed}"/>
|
||||
<cv:KeyValue Key="{x:Null}" Value="{u:Visibility Collapsed}"/>
|
||||
|
||||
+3
-3
@@ -5,7 +5,7 @@ using System.Collections.Generic;
|
||||
namespace mbts.spark {
|
||||
partial class SyntheticEditorVM {
|
||||
class QuoteInsideMarketDistanceTowardModel : RowModelBase<uint> {
|
||||
IDictionary<int, uint> _value_store = new Dictionary<int, uint>();
|
||||
readonly Dictionary<uint, uint> _value_store = new Dictionary<uint, uint>();
|
||||
|
||||
public override string display_name { get; } = "Toward Distance";
|
||||
public override string help_text { get; } = string.Empty;
|
||||
@@ -21,7 +21,7 @@ namespace mbts.spark {
|
||||
_value_from_store(leg_tup);
|
||||
|
||||
public override void set_value(LegSpreaderParamsTuple leg_tup, uint value) {
|
||||
_value_store[leg_tup.id] = value;
|
||||
_value_store[leg_tup.SecurityKey] = value;
|
||||
if (_get_inside_market_distance(leg_tup) is QuoteInsideMarketDistanceThrottle inside_market_distance)
|
||||
inside_market_distance.OnTowardDistance = value;
|
||||
}
|
||||
@@ -33,7 +33,7 @@ namespace mbts.spark {
|
||||
leg_tup.leg_params.QuoteParams.QuoteInsideMarketDistanceThrottle;
|
||||
|
||||
uint _value_from_store(LegSpreaderParamsTuple leg_tup) =>
|
||||
_value_store.GetValueOrDefault(leg_tup.id);
|
||||
_value_store.GetValueOrDefault(leg_tup.SecurityKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:uag="clr-namespace:mbts.ui.spark.algo"
|
||||
xmlns:uspcv="clr-namespace:mbts.ui.spark.converters"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
u:StateManager.VisualState="{Binding selected_definition.algo_root, Converter={x:Static usp:AlgoStudioView.EditPaneVisualStateConverter}}"
|
||||
Background="{StaticResource CommonBackground}"
|
||||
>
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:uag="clr-namespace:mbts.ui.spark.algo"
|
||||
xmlns:uspcv="clr-namespace:mbts.ui.spark.converters"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<UserControl.Resources>
|
||||
<ResourceDictionary>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:uag="clr-namespace:mbts.ui.spark.algo"
|
||||
xmlns:uspcv="clr-namespace:mbts.ui.spark.converters"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<UserControl.Resources>
|
||||
<ResourceDictionary>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
|
||||
TextElement.FontSize="{x:Static u:FontSizes.Small}"
|
||||
>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
xmlns:uag="clr-namespace:mbts.ui.spark.algo"
|
||||
xmlns:converters="clr-namespace:mbts.ui.converters"
|
||||
xmlns:txt="clr-namespace:mbts.ui.utility.text"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
Height="600"
|
||||
Width="420"
|
||||
Background="{x:Static mbts:BTSColors.common_background_brush}"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
FocusVisualStyle="{x:Null}"
|
||||
>
|
||||
<UserControl.Resources>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:uspcv="clr-namespace:mbts.ui.spark.converters"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
xmlns:order="clr-namespace:bts.api.orderman;assembly=spark_api"
|
||||
mc:Ignorable="d"
|
||||
MaxHeight="240"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:uspcv="clr-namespace:mbts.ui.spark.converters"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
InactiveSelectionOpacity="0.3"
|
||||
>
|
||||
<c:DIYGrid.Resources>
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
<ResourceDictionary
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:ie="http://schemas.microsoft.com/expression/2010/interactions"
|
||||
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:ob="clr-namespace:bts.shell.orderbook"
|
||||
xmlns:sp="clr-namespace:mbts.spark"
|
||||
@@ -432,11 +430,11 @@
|
||||
BorderBrush="{u:BTSColor UI.Button.normal_border}"
|
||||
Background="{StaticResource ControlBackground}"
|
||||
>
|
||||
<i:Interaction.Triggers>
|
||||
<!--<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="MouseLeave">
|
||||
<ie:ChangePropertyAction TargetName="OverflowPopup" PropertyName="IsOpen" Value="False"/>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</i:Interaction.Triggers>-->
|
||||
<StackPanel Orientation="Vertical">
|
||||
<MenuItem
|
||||
c:RadioButtonGroupManager.Manager="{Binding Path='(c:RadioButtonGroupManager.Manager)', RelativeSource={RelativeSource AncestorType=ToolBar}}"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:ut="clr-namespace:mbts.ui.utilities"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
xmlns:ob="clr-namespace:bts.shell.orderbook"
|
||||
Grid.Row="0"
|
||||
FocusManager.IsFocusScope="True"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<cv:MultiValueConverterPipe x:Key="CalculatorButtonsVisualStateConverter">
|
||||
<cv:BooleanNoneConverter/>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
FocusManager.IsFocusScope="True"
|
||||
Background="{StaticResource CommonBackground}"
|
||||
>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:uag="clr-namespace:mbts.ui.spark.algo"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime">
|
||||
<UserControl.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
u:WindowStyle.SizeToContent="WidthAndHeight"
|
||||
u:WindowStyle.TitleContent="{Binding bbo, Mode=OneWay}"
|
||||
Style="{StaticResource BTSWindowTitleTemplate}">
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
xmlns:msys="clr-namespace:bts.api;assembly=spark_api"
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
u:WindowStyle.SizeToContent="WidthAndHeight"
|
||||
u:WindowStyle.TitleContent="{Binding bbo, Mode=OneWay}"
|
||||
Style="{StaticResource BTSWindowTitleTemplate}">
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Colors.xaml"/>
|
||||
|
||||
+40
-40
@@ -19,7 +19,7 @@ namespace bts.Properties {
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
@@ -59,34 +59,7 @@ namespace bts.Properties {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
||||
/// </summary>
|
||||
internal static System.IO.UnmanagedMemoryStream reload_1911 {
|
||||
get {
|
||||
return ResourceManager.GetStream("reload_1911", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
||||
/// </summary>
|
||||
internal static System.IO.UnmanagedMemoryStream cash_register_purchase {
|
||||
get {
|
||||
return ResourceManager.GetStream("cash_register_purchase", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
||||
/// </summary>
|
||||
internal static System.IO.UnmanagedMemoryStream powerup {
|
||||
get {
|
||||
return ResourceManager.GetStream("powerup", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
||||
/// </summary>
|
||||
@@ -99,9 +72,18 @@ namespace bts.Properties {
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
||||
/// </summary>
|
||||
internal static System.IO.UnmanagedMemoryStream whistle {
|
||||
internal static System.IO.UnmanagedMemoryStream cash_register_purchase {
|
||||
get {
|
||||
return ResourceManager.GetStream("whistle", resourceCulture);
|
||||
return ResourceManager.GetStream("cash_register_purchase", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
||||
/// </summary>
|
||||
internal static System.IO.UnmanagedMemoryStream game_over_arcade {
|
||||
get {
|
||||
return ResourceManager.GetStream("game_over_arcade", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,15 +105,6 @@ namespace bts.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
||||
/// </summary>
|
||||
internal static System.IO.UnmanagedMemoryStream game_over_arcade {
|
||||
get {
|
||||
return ResourceManager.GetStream("game_over_arcade", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
@@ -151,5 +124,32 @@ namespace bts.Properties {
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
||||
/// </summary>
|
||||
internal static System.IO.UnmanagedMemoryStream powerup {
|
||||
get {
|
||||
return ResourceManager.GetStream("powerup", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
||||
/// </summary>
|
||||
internal static System.IO.UnmanagedMemoryStream reload_1911 {
|
||||
get {
|
||||
return ResourceManager.GetStream("reload_1911", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
||||
/// </summary>
|
||||
internal static System.IO.UnmanagedMemoryStream whistle {
|
||||
get {
|
||||
return ResourceManager.GetStream("whistle", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -118,34 +118,34 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="game_sound_correct" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Sounds\game_sound_correct.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="Grab" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Images\Cursors\Grab.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="Grabbing" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Images\Cursors\Grabbing.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="whistle" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Sounds\whistle.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="bell_counter" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Sounds\bell_counter.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="powerup" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Sounds\powerup.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="cash_register_purchase" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Sounds\cash_register_purchase.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="game_over_arcade" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Sounds\game_over_arcade.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="game_sound_correct" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Sounds\game_sound_correct.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="game_sound_wrong" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Sounds\game_sound_wrong.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="Grab" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Images\Cursors\Grab.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="Grabbing" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Images\Cursors\Grabbing.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="powerup" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Sounds\powerup.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="reload_1911" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Sounds\reload_1911.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="whistle" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Sounds\whistle.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,56 +1,48 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net471</TargetFramework>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
<Platforms>x64</Platforms>
|
||||
<Platform>x64</Platform>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RuntimeIdentifier>win7-x64</RuntimeIdentifier>
|
||||
<Authors>Blue Trading Systems</Authors>
|
||||
<Company>Blue Trading Systems</Company>
|
||||
<Product>Spark</Product>
|
||||
<Description>Advanced Derivatives Trading</Description>
|
||||
<ApplicationManifest>spark.manifest</ApplicationManifest>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<Configurations>Debug;Release</Configurations>
|
||||
<Platforms>x64</Platforms>
|
||||
<RuntimeIdentifiers>win7-x64</RuntimeIdentifiers>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<LanguageTargets>$(MSBuildExtensionsPath)\$(VisualStudioVersion)\Bin\Microsoft.CSharp.targets</LanguageTargets>
|
||||
<ApplicationIcon>logo.ico</ApplicationIcon>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<StartupObject>mbts.ui.shell.App</StartupObject>
|
||||
<RootNamespace>bts</RootNamespace>
|
||||
<LangVersion>7.2</LangVersion>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<WarningsAsErrors />
|
||||
<Version>1.0.0</Version>
|
||||
<UseWPF>true</UseWPF>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<WarningsAsErrors>true</WarningsAsErrors>
|
||||
<TreatWarningsAsErrors />
|
||||
<GenerateProgramFile>false</GenerateProgramFile>
|
||||
<Configurations>Debug;Release</Configurations>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Google.Protobuf" Version="3.11.2" />
|
||||
<PackageReference Include="IronPython" Version="2.7.9" />
|
||||
<PackageReference Include="NAudio" Version="1.9.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
|
||||
<PackageReference Include="NUnit" Version="3.12.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="3.15.1" />
|
||||
<PackageReference Include="System.ComponentModel.Composition" Version="4.7.0" />
|
||||
<PackageReference Include="System.Composition.AttributedModel" Version="1.4.0" />
|
||||
<FrameworkReference Remove="Microsoft.WindowsDesktop.App" />
|
||||
<PackageReference Include="System.Reactive.Linq" Version="4.3.1" />
|
||||
<FrameworkReference Update="Microsoft.WindowsDesktop.App" />
|
||||
<PackageReference Include="protobuf-net" Version="2.4.4" />
|
||||
<PackageReference Include="System.Reactive.Interfaces" Version="4.3.1" />
|
||||
<ProjectReference Include="../spark_api/spark_api.csproj" />
|
||||
<ProjectReference Include="../spark_core/spark_core.csproj" />
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="PresentationFramework.Aero" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xaml" />
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.ComponentModel.Composition" />
|
||||
<PackageReference Include="Google.Protobuf" Version="3.6.1" />
|
||||
<PackageReference Include="IronPython" Version="2.7.7" />
|
||||
<PackageReference Include="NAudio" Version="1.8.4" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
|
||||
<PackageReference Include="NUnit" Version="3.10.1" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="3.8.0" />
|
||||
<PackageReference Include="System.Reactive" Version="3.1.1" />
|
||||
<PackageReference Include="protobuf-net" Version="2.3.2" />
|
||||
<PackageReference Include="System.Windows.Interactivity.WPF" Version="2.0.20525" />
|
||||
<PackageReference Include="WPFTextBoxAutoComplete" Version="1.0.5" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml" Generator="MSBuild:Compile" />
|
||||
<Page Include="**\*.xaml" Exclude="App.xaml" SubType="Designer" Generator="MSBuild:Compile" />
|
||||
<Compile Update="**\*.xaml.cs" SubType="Designer" DependentUpon="%(Filename)" />
|
||||
<Proto3 Include="core\Settings\UISettings.proto" />
|
||||
<Resource Include="**\*.ico" />
|
||||
<Resource Include="**\*.png" />
|
||||
<Proto3 Include="core\Settings\UISettings.proto" />
|
||||
<ConfigDefaults Include="../../lib/config/defaults/*.conf" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@@ -60,8 +52,17 @@
|
||||
<Content Include="logo.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Sounds\game_sound_correct.wav" />
|
||||
<EmbeddedResource Include="Sounds\whistle.wav" />
|
||||
<Compile Update="Properties\Resources.Designer.cs">
|
||||
<DesignTime>True</DesignTime>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<Target Name="diagnostic" AfterTargets="PreBuildEvent" />
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Update="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -147,15 +147,8 @@ namespace bts.api.diagnostic {
|
||||
}
|
||||
}
|
||||
|
||||
public override Task<ScriptResultMessage> run(ScriptLines request) {
|
||||
|
||||
var tcs = new TaskCompletionSource<ScriptResultMessage>();
|
||||
void ret(ScriptResultMessage r) {
|
||||
tcs.TrySetResult(r);
|
||||
}
|
||||
|
||||
_dispatcher.BeginInvoke(() => {
|
||||
|
||||
public override Task<ScriptResultMessage> run(ScriptLines request) =>
|
||||
_dispatcher.InvokeAsync(() => {
|
||||
// append lines to _pending
|
||||
foreach (var line in request.Lines) {
|
||||
_pending.AppendLine(line);
|
||||
@@ -171,23 +164,18 @@ namespace bts.api.diagnostic {
|
||||
// If 'complete' run code
|
||||
case ScriptCodeParseResult.Complete:
|
||||
_pending.Clear();
|
||||
ret(run_code(code));
|
||||
break;
|
||||
//ret(run_code(code));
|
||||
return run_code(code);
|
||||
// if 'invalid' return error
|
||||
case ScriptCodeParseResult.Invalid:
|
||||
Console.WriteLine("Invalid");
|
||||
_pending.Clear();
|
||||
ret(new ScriptResultMessage { Res = ScriptResult.Invalid, Message = code.GetCode() });
|
||||
break;
|
||||
return new ScriptResultMessage { Res = ScriptResult.Invalid, Message = code.GetCode() };
|
||||
// otherwise continue buffering
|
||||
default:
|
||||
Console.WriteLine("Incomplete");
|
||||
ret(new ScriptResultMessage { Res = ScriptResult.Incomplete });
|
||||
break;
|
||||
return new ScriptResultMessage { Res = ScriptResult.Incomplete };
|
||||
}
|
||||
});
|
||||
|
||||
return tcs.Task;
|
||||
}
|
||||
}).Task;
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
FocusManager.IsFocusScope="True"
|
||||
u:WindowStyle.SizeToContent="WidthAndHeight"
|
||||
Background="{StaticResource CommonBackground}"
|
||||
|
||||
@@ -1,23 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace System.Windows.Threading {
|
||||
public static class DispatcherHelper {
|
||||
public static void Ignore(this DispatcherOperation dispatcher_operation) { }
|
||||
|
||||
namespace System.Windows.Threading
|
||||
{
|
||||
public static class DispatcherHelper
|
||||
{
|
||||
#region Easy Invoke
|
||||
|
||||
public static void Invoke(this Dispatcher d, Action action) {
|
||||
d.Invoke(action);
|
||||
}
|
||||
|
||||
public static void BeginInvoke(this Dispatcher d, Action action) {
|
||||
d.BeginInvoke(action);
|
||||
}
|
||||
|
||||
public static void Invoke<T>(this Dispatcher d, Action<T> action, T arg1) {
|
||||
d.Invoke(action, arg1);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Resources/ComboBoxes.xaml"/>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Resources/ComboBoxes.xaml"/>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Resources/ComboBoxes.xaml"/>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:ut="clr-namespace:mbts.ui.utilities"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<UserControl.Resources>
|
||||
<ResourceDictionary>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:msp="clr-namespace:mbts.spark"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime">
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Resources/ComboBoxes.xaml"/>
|
||||
<ResourceDictionary Source="/view/Controls/DataGridEx/Filters/Views/DoubleMinMaxFilterControl.xaml"/>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Resources/Buttons.xaml"/>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:converters="clr-namespace:mbts.ui.converters"
|
||||
xmlns:controls="clr-namespace:mbts.ui.controls"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime">
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Resources/Converters.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:uag="clr-namespace:mbts.ui.spark.algo"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Controls/TickUpDown/TickUpDown.xaml"/>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:uag="clr-namespace:mbts.ui.spark.algo"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Controls/Popup/PopupControl.xaml"/>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:uag="clr-namespace:mbts.ui.spark.algo"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<!--Primitives-->
|
||||
<sys:Double x:Key="TickUpDownMinWidth">37</sys:Double>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:txt="clr-namespace:mbts.ui.utility.text"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Resources/ComboBoxes.xaml"/>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
xmlns:proto="clr-namespace:bts.proto"
|
||||
>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime">
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Colors.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
xmlns:proto="clr-namespace:bts.proto"
|
||||
>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:txt="clr-namespace:mbts.ui.utility.text"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime">
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Colors.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
<ResourceDictionary
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:ie="http://schemas.microsoft.com/expression/2010/interactions"
|
||||
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<!--Primitive Constants-->
|
||||
<sys:Double x:Key="VerticalPush1">4</sys:Double>
|
||||
@@ -194,11 +190,11 @@
|
||||
BorderBrush="{u:BTSColor UI.Button.normal_border}"
|
||||
Background="{x:Static u:BTSColors.common_background_brush}"
|
||||
>
|
||||
<i:Interaction.Triggers>
|
||||
<!--<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="MouseLeave">
|
||||
<ie:ChangePropertyAction TargetName="OverflowPopup" PropertyName="IsOpen" Value="False"/>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</i:Interaction.Triggers>-->
|
||||
<ToolBarOverflowPanel x:Name="PART_ToolBarOverflowPanel"/>
|
||||
</Border>
|
||||
</Popup>
|
||||
|
||||
@@ -288,7 +288,7 @@ namespace mbts.ui {
|
||||
if (selector != null) {
|
||||
selector.Dispatcher.BeginInvoke(() => {
|
||||
selector.SelectedItem = src;
|
||||
});
|
||||
}).Ignore();
|
||||
}
|
||||
|
||||
new_window.Activate();
|
||||
|
||||
@@ -1,52 +1,54 @@
|
||||
// from https://gist.github.com/ryanvs/8059757
|
||||
//// from https://gist.github.com/ryanvs/8059757
|
||||
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Interactivity;
|
||||
/// This class was commented out during the migration to .NET Core 3,
|
||||
/// bc it derives from a type defined in an assembly, System.Interactivity, that is incompatible w/ .NET Core 3.
|
||||
//using System;
|
||||
//using System.Threading;
|
||||
//using System.Windows;
|
||||
//using System.Windows.Controls;
|
||||
//using System.Windows.Controls.Primitives;
|
||||
//using System.Windows.Interactivity;
|
||||
|
||||
namespace mbts.ui
|
||||
{
|
||||
internal class DropDownButtonBehavior : Behavior<Button> {
|
||||
private long attachedCount;
|
||||
private bool isContextMenuOpen;
|
||||
//namespace mbts.ui
|
||||
//{
|
||||
// internal class DropDownButtonBehavior : Behavior<Button> {
|
||||
// private long attachedCount;
|
||||
// private bool isContextMenuOpen;
|
||||
|
||||
protected override void OnAttached() {
|
||||
base.OnAttached();
|
||||
AssociatedObject.AddHandler(Button.ClickEvent, new RoutedEventHandler(AssociatedObject_Click), true);
|
||||
}
|
||||
// protected override void OnAttached() {
|
||||
// base.OnAttached();
|
||||
// AssociatedObject.AddHandler(Button.ClickEvent, new RoutedEventHandler(AssociatedObject_Click), true);
|
||||
// }
|
||||
|
||||
void AssociatedObject_Click(object sender, System.Windows.RoutedEventArgs e) {
|
||||
Button source = sender as Button;
|
||||
if (source != null && source.ContextMenu != null) {
|
||||
// Only open the ContextMenu when it is not already open. If it is already open,
|
||||
// when the button is pressed the ContextMenu will lose focus and automatically close.
|
||||
if (!isContextMenuOpen) {
|
||||
source.ContextMenu.AddHandler(ContextMenu.ClosedEvent, new RoutedEventHandler(ContextMenu_Closed), true);
|
||||
Interlocked.Increment(ref attachedCount);
|
||||
// If there is a drop-down assigned to this button, then position and display it
|
||||
source.ContextMenu.PlacementTarget = source;
|
||||
source.ContextMenu.Placement = PlacementMode.Bottom;
|
||||
source.ContextMenu.IsOpen = true;
|
||||
isContextMenuOpen = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
// void AssociatedObject_Click(object sender, System.Windows.RoutedEventArgs e) {
|
||||
// Button source = sender as Button;
|
||||
// if (source != null && source.ContextMenu != null) {
|
||||
// // Only open the ContextMenu when it is not already open. If it is already open,
|
||||
// // when the button is pressed the ContextMenu will lose focus and automatically close.
|
||||
// if (!isContextMenuOpen) {
|
||||
// source.ContextMenu.AddHandler(ContextMenu.ClosedEvent, new RoutedEventHandler(ContextMenu_Closed), true);
|
||||
// Interlocked.Increment(ref attachedCount);
|
||||
// // If there is a drop-down assigned to this button, then position and display it
|
||||
// source.ContextMenu.PlacementTarget = source;
|
||||
// source.ContextMenu.Placement = PlacementMode.Bottom;
|
||||
// source.ContextMenu.IsOpen = true;
|
||||
// isContextMenuOpen = true;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
protected override void OnDetaching() {
|
||||
base.OnDetaching();
|
||||
AssociatedObject.RemoveHandler(Button.ClickEvent, new RoutedEventHandler(AssociatedObject_Click));
|
||||
}
|
||||
// protected override void OnDetaching() {
|
||||
// base.OnDetaching();
|
||||
// AssociatedObject.RemoveHandler(Button.ClickEvent, new RoutedEventHandler(AssociatedObject_Click));
|
||||
// }
|
||||
|
||||
void ContextMenu_Closed(object sender, RoutedEventArgs e) {
|
||||
isContextMenuOpen = false;
|
||||
var contextMenu = sender as ContextMenu;
|
||||
if (contextMenu != null) {
|
||||
contextMenu.RemoveHandler(ContextMenu.ClosedEvent, new RoutedEventHandler(ContextMenu_Closed));
|
||||
Interlocked.Decrement(ref attachedCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// void ContextMenu_Closed(object sender, RoutedEventArgs e) {
|
||||
// isContextMenuOpen = false;
|
||||
// var contextMenu = sender as ContextMenu;
|
||||
// if (contextMenu != null) {
|
||||
// contextMenu.RemoveHandler(ContextMenu.ClosedEvent, new RoutedEventHandler(ContextMenu_Closed));
|
||||
// Interlocked.Decrement(ref attachedCount);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
@@ -3,7 +3,7 @@
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:ui="clr-namespace:mbts.ui"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
xmlns:control="clr-namespace:mbts.ui.controls">
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Controls/MultiSelectDropDown.xaml" />
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime">
|
||||
<Color x:Key="OptionMark.MouseOver.Background.Color">#FFF3F9FF</Color>
|
||||
<Color x:Key="OptionMark.MouseOver.Border.Color">#FF5593FF</Color>
|
||||
<Color x:Key="OptionMark.MouseOver.Glyph.Color">#FF212121</Color>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:uspcv="clr-namespace:mbts.ui.spark.converters"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime">
|
||||
<cv:BooleanOrConverter x:Key="OrConverter" />
|
||||
<cv:BooleanAndConverter x:Key="AndConverter" />
|
||||
<cv:NotConverter x:Key="NotConverter" />
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:u="clr-namespace:mbts.ui"
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime">
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="/view/Resources/Converters.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mbts="clr-namespace:mbts.ui"
|
||||
xmlns:ui="clr-namespace:mbts.ui"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
xmlns:control="clr-namespace:mbts.ui.controls">
|
||||
</ResourceDictionary>
|
||||
@@ -7,8 +7,7 @@
|
||||
xmlns:shell="clr-namespace:mbts.ui.shell"
|
||||
xmlns:c="clr-namespace:mbts.ui.controls"
|
||||
xmlns:converters="clr-namespace:mbts.ui.converters"
|
||||
xmlns:autocomplete="clr-namespace:WPFTextBoxAutoComplete;assembly=WPFTextBoxAutoComplete"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
x:Name="_login_view"
|
||||
Width="520"
|
||||
Height="230"
|
||||
@@ -151,7 +150,6 @@
|
||||
|
||||
<TextBox
|
||||
x:Name="_username"
|
||||
autocomplete:AutoCompleteBehavior.AutoCompleteItemsSource="{Binding KnownUsers}"
|
||||
HorizontalAlignment="Stretch"
|
||||
Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}"
|
||||
>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:stg="clr-namespace:mbts.ui.settings"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
>
|
||||
<Grid>
|
||||
<Grid.Resources>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
xmlns:cv="clr-namespace:mbts.ui.converters"
|
||||
xmlns:usp="clr-namespace:mbts.ui.spark"
|
||||
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
u:WindowStyle.AllowResize="True"
|
||||
u:WindowStyle.SizeToContent="WidthAndHeight"
|
||||
u:WindowStyle.TitleContent="{Binding}"
|
||||
|
||||
@@ -266,7 +266,7 @@ namespace mbts.spark {
|
||||
Window choose_name_dialog(string title, ProfileVM target, Action<ProfileVM, string> commit) {
|
||||
var text_box = new TextBox { Width = 160, Margin = new Thickness(8, 0, 0, 0), Text = target?.name ?? string.Empty };
|
||||
Behavior.SetFocusOnLoaded(text_box, true);
|
||||
WPFTextBoxAutoComplete.AutoCompleteBehavior.SetAutoCompleteItemsSource(text_box, skip_local.Select(vm => vm.name).ToList());
|
||||
//WPFTextBoxAutoComplete.AutoCompleteBehavior.SetAutoCompleteItemsSource(text_box, skip_local.Select(vm => vm.name).ToList());
|
||||
// panel
|
||||
var panel = new StackPanel { Orientation = Orientation.Horizontal, Margin = new Thickness(8) };
|
||||
panel.Children.Add(new TextBlock { Text = "Name:", VerticalAlignment = VerticalAlignment.Center });
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
xmlns:local="clr-namespace:mbts.ui.shell"
|
||||
mc:Ignorable="d"
|
||||
xmlns:controls="clr-namespace:mbts.ui.controls"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||||
xmlns:ui="clr-namespace:mbts.ui"
|
||||
Width="250"
|
||||
MaxHeight="700"
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
dotnet pack
|
||||
dotnet nuget push
|
||||
@@ -1,35 +1,33 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>netstandard2.0</TargetFrameworks>
|
||||
<TargetFrameworks>net48;netcoreapp3.1</TargetFrameworks>
|
||||
<Platforms>x64</Platforms>
|
||||
<Platform>x64</Platform>
|
||||
<Authors>Blue Trading Systems</Authors>
|
||||
<Company>Blue Trading Systems</Company>
|
||||
<Product>Spark</Product>
|
||||
<Description />
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<Platforms>x64</Platforms>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<WarningsAsErrors />
|
||||
<Version>1.0.0</Version>
|
||||
<LangVersion>7.2</LangVersion>
|
||||
<Configurations>Debug;Release</Configurations>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Google.Protobuf" Version="3.6.1" />
|
||||
<PackageReference Include="System.Collections.Immutable" Version="1.5.0" />
|
||||
<PackageReference Include="System.Reactive" Version="3.1.1" />
|
||||
<PackageReference Include="Google.Protobuf" Version="3.11.2" />
|
||||
<PackageReference Include="System.Collections.Immutable" Version="1.7.0" />
|
||||
<PackageReference Include="System.Reactive" Version="4.3.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Proto3 Include="**/*.proto" />
|
||||
<Proto3 Include="../../lib/api/*.proto" />
|
||||
<Proto3 Include="../../lib/api/services/*.proto" />
|
||||
<!--Proto3 Remove="../../lib/api/services/MarketDataRelay.proto" /-->
|
||||
<Proto3 Include="../../lib/md/protos/Co2.proto" />
|
||||
<Proto3 Include="../../lib/domain_model/Security.proto" />
|
||||
<Proto3 Include="../../lib/sparkproto/SparkProtos.proto" />
|
||||
<Proto3 Update="../../lib/api/services/OutOfProcessURLListener.proto">
|
||||
<!-- <CompileOptions>internal_access:</CompileOptions> -->
|
||||
</Proto3>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -75,12 +75,6 @@ namespace System.Collections.Generic {
|
||||
}
|
||||
|
||||
#region GetValueOrDefault
|
||||
public static TValue GetValueOrDefault<TKey, TValue>(this IReadOnlyDictionary<TKey, TValue> dictionary, TKey key) =>
|
||||
dictionary.TryGetValue(key, out TValue result) ? result : default;
|
||||
|
||||
public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key) =>
|
||||
dictionary.TryGetValue(key, out TValue result) ? result : default;
|
||||
|
||||
public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, TValue default_value) =>
|
||||
dictionary.TryGetValue(key, out TValue result) ? result : default_value;
|
||||
|
||||
|
||||
@@ -607,13 +607,6 @@ namespace System.Collections.Generic {
|
||||
yield return ConvertUtils.try_convert<TResult>(obj);
|
||||
}
|
||||
|
||||
public static IEnumerable<(T1, T2)> Zip<T1, T2>(this IEnumerable<T1> source, IEnumerable<T2> other) {
|
||||
using (var sen = source.GetEnumerator())
|
||||
using (var oen = other.GetEnumerator())
|
||||
while (sen.MoveNext() && oen.MoveNext())
|
||||
yield return (sen.Current, oen.Current);
|
||||
}
|
||||
|
||||
struct EnumerableCount<T> {
|
||||
readonly ICollection<T> _collection;
|
||||
readonly IReadOnlyCollection<T> _ro_collection;
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>netstandard2.0</TargetFrameworks>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
<Platforms>x64</Platforms>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<Platform>x64</Platform>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<WarningsAsErrors />
|
||||
<Version>1.0.0</Version>
|
||||
<LangVersion>7.2</LangVersion>
|
||||
<Configurations>Debug;Release</Configurations>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="../spark_api/spark_api.csproj" />
|
||||
<PackageReference Include="System.Reactive" Version="3.1.1" />
|
||||
<PackageReference Include="protobuf-net" Version="2.3.2" />
|
||||
<PackageReference Include="System.Reactive" Version="4.3.1" />
|
||||
<PackageReference Include="protobuf-net" Version="2.4.4" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="ExcelDna.AddIn" version="0.34.6" targetFramework="net471" />
|
||||
<package id="ExcelDna.Integration" version="0.34.6" targetFramework="net471" />
|
||||
</packages>
|
||||
@@ -1,59 +1,51 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
|
||||
<TargetFrameworks>net471</TargetFrameworks>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<Platforms>x64</Platforms>
|
||||
<Platform>x64</Platform>
|
||||
<OutputType>Library</OutputType>
|
||||
<!-- <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||
<IncludeSource>true</IncludeSource>
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput> -->
|
||||
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>
|
||||
|
||||
<Authors>Blue Trading Systems</Authors>
|
||||
<Company>Blue Trading Systems</Company>
|
||||
<Product>Spark</Product>
|
||||
<Description />
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<Platforms>x64</Platforms>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<WarningsAsErrors />
|
||||
<Version>1.0.0</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Google.Protobuf" Version="3.6.1" />
|
||||
<PackageReference Include="System.Reactive" Version="3.1.1" />
|
||||
<PackageReference Include="System.Reactive.PlatformServices" Version="3.1.1" />
|
||||
<PackageReference Include="NUnit" Version="3.10.1" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
|
||||
<PackageReference Include="Google.Protobuf" Version="3.11.2" />
|
||||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="4.7.0" />
|
||||
<PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
|
||||
<PackageReference Include="System.Net.Http" Version="4.3.4" />
|
||||
<PackageReference Include="System.Reactive" Version="4.3.1" />
|
||||
<PackageReference Include="System.Reactive.PlatformServices" Version="4.3.1" />
|
||||
<PackageReference Include="NUnit" Version="3.12.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
|
||||
<PackageReference Include="System.Linq.Dynamic" Version="1.0.7" />
|
||||
|
||||
<PackageReference Include="ExcelDna.AddIn" Version="0.34.6" />
|
||||
<PackageReference Include="ExcelDna.Integration" Version="0.34.6" />
|
||||
<PackageReference Include="ExcelDna.IntelliSense" Version="1.1.0" />
|
||||
<PackageReference Include="ExcelDna.Registration" Version="0.34.7" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<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" />
|
||||
<PackageReference Include="ExcelDna.AddIn" Version="1.0.0" />
|
||||
<PackageReference Include="ExcelDna.Integration" Version="1.0.0" />
|
||||
<PackageReference Include="ExcelDna.IntelliSense" Version="1.1.0" />
|
||||
<PackageReference Include="ExcelDna.Registration" Version="0.34.7" />
|
||||
<PackageReference Include="System.Runtime" Version="4.3.1" />
|
||||
<PackageReference Include="System.Xml.Linq" Version="3.5.21022.801" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="spark_excel-AddIn.dna" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\ExcelDna.Build.props" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="../spark_api/spark_api.csproj"/>
|
||||
<ProjectReference Include="../spark_api/spark_api.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@@ -62,21 +54,8 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="spark_excel_example_2019.xlsm"><CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory></None>
|
||||
</ItemGroup>
|
||||
|
||||
<!-- <Target Name="CopyProjectReferencesToPackage" DependsOnTargets="ResolveReferences">
|
||||
<ItemGroup>
|
||||
<BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))" />
|
||||
<BuildOutputInPackage Include="$(OutputPath)..\net471\libspark.dll"/>
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
-->
|
||||
|
||||
<!-- <Import Project="$(NuGetPackageRoot)\ExcelDna.AddIn\0.34.6\tools\ExcelDna.AddIn.targets" Condition="Exists('$(NuGetPackageRoot)\ExcelDna.AddIn\0.34.6\tools\ExcelDna.AddIn.targets')" /> -->
|
||||
<Import Project="$(NuGetPackageRoot)\ExcelDna.AddIn\0.34.6\tools\ExcelDna.AddIn.targets"/>
|
||||
<Target Name="EnsureExcelDnaTargetsImported" BeforeTargets="BeforeBuild" Condition="'$(ExcelDnaTargetsImported)' == ''">
|
||||
<Error Condition="!Exists('$(NuGetPackageRoot)\ExcelDna.AddIn\0.34.6\tools\ExcelDna.AddIn.targets') And ('$(RunExcelDnaBuild)' != '' And $(RunExcelDnaBuild))" Text="You are trying to build with ExcelDna, but the NuGet targets file that ExcelDna depends on is not available on this computer. This is probably because the ExcelDna package has not been committed to source control, or NuGet Package Restore is not enabled. Please enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
|
||||
<Error Condition="Exists('$(NuGetPackageRoot)\ExcelDna.AddIn\0.34.6\tools\ExcelDna.AddIn.targets') And ('$(RunExcelDnaBuild)' != '' And $(RunExcelDnaBuild))" Text="ExcelDna cannot be run because NuGet packages were restored prior to the build running, and the targets file was unavailable when the build started. Please build the project again to include these packages in the build. You may also need to make sure that your build server does not delete packages prior to each build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
|
||||
</Target>
|
||||
<None Include="spark_excel_example_2019.xlsm">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
+107
-107
@@ -1,107 +1,107 @@
|
||||
# BTS Spark
|
||||
|
||||
|
||||
Our offering consists of a client UI [Spark Client](https://www.bluetradingsystems.com/images/Images/spark/02.06.19/Ladder.png), a high performance professional futures front end, connected via our proprietary protocol over TCP to our Spark Server, which in turn connects to execution venues via their native protocols (typically FIX/TCP for execution and some proprietary protocol over UDP multicast for market data).
|
||||
|
||||

|
||||
|
||||
|
||||
# BTS Spark Client SDK
|
||||
|
||||
We currently offer two API extension points. This repository, our BTS **Spark Client SDK** allows users to control our Spark Server externally, that is, out of process, using the exact same protocol our own Spark Client does. In other words, a client application developed via the Spark Client SDK, say a VB .NET UI, would be able to provide any functionality our own UI provides.
|
||||
|
||||
We currently offer bindings for the Spark protocol to C++, C# and Excel clients. Since the underlying transport is TCP, clients developed via the Spark Client SDK can be located anywhere in the world, as long as they can reach the Spark Server via TCP. We do require a VPN or a secure network, since the Spark Protocol is currently not yet encrypted.
|
||||
|
||||
Our second API extension point is intended for users that require adding functionality to our Spark Server. If you are interested in extending the server process through custom order types, market data sources, or execution gateways, please see the [Spark Server SDK](https://github.com/BlueTradingSystems/spark_sdk).
|
||||
|
||||
|
||||
### In Depth
|
||||
|
||||
* [Interface Overview](doc/Overview.md)
|
||||
* [Threading Notes](doc/Threading.md)
|
||||
|
||||
|
||||
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Git
|
||||
|
||||
* First clone the spark_client_sdk repo
|
||||
|
||||
```
|
||||
> git clone https://github.com/BlueTradingSystems/spark_client_sdk.git
|
||||
```
|
||||
|
||||
|
||||
### Build
|
||||
* Use msbuild to target windows / .net 4.71
|
||||
* Install studio here if you don't have it: https://visualstudio.microsoft.com/downloads/
|
||||
* Use VSCode for editing, it's better: https://code.visualstudio.com/
|
||||
```
|
||||
> cd spark_client_sdk\src\spark_sdk
|
||||
spark_client_sdk\src\spark_sdk> msbuild /t:restore
|
||||
spark_client_sdk\src\spark_sdk> msbuild
|
||||
|
||||
```
|
||||
|
||||
* spark_sdk binaries will be produced in the bin\Debug directory
|
||||
|
||||
### Connecting to Spark Server
|
||||
|
||||
* Start your exe using the -ConfigServer parameter to point at a running Spark Server
|
||||
```
|
||||
> spark_sdk.exe -ConfigServer http://location:8000/config
|
||||
```
|
||||
Or create a file called spark.conf at %APPDATA%\bts\conf\ that contains:
|
||||
```
|
||||
include: "http://location:8000/config/"
|
||||
```
|
||||
|
||||
### Examples
|
||||
* Make sure you can connect to a running server
|
||||
* run spark_sdk.exe with no parameters to see help
|
||||
```
|
||||
spark_sdk\bin\Debug\net471> spark_sdk.exe -ConfigServer http://location:8000/config
|
||||
|
||||
BTS Spark SDK
|
||||
Usages: spark_sdk [command] [arguments]
|
||||
|
||||
Commands:
|
||||
md <exchange> <security_type> <symbol> [<security_desc>]
|
||||
order <account> <exchange> <security_type> <symbol> <security_desc> <signed_quantity> [<price>]
|
||||
Arguments:
|
||||
--user=<bts user name>
|
||||
--pass=<password>
|
||||
--pump=<pump_interval_in_ms=100 default>
|
||||
|
||||
```
|
||||
* To print simulated market data to the screen:
|
||||
|
||||
```spark_sdk.exe md SIM FUTURE ES SIM:ESU9 --user=bts --pass= -ConfigServer http://location:8000/config```
|
||||
|
||||
* To send a 1 lot sell order for ES in account ACC A:
|
||||
|
||||
```spark_sdk.exe order "ACC A" SIM FUTURE ES SIM:ESU9 -1 4000.5 --user=bts --pass= -ConfigServer http://location:8000/config ```
|
||||
|
||||
You should see an order status stream print to the screen after running this command
|
||||
|
||||
|
||||
* Check out sample code
|
||||
* [Market Data](src/spark_sdk/samples/MarketDataSample.cs)
|
||||
* [Orders](src/spark_sdk/samples/OrderSample.cs)
|
||||
* [Driver](src/spark_sdk/samples/SDKMain.cs)
|
||||
|
||||
```
|
||||
### Excel
|
||||
* Most BTS Client API calls can be made through Excel 2016, load the example spreadsheet to see how
|
||||
```
|
||||
spark_sdk\bin\Debug\net471> start spark_excel-addin64-packed.xll
|
||||
```
|
||||
* This will start excel and load the bts addin
|
||||
* From excel, open ```spark_sdk\bin\Debug\net471\spark_excel_example_2019.xlsm``` to get started
|
||||
* Check the [```excel```](excel/) directory for other example spreadsheets
|
||||
|
||||
|
||||
|
||||
* Send us an email for help: api_support@bluetradesys.com
|
||||
# BTS Spark
|
||||
|
||||
|
||||
Our offering consists of a client UI [Spark Client](https://www.bluetradingsystems.com/images/Images/spark/02.06.19/Ladder.png), a high performance professional futures front end, connected via our proprietary protocol over TCP to our Spark Server, which in turn connects to execution venues via their native protocols (typically FIX/TCP for execution and some proprietary protocol over UDP multicast for market data).
|
||||
|
||||

|
||||
|
||||
|
||||
# BTS Spark Client SDK
|
||||
|
||||
We currently offer two API extension points. This repository, our BTS **Spark Client SDK** allows users to control our Spark Server externally, that is, out of process, using the exact same protocol our own Spark Client does. In other words, a client application developed via the Spark Client SDK, say a VB .NET UI, would be able to provide any functionality our own UI provides.
|
||||
|
||||
We currently offer bindings for the Spark protocol to C++, C# and Excel clients. Since the underlying transport is TCP, clients developed via the Spark Client SDK can be located anywhere in the world, as long as they can reach the Spark Server via TCP. We do require a VPN or a secure network, since the Spark Protocol is currently not yet encrypted.
|
||||
|
||||
Our second API extension point is intended for users that require adding functionality to our Spark Server. If you are interested in extending the server process through custom order types, market data sources, or execution gateways, please see the [Spark Server SDK](https://github.com/BlueTradingSystems/spark_sdk).
|
||||
|
||||
|
||||
### In Depth
|
||||
|
||||
* [Interface Overview](doc/Overview.md)
|
||||
* [Threading Notes](doc/Threading.md)
|
||||
|
||||
|
||||
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Git
|
||||
|
||||
* First clone the spark_client_sdk repo
|
||||
|
||||
```
|
||||
> git clone https://github.com/BlueTradingSystems/spark_client_sdk.git
|
||||
```
|
||||
|
||||
|
||||
### Build
|
||||
* Use msbuild to target windows / .net 4.71
|
||||
* Install studio here if you don't have it: https://visualstudio.microsoft.com/downloads/
|
||||
* Use VSCode for editing, it's better: https://code.visualstudio.com/
|
||||
```
|
||||
> cd spark_client_sdk\src\spark_sdk
|
||||
spark_client_sdk\src\spark_sdk> msbuild /t:restore
|
||||
spark_client_sdk\src\spark_sdk> msbuild
|
||||
|
||||
```
|
||||
|
||||
* spark_sdk binaries will be produced in the bin\Debug directory
|
||||
|
||||
### Connecting to Spark Server
|
||||
|
||||
* Start your exe using the -ConfigServer parameter to point at a running Spark Server
|
||||
```
|
||||
> spark_sdk.exe -ConfigServer http://location:8000/config
|
||||
```
|
||||
Or create a file called spark.conf at %APPDATA%\bts\conf\ that contains:
|
||||
```
|
||||
include: "http://location:8000/config/"
|
||||
```
|
||||
|
||||
### Examples
|
||||
* Make sure you can connect to a running server
|
||||
* run spark_sdk.exe with no parameters to see help
|
||||
```
|
||||
spark_sdk\bin\Debug\net48> spark_sdk.exe -ConfigServer http://location:8000/config
|
||||
|
||||
BTS Spark SDK
|
||||
Usages: spark_sdk [command] [arguments]
|
||||
|
||||
Commands:
|
||||
md <exchange> <security_type> <symbol> [<security_desc>]
|
||||
order <account> <exchange> <security_type> <symbol> <security_desc> <signed_quantity> [<price>]
|
||||
Arguments:
|
||||
--user=<bts user name>
|
||||
--pass=<password>
|
||||
--pump=<pump_interval_in_ms=100 default>
|
||||
|
||||
```
|
||||
* To print simulated market data to the screen:
|
||||
|
||||
```spark_sdk.exe md SIM FUTURE ES SIM:ESU9 --user=bts --pass= -ConfigServer http://location:8000/config```
|
||||
|
||||
* To send a 1 lot sell order for ES in account ACC A:
|
||||
|
||||
```spark_sdk.exe order "ACC A" SIM FUTURE ES SIM:ESU9 -1 4000.5 --user=bts --pass= -ConfigServer http://location:8000/config ```
|
||||
|
||||
You should see an order status stream print to the screen after running this command
|
||||
|
||||
|
||||
* Check out sample code
|
||||
* [Market Data](src/spark_sdk/samples/MarketDataSample.cs)
|
||||
* [Orders](src/spark_sdk/samples/OrderSample.cs)
|
||||
* [Driver](src/spark_sdk/samples/SDKMain.cs)
|
||||
|
||||
```
|
||||
### Excel
|
||||
* Most BTS Client API calls can be made through Excel 2016, load the example spreadsheet to see how
|
||||
```
|
||||
spark_sdk\bin\Debug\net48> start spark_excel-addin64-packed.xll
|
||||
```
|
||||
* This will start excel and load the bts addin
|
||||
* From excel, open ```spark_sdk\bin\Debug\net48\spark_excel_example_2019.xlsm``` to get started
|
||||
* Check the [```excel```](excel/) directory for other example spreadsheets
|
||||
|
||||
|
||||
|
||||
* Send us an email for help: api_support@bluetradesys.com
|
||||
@@ -1,43 +1,43 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
using bts.api;
|
||||
using bts.md;
|
||||
|
||||
namespace bts.sdk.ui
|
||||
{
|
||||
public class UISample : IDisposable
|
||||
{
|
||||
readonly MarketDataClient _md;
|
||||
public UISample(MarketDataClient client)
|
||||
{
|
||||
_md = client;
|
||||
}
|
||||
|
||||
public void simple_price_ui(string exch, string sectype, string symbol, string security_desc, string refresh)
|
||||
{
|
||||
#if NET471
|
||||
System.Windows.Forms.Application.EnableVisualStyles();
|
||||
System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
Venue ven = MarketDataSample.parse_venue(exch);
|
||||
SecurityType st = MarketDataSample.parse_security_type(sectype);
|
||||
Product prod = new Product() { Exchange = ven, Type = st, Symbol = symbol };
|
||||
|
||||
System.Windows.Forms.Application.Run( new SparkSDKUI(_md, prod, security_desc, int.Parse(refresh) ));
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
#if NET471
|
||||
System.Windows.Forms.Application.Exit();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
using bts.api;
|
||||
using bts.md;
|
||||
|
||||
namespace bts.sdk.ui
|
||||
{
|
||||
public class UISample : IDisposable
|
||||
{
|
||||
readonly MarketDataClient _md;
|
||||
public UISample(MarketDataClient client)
|
||||
{
|
||||
_md = client;
|
||||
}
|
||||
|
||||
public void simple_price_ui(string exch, string sectype, string symbol, string security_desc, string refresh)
|
||||
{
|
||||
#if NET48
|
||||
System.Windows.Forms.Application.EnableVisualStyles();
|
||||
System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
Venue ven = MarketDataSample.parse_venue(exch);
|
||||
SecurityType st = MarketDataSample.parse_security_type(sectype);
|
||||
Product prod = new Product() { Exchange = ven, Type = st, Symbol = symbol };
|
||||
|
||||
System.Windows.Forms.Application.Run( new SparkSDKUI(_md, prod, security_desc, int.Parse(refresh) ));
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
#if NET48
|
||||
System.Windows.Forms.Application.Exit();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,107 +1,77 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net471</TargetFrameworks>
|
||||
<RuntimeIdentifiers>win7-x64</RuntimeIdentifiers>
|
||||
|
||||
<TargetFrameworks Condition = " '$(OS)' != 'Windows_NT' ">netcoreapp3.0</TargetFrameworks>
|
||||
<RuntimeIdentifier Condition = " '$(OS)' != 'Windows_NT' ">linux-x64</RuntimeIdentifier>
|
||||
<PublishTrimmed>true</PublishTrimmed>
|
||||
<PublishSingleFile>true</PublishSingleFile>
|
||||
|
||||
<OutputType>Exe</OutputType>
|
||||
<GeneratePackageOnBuild Condition="$(Configuration) == 'Release' or $(Configuration) == 'Release'">true</GeneratePackageOnBuild>
|
||||
<PackageOutputPath>$(OutputPath)\net471</PackageOutputPath>
|
||||
<IncludeSource>true</IncludeSource>
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>
|
||||
|
||||
<Authors>Blue Trading Systems</Authors>
|
||||
<Company>Blue Trading Systems</Company>
|
||||
<Product>Spark</Product>
|
||||
<Description />
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<Platforms>x64</Platforms>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<WarningsAsErrors />
|
||||
<Version>1.0.0</Version>
|
||||
<LangVersion>7.2</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Google.Protobuf" Version="3.6.1" />
|
||||
<PackageReference Include="System.Reactive" Version="3.1.1" />
|
||||
<PackageReference Include="System.Reactive.PlatformServices" Version="3.1.1" />
|
||||
<PackageReference Include="NUnit" Version="3.10.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition=" '$(TargetFramework)' == 'net471' ">
|
||||
<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.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- <PropertyGroup Condition="'$(TargetFramework)' == 'netcoreapp2.1'">
|
||||
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
||||
</PropertyGroup>
|
||||
-->
|
||||
<!-- $(SparkRoot) is something we define on our build at BTS, if it's empty, this project file is in the wild-->
|
||||
<ItemGroup Condition= " '$(SparkRoot)' != '' ">
|
||||
<ProjectReference Include="../spark_api/spark_api.csproj"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition= " '$(SparkRoot)' != '' and '$(TargetFramework)' == 'net471' ">
|
||||
<!-- This is so we can ship excel in the nupkg -->
|
||||
<ProjectReference Include="../spark_excel/spark_excel.csproj"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition= " '$(SparkRoot)' != '' ">
|
||||
<None Include="README.md" pack="true" PackagePath="." />
|
||||
<None Include="$(OutputPath)\net471\spark_excel_example_2019.xlsm" pack="true" PackagePath=".\excel\spark_excel_example_2019.xlsm" />
|
||||
<None Include="$(OutputPath)\net471\spark_excel-addin64-packed.xll" pack="true" PackagePath=".\excel\spark_excel-addin64-packed.xll" />
|
||||
<None Include="$(OutputPath)\net471\spark_excel-addin64.dna" pack="true" PackagePath=".\excel\spark_excel-addin64.dna" />
|
||||
<None Include="doc/**" pack="true" PackagePath=".\doc\" />
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="CopyProjectReferencesToPackage" DependsOnTargets="ResolveReferences" Condition= " '$(SparkRoot)' != '' ">
|
||||
<ItemGroup>
|
||||
<BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))" />
|
||||
<BuildOutputInPackage Include="$(OutputPath)..\net471\libspark.dll"/>
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<!-- deployed sdk build net471 -->
|
||||
<ItemGroup Condition= " '$(SparkRoot)' == '' and '$(TargetFramework)' == 'net471'">
|
||||
<Reference Include="spark_api">
|
||||
<HintPath>..\..\lib\net471\spark_api.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
<!-- deployed sdk build netcoreapp2.1 -->
|
||||
<ItemGroup Condition= " '$(SparkRoot)' == '' and '$(TargetFramework)' == 'netcoreapp2.1'">
|
||||
<Reference Include="spark_api">
|
||||
<HintPath>..\..\lib\netcoreapp2.1\spark_api.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
<Target Name="copy_lib_deployed" AfterTargets="PostBuildEvent" Condition= " '$(SparkRoot)' == '' " >
|
||||
<Copy SourceFiles="..\..\lib\net471\libspark.dll" DestinationFolder="$(OutputPath)\" SkipUnchangedFiles="true" />
|
||||
</Target>
|
||||
|
||||
<Target Name="copy_lib_deployed471" AfterTargets="PostBuildEvent" Condition= " '$(SparkRoot)' == '' and '$(TargetFramework)' == 'net471'" >
|
||||
<Copy SourceFiles="..\..\lib\net471\spark_excel.dll" DestinationFolder="$(OutputPath)\" SkipUnchangedFiles="true" />
|
||||
<Copy SourceFiles="..\..\excel\spark_excel_example_2019.xlsm" DestinationFolder="$(OutputPath)\" SkipUnchangedFiles="true" />
|
||||
<Copy SourceFiles="..\..\excel\spark_excel-addin64-packed.xll" DestinationFolder="$(OutputPath)\" SkipUnchangedFiles="true" />
|
||||
<Copy SourceFiles="..\..\excel\spark_excel-addin64.dna" DestinationFolder="$(OutputPath)\" SkipUnchangedFiles="true" />
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<Platforms>x64</Platforms>
|
||||
<Platform>x64</Platform>
|
||||
<RuntimeIdentifier>win7-x64</RuntimeIdentifier>
|
||||
<RuntimeIdentifier Condition = " '$(OS)' != 'Windows_NT' ">linux-x64</RuntimeIdentifier>
|
||||
<PublishTrimmed>true</PublishTrimmed>
|
||||
<PublishSingleFile>true</PublishSingleFile>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GeneratePackageOnBuild Condition="$(Configuration) == 'Release'">true</GeneratePackageOnBuild>
|
||||
<PackageOutputPath>$(OutputPath)\$(TargetFramework)</PackageOutputPath>
|
||||
<IncludeSource>true</IncludeSource>
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>
|
||||
|
||||
<Authors>Blue Trading Systems</Authors>
|
||||
<Company>Blue Trading Systems</Company>
|
||||
<Product>Spark</Product>
|
||||
<Description />
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<WarningsAsErrors />
|
||||
<Version>1.0.0</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Google.Protobuf" Version="3.11.2" />
|
||||
<PackageReference Include="System.Reactive" Version="4.3.1" />
|
||||
<PackageReference Include="System.Reactive.PlatformServices" Version="4.3.1" />
|
||||
<PackageReference Include="NUnit" Version="3.12.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- $(SparkRoot) is something we define on our build at BTS, if it's empty, this project file is in the wild-->
|
||||
<ItemGroup Condition= " '$(SparkRoot)' != '' ">
|
||||
<ProjectReference Include="../spark_api/spark_api.csproj"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition= " '$(SparkRoot)' != '' and '$(TargetFramework)' == 'net48' ">
|
||||
<!-- This is so we can ship excel in the nupkg -->
|
||||
<ProjectReference Include="../spark_excel/spark_excel.csproj"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition= " '$(SparkRoot)' != '' ">
|
||||
<None Include="README.md" pack="true" PackagePath="." />
|
||||
<None Include="$(OutputPath)\$(TargetFramework)\spark_excel_example_2019.xlsm" pack="true" PackagePath=".\excel\spark_excel_example_2019.xlsm" />
|
||||
<None Include="$(OutputPath)\$(TargetFramework)\spark_excel-addin64-packed.xll" pack="true" PackagePath=".\excel\spark_excel-addin64-packed.xll" />
|
||||
<None Include="$(OutputPath)\$(TargetFramework)\spark_excel-addin64.dna" pack="true" PackagePath=".\excel\spark_excel-addin64.dna" />
|
||||
<None Include="doc/**" pack="true" PackagePath=".\doc\" />
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="CopyProjectReferencesToPackage" DependsOnTargets="ResolveReferences" Condition= " '$(SparkRoot)' != '' ">
|
||||
<ItemGroup>
|
||||
<BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))" />
|
||||
<BuildOutputInPackage Include="$(OutputPath)..\net48\libspark.dll"/>
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<!-- deployed sdk build -->
|
||||
<ItemGroup Condition= " '$(SparkRoot)' == '' ">
|
||||
<Reference Include="spark_api">
|
||||
<HintPath>..\..\lib\$(TargetFramework)\spark_api.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="copy_lib_deployed" AfterTargets="PostBuildEvent" Condition= " '$(SparkRoot)' == '' " >
|
||||
<Copy SourceFiles="..\..\lib\$(TargetFramework)\libspark.dll" DestinationFolder="$(OutputPath)\" SkipUnchangedFiles="true" />
|
||||
</Target>
|
||||
|
||||
<Target Name="copy_lib_deployed48" AfterTargets="PostBuildEvent" Condition= " '$(SparkRoot)' == '' and '$(TargetFramework)' == 'net48'" >
|
||||
<Copy SourceFiles="..\..\lib\$(TargetFramework)\spark_excel.dll" DestinationFolder="$(OutputPath)\" SkipUnchangedFiles="true" />
|
||||
<Copy SourceFiles="..\..\excel\spark_excel_example_2019.xlsm" DestinationFolder="$(OutputPath)\" SkipUnchangedFiles="true" />
|
||||
<Copy SourceFiles="..\..\excel\spark_excel-addin64-packed.xll" DestinationFolder="$(OutputPath)\" SkipUnchangedFiles="true" />
|
||||
<Copy SourceFiles="..\..\excel\spark_excel-addin64.dna" DestinationFolder="$(OutputPath)\" SkipUnchangedFiles="true" />
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
+44
-44
@@ -1,45 +1,45 @@
|
||||
#if NET471
|
||||
|
||||
namespace bts.sdk.ui
|
||||
{
|
||||
partial class SparkSDKUI
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if(disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Text = "SparkSDKUI";
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#if NET48
|
||||
|
||||
namespace bts.sdk.ui
|
||||
{
|
||||
partial class SparkSDKUI
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if(disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Text = "SparkSDKUI";
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,34 +1,34 @@
|
||||
#if NET471
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using bts.api;
|
||||
using bts.md;
|
||||
|
||||
namespace bts.sdk.ui
|
||||
{
|
||||
public partial class SparkSDKUI : Form
|
||||
{
|
||||
private DataGridView _dg = new DataGridView();
|
||||
public SparkSDKUI(MarketDataClient client, Product prod, string security_desc, int interval)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
_dg.Dock = DockStyle.Fill;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#if NET48
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using bts.api;
|
||||
using bts.md;
|
||||
|
||||
namespace bts.sdk.ui
|
||||
{
|
||||
public partial class SparkSDKUI : Form
|
||||
{
|
||||
private DataGridView _dg = new DataGridView();
|
||||
public SparkSDKUI(MarketDataClient client, Product prod, string security_desc, int interval)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
_dg.Dock = DockStyle.Fill;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,9 +1,10 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>netstandard2.0</TargetFrameworks>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
<Platforms>x64</Platforms>
|
||||
<Platform>x64</Platform>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<Configurations>Debug;Release</Configurations>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -1,35 +1,33 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
<TargetFramework Condition=" '$(OS)' != 'Windows_NT' ">netcoreapp3.0</TargetFramework>
|
||||
<Platforms>x64</Platforms>
|
||||
<Platform>x64</Platform>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net471</TargetFramework>
|
||||
|
||||
<TargetFramework Condition = " '$(OS)' != 'Windows_NT' ">netcoreapp3.0</TargetFramework>
|
||||
<RuntimeIdentifier Condition = " '$(OS)' != 'Windows_NT' ">linux-x64</RuntimeIdentifier>
|
||||
<RuntimeIdentifier>win7-x64</RuntimeIdentifier>
|
||||
<RuntimeIdentifier Condition=" '$(OS)' != 'Windows_NT' ">linux-x64</RuntimeIdentifier>
|
||||
<PublishTrimmed>true</PublishTrimmed>
|
||||
<PublishSingleFile>true</PublishSingleFile>
|
||||
|
||||
<Authors>Blue Trading Systems</Authors>
|
||||
<Company>Blue Trading Systems</Company>
|
||||
<Product>Spark</Product>
|
||||
<Platform>x64</Platform>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<Version>1.0.0</Version>
|
||||
<LangVersion>7.2</LangVersion>
|
||||
<Configurations>Debug;Release</Configurations>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="../spark_api/spark_api.csproj" />
|
||||
<!--<ProjectReference Include="..\spark\Spark.csproj" />-->
|
||||
<ProjectReference Include="..\spark_core\spark_core.csproj" />
|
||||
<ProjectReference Include="..\spark_test\spark_test.csproj" />
|
||||
<!--<Proto3 Include="**/*.proto" />-->
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CommandLineParser" Version="2.6.0" />
|
||||
<PackageReference Include="Microsoft.CSharp" Version="4.5.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
|
||||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -49,6 +49,7 @@ enum class MessageTypes : uint32_t
|
||||
TestRequest = '1',
|
||||
TradingSessionStatus = 'h',
|
||||
TradingSessionStatusRequest = 'g',
|
||||
MDIncrementalUpdate = 'X',
|
||||
ICETraderLogin = ('U' << 16) + ('C' << 8) + 'G',
|
||||
ICETraderLoginResponse = ('U' << 16) + ('C' << 8) + 'I',
|
||||
ICETraderLogout = ('U' << 16) + ('C' << 8) + 'H',
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
#include <fmt/format.h>
|
||||
#include <fstream>
|
||||
#include <thread>
|
||||
#include <regex>
|
||||
#include <thread>
|
||||
|
||||
namespace bts {
|
||||
namespace jetfix {
|
||||
@@ -114,16 +114,17 @@ std::string store_path(std::string base_path,
|
||||
return result.string();
|
||||
}
|
||||
|
||||
bool is_valid_store_line(std::string const&line) {
|
||||
std::regex rx("\\d\\d\\d\\d\\d\\d\\d\\d-"
|
||||
"\\d\\d:\\d\\d:\\d\\d\\."
|
||||
"\\d\\d\\d . 8=FIX\\.4\\.2.*");
|
||||
return std::regex_match(line, rx);
|
||||
static std::regex store_line_rx("\\d\\d\\d\\d\\d\\d\\d\\d-"
|
||||
"\\d\\d:\\d\\d:\\d\\d\\."
|
||||
"\\d\\d\\d . 8=FIX\\.4\\.2.*");
|
||||
|
||||
bool is_valid_store_line(std::string const &line) {
|
||||
return std::regex_match(line, store_line_rx);
|
||||
}
|
||||
|
||||
std::map<uint32_t, InMsgBuffer>
|
||||
load_replay(config::JetFIX::Connection const &cfg, std::string const &path,
|
||||
uint32_t ) {
|
||||
uint32_t) {
|
||||
std::map<uint32_t, InMsgBuffer> result;
|
||||
if (boost::filesystem::exists(path)) {
|
||||
|
||||
@@ -137,7 +138,7 @@ load_replay(config::JetFIX::Connection const &cfg, std::string const &path,
|
||||
if (!f.eof()) {
|
||||
if (!is_valid_store_line(line_buffer))
|
||||
continue;
|
||||
|
||||
|
||||
if (line_buffer[22] == '<') {
|
||||
auto ts =
|
||||
datetime::parse_FIX_timestamp(line_buffer.substr(0, 21));
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
#include "Co2TestInstrument.h"
|
||||
#include "lib/md/MemorySegmentUtils.h"
|
||||
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 4316)
|
||||
namespace bts {
|
||||
namespace md {
|
||||
|
||||
@@ -50,3 +52,4 @@ MDConsumerHandle Co2TestInstrument::consumer() {
|
||||
Co2TestInstrument::~Co2TestInstrument() { }
|
||||
|
||||
}}//namespace
|
||||
#pragma warning(pop)
|
||||
@@ -6,7 +6,7 @@ namespace bts {
|
||||
namespace orderman {
|
||||
|
||||
class ChildTemplate;
|
||||
class LegData;
|
||||
struct LegData;
|
||||
|
||||
class PyramidAlgo : public IAlgoOrder {
|
||||
public:
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace bts {
|
||||
namespace orderman {
|
||||
|
||||
class ChildTemplate;
|
||||
class LegData;
|
||||
struct LegData;
|
||||
|
||||
class TASAlgo : public IAlgoOrder {
|
||||
public:
|
||||
|
||||
+2
-1
@@ -17,7 +17,8 @@ RUN groupadd --gid 1000 $USERNAME && \
|
||||
useradd -s /bin/bash --uid 1000 --gid 1000 -m $USERNAME && \
|
||||
mkdir -p /sparkbin/plugins && \
|
||||
mkdir /sparkdata && \
|
||||
ln -s /sparkbin/ sdk/lib && \
|
||||
mkdir /sdk && \
|
||||
ln -s /sparkbin/ /sdk/lib && \
|
||||
echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME && \
|
||||
chmod 0440 /etc/sudoers.d/$USERNAME && \
|
||||
chown -R bts.bts /sparkbin/plugins && \
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "Spark sdk container",
|
||||
"image": "spark_sdk",
|
||||
"runArgs": [
|
||||
"--shm-size", "1024m",
|
||||
"--shm-size", "2048m",
|
||||
"--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined",
|
||||
"-u", "bts"
|
||||
],
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "Spark sdk container",
|
||||
"image": "spark_sdk",
|
||||
"runArgs": [
|
||||
"--shm-size", "1024m",
|
||||
"--shm-size", "2048m",
|
||||
"--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined",
|
||||
"-u", "bts"
|
||||
],
|
||||
|
||||
@@ -0,0 +1,416 @@
|
||||
#include "ParseHistoricalFIX.h"
|
||||
#include "lib/jetfix/codec/FIXMsg.h"
|
||||
#include "lib/jetfix/codec/FIXParser.h"
|
||||
#include "lib/jetfix/codec/Fields.h"
|
||||
#include "lib/jetfix/codec/Group.h"
|
||||
#include "lib/jetfix/codec/MessageTypes.h"
|
||||
#include "lib/utils/bts_chrono.h"
|
||||
|
||||
#include <fstream>
|
||||
#include <unordered_map>
|
||||
|
||||
namespace bts {
|
||||
namespace cmd {
|
||||
|
||||
using namespace jetfix;
|
||||
|
||||
typedef StringField<75> TradeDate;
|
||||
typedef IntField<34> SeqNum;
|
||||
typedef StringField<52> SendingTime;
|
||||
typedef StringField<60> TransactTime;
|
||||
typedef StringField<5799> MatchEventIndicator;
|
||||
|
||||
typedef IntField<268> NoMDEntries;
|
||||
typedef StringField<279> MDUpateAction;
|
||||
typedef StringField<269> MDEntryType;
|
||||
typedef StringField<48> SecurityID;
|
||||
typedef StringField<55> Symbol;
|
||||
typedef StringField<83> ReptSeq;
|
||||
typedef FloatField<270> MDEntryPx;
|
||||
typedef IntField<271> MDEntrySize;
|
||||
typedef IntField<346> NumberOfOrders;
|
||||
typedef IntField<1023> MDPriceLevel;
|
||||
typedef StringField<286> OpenCloseSettlFlag;
|
||||
typedef StringField<731> SettlPriceType;
|
||||
typedef StringField<5797> AggressorSide;
|
||||
typedef StringField<37711> MDTradeEntryID;
|
||||
typedef StringField<5796> TradingReferenceDate;
|
||||
typedef StringField<1149> HighLimitPrice;
|
||||
typedef StringField<1148> LowLimitPrice;
|
||||
typedef StringField<1143> MaxPriceVariation;
|
||||
typedef StringField<1180> ApplID;
|
||||
typedef IntField<9633> ReferenceID;
|
||||
typedef IntField<32> LastQty;
|
||||
|
||||
typedef IntField<37705> NoOrderIDEntries;
|
||||
typedef StringField<37> OrderID;
|
||||
typedef IntField<37707> MDOrderPriority;
|
||||
typedef IntField<37706> MDDisplayQty;
|
||||
typedef StringField<37708> OrderUpdateAction;
|
||||
|
||||
typedef Group<NoOrderIDEntries, OrderID, MDDisplayQty, MDOrderPriority,
|
||||
OrderUpdateAction, ReferenceID, LastQty>
|
||||
OrderIDEntries;
|
||||
|
||||
typedef Group<NoMDEntries, MDUpateAction, MDEntryType, SecurityID, Symbol,
|
||||
ReptSeq, MDEntryPx, MDEntrySize, NumberOfOrders, MDPriceLevel,
|
||||
OpenCloseSettlFlag, SettlPriceType, AggressorSide, MDTradeEntryID,
|
||||
TradingReferenceDate, HighLimitPrice, LowLimitPrice,
|
||||
MaxPriceVariation, ApplID, ReferenceID, LastQty, OrderID,
|
||||
MDOrderPriority, MDDisplayQty>
|
||||
MDEntries;
|
||||
|
||||
typedef FIXMsg<MessageTypes::MDIncrementalUpdate, TradeDate, SeqNum,
|
||||
SendingTime, TransactTime, MatchEventIndicator, MDEntries,
|
||||
OrderIDEntries>
|
||||
MDIncrementalUpdate;
|
||||
|
||||
std::string to_str(std::string const &s) { return s; }
|
||||
|
||||
template <class V> std::string to_str(V const &v) { return std::to_string(v); }
|
||||
|
||||
template <class F, class G> std::string get_if_valid(G const &update) {
|
||||
if (update.template has<F>())
|
||||
return to_str(update.template get<F>());
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
void print_msg_headers(std::ostream &out) {
|
||||
out << "MsgID,"
|
||||
<< "TradeDate,"
|
||||
<< "SeqNum,"
|
||||
<< "SendingTime,"
|
||||
<< "TransactTime,"
|
||||
<< "MatchEventIndicator,"
|
||||
<< "NoMDEntries,"
|
||||
<< "NoOrderIDEntries\n";
|
||||
}
|
||||
|
||||
void print_msgs(size_t msg_idx, MDIncrementalUpdate const &line,
|
||||
std::ostream &out) {
|
||||
line.get<SeqNum>();
|
||||
out << msg_idx << "," << get_if_valid<TradeDate>(line) << ","
|
||||
<< get_if_valid<SeqNum>(line) << "," << get_if_valid<SendingTime>(line)
|
||||
<< "," << get_if_valid<TransactTime>(line) << ","
|
||||
<< get_if_valid<MatchEventIndicator>(line) << ","
|
||||
<< (line.has<MDEntries>() ? line.get<MDEntries>().size() : 0) << ","
|
||||
<< (line.has<OrderIDEntries>() ? line.get<OrderIDEntries>().size() : 0)
|
||||
<< "\n";
|
||||
}
|
||||
|
||||
struct PriceSize {
|
||||
double price = 0;
|
||||
int32_t size = 0;
|
||||
};
|
||||
|
||||
struct Book {
|
||||
Book() {
|
||||
book[0].resize(10);
|
||||
book[1].resize(10);
|
||||
}
|
||||
std::string symbol;
|
||||
std::string transact_time;
|
||||
std::string send_time;
|
||||
uint32_t seqnum;
|
||||
std::array<std::vector<PriceSize>, 2> book;
|
||||
};
|
||||
|
||||
size_t n_printed_books = 2;
|
||||
|
||||
void print_book_side(std::vector<PriceSize> const &side,
|
||||
std::ostream &book_stream) {
|
||||
for (size_t i = 0; i < n_printed_books; i++)
|
||||
if (i < side.size())
|
||||
book_stream << "," << side[i].price << "," << side[i].size;
|
||||
else
|
||||
book_stream << "," << 0 << "," << 0;
|
||||
}
|
||||
|
||||
void print_book_header(std::ostream &book_stream) {
|
||||
book_stream << "Symbol,SendingTime,TransactTime, SeqnNum";
|
||||
for (size_t i = 0; i < n_printed_books; i++)
|
||||
book_stream << ",bid_p_" << i << ",bid_sz_" << i;
|
||||
for (size_t i = 0; i < n_printed_books; i++)
|
||||
book_stream << ",ask_p_" << i << ",ask_sz_" << i;
|
||||
book_stream << ",\n";
|
||||
}
|
||||
|
||||
void print_book(Book &b, std::ostream &book_stream) {
|
||||
book_stream << b.symbol << "," << b.send_time << "," << b.transact_time
|
||||
<< "," << b.seqnum;
|
||||
print_book_side(b.book[0], book_stream);
|
||||
print_book_side(b.book[1], book_stream);
|
||||
book_stream << "\n";
|
||||
}
|
||||
|
||||
void update_and_maybe_print_book(MDIncrementalUpdate const &update,
|
||||
std::unordered_map<std::string, Book> &books,
|
||||
std::ostream &book_stream) {
|
||||
std::set<Book *> to_update;
|
||||
if (update.has<MDEntries>()) {
|
||||
auto &md_entries = update.get<MDEntries>();
|
||||
for (size_t i = 0; i < md_entries.size(); i++) {
|
||||
auto &entry = md_entries[i];
|
||||
if (entry.has<MDPriceLevel>()) {
|
||||
if (entry.get<MDEntryType>() == "0" ||
|
||||
entry.get<MDEntryType>() == "1") {
|
||||
auto side = entry.get<MDEntryType>()[0] - '0';
|
||||
auto &sym = entry.get<Symbol>();
|
||||
auto &book = books[sym];
|
||||
to_update.insert(&book);
|
||||
auto &book_side = book.book[side];
|
||||
book.symbol = sym;
|
||||
book.transact_time = update.get<TransactTime>();
|
||||
book.send_time = update.get<SendingTime>();
|
||||
book.transact_time = update.get<TransactTime>();
|
||||
book.seqnum = update.get<SeqNum>();
|
||||
auto level = entry.get<MDPriceLevel>() - 1;
|
||||
|
||||
if (entry.get<MDUpateAction>() == "0") // new
|
||||
book_side.insert(
|
||||
book_side.begin() + level,
|
||||
{entry.get<MDEntryPx>(), entry.get<MDEntrySize>()});
|
||||
else if (entry.get<MDUpateAction>() == "1")
|
||||
book_side[level] = {entry.get<MDEntryPx>(),
|
||||
entry.get<MDEntrySize>()};
|
||||
else
|
||||
book_side.erase(book_side.begin() + level);
|
||||
}
|
||||
}
|
||||
}
|
||||
auto indicator = update.get<MatchEventIndicator>();
|
||||
if (indicator[5] == '1')
|
||||
for (auto b : to_update)
|
||||
print_book(*b, book_stream);
|
||||
}
|
||||
}
|
||||
void print_trades_header(std::ostream &trade_stream) {
|
||||
trade_stream << "Symbol,SendingTime,TransactTime,MDEntryPx,MDEntrySize,"
|
||||
"NumberOfOrders,AggressorSide,MDTradeEntryID,AgressorOID,"
|
||||
"RestingOID,PartialQty";
|
||||
trade_stream << "\n";
|
||||
}
|
||||
|
||||
struct TradeSummaryItem {
|
||||
std::string symbol;
|
||||
std::string sending_time;
|
||||
std::string transact_time;
|
||||
double md_entry_px;
|
||||
uint32_t md_entry_size;
|
||||
uint32_t n_orders;
|
||||
std::string agressor_side;
|
||||
std::string md_trade_entry_id;
|
||||
};
|
||||
|
||||
struct TradeOrder {
|
||||
std::string order_id;
|
||||
uint32_t last_qty;
|
||||
};
|
||||
|
||||
struct TradeSummaryEvent {
|
||||
std::vector<TradeSummaryItem> md_entries;
|
||||
std::vector<TradeOrder> orderid_entries;
|
||||
};
|
||||
|
||||
void print_trades(TradeSummaryEvent &event, std::ostream &trade_stream) {
|
||||
size_t current_order = 0;
|
||||
for (auto &trade : event.md_entries) {
|
||||
for (auto i = current_order; i < current_order + trade.n_orders; i++) {
|
||||
trade_stream << trade.symbol << "," << trade.sending_time << ","
|
||||
<< trade.transact_time << "," << trade.md_entry_px << ","
|
||||
<< trade.md_entry_size << "," << trade.n_orders << ","
|
||||
<< trade.agressor_side << "," << trade.md_trade_entry_id
|
||||
<< "," << event.orderid_entries[current_order].order_id
|
||||
<< "," << event.orderid_entries[i].order_id << ","
|
||||
<< event.orderid_entries[i].last_qty << "\n";
|
||||
}
|
||||
current_order += trade.n_orders;
|
||||
}
|
||||
}
|
||||
|
||||
void update_and_maybe_print_trades(MDIncrementalUpdate const &update,
|
||||
TradeSummaryEvent &event,
|
||||
std::ostream &trade_stream) {
|
||||
if (update.has<MDEntries>()) {
|
||||
auto &md_entries = update.get<MDEntries>();
|
||||
bool is_trade_summary = false;
|
||||
for (size_t i = 0; i < md_entries.size(); i++) {
|
||||
|
||||
auto &entry = md_entries[i];
|
||||
if (entry.get<MDEntryType>() == "2") {
|
||||
is_trade_summary = true;
|
||||
TradeSummaryItem item;
|
||||
item.symbol = entry.get<Symbol>();
|
||||
item.sending_time = update.get<SendingTime>();
|
||||
item.transact_time = update.get<TransactTime>();
|
||||
item.md_entry_px = entry.get<MDEntryPx>();
|
||||
item.md_entry_size = entry.get<MDEntrySize>();
|
||||
item.n_orders = entry.get<NumberOfOrders>();
|
||||
item.agressor_side = entry.get<AggressorSide>();
|
||||
item.md_trade_entry_id = entry.get<MDTradeEntryID>();
|
||||
event.md_entries.emplace_back(std::move(item));
|
||||
}
|
||||
|
||||
if (is_trade_summary) {
|
||||
if (update.has<OrderIDEntries>()) {
|
||||
auto &oid_entries = update.get<OrderIDEntries>();
|
||||
for (size_t i = 0; i < oid_entries.size(); i++) {
|
||||
auto &oid = oid_entries[i];
|
||||
TradeOrder order_id_entry;
|
||||
order_id_entry.order_id = oid.get<OrderID>();
|
||||
order_id_entry.last_qty = oid.get<LastQty>();
|
||||
event.orderid_entries.emplace_back(std::move(order_id_entry));
|
||||
}
|
||||
}
|
||||
auto indicator = update.get<MatchEventIndicator>();
|
||||
if (indicator[7] == '1') {
|
||||
print_trades(event, trade_stream);
|
||||
event.md_entries.clear();
|
||||
event.orderid_entries.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void print_orders_header(std::ostream &orders_stream) {
|
||||
orders_stream << "Symbol,"
|
||||
<< "SendingTime,"
|
||||
<< "TransactTime,"
|
||||
<< "MDEntryPx,"
|
||||
<< "OrderID,"
|
||||
<< "MDDisplayQty,"
|
||||
<< "MDOrderPriority,"
|
||||
<< "OrderUpdateAction,"
|
||||
<< "Side"
|
||||
<< "\n";
|
||||
}
|
||||
|
||||
struct Order {
|
||||
std::string sending_time;
|
||||
std::string transact_time;
|
||||
std::string side;
|
||||
|
||||
std::string order_id;
|
||||
std::string order_update_action;
|
||||
uint32_t md_order_priority;
|
||||
uint32_t display_qty;
|
||||
|
||||
std::string symbol;
|
||||
double md_entry_px;
|
||||
};
|
||||
|
||||
void print_order(Order const& order, std::ostream &orders_stream) {
|
||||
orders_stream << order.symbol << ","
|
||||
<< order.sending_time << ","
|
||||
<< order.transact_time << ","
|
||||
<< order.md_entry_px << ","
|
||||
<< order.order_id << ","
|
||||
<< order.display_qty << ","
|
||||
<< order.md_order_priority << ","
|
||||
<< order.order_update_action << ","
|
||||
<< order.side << "\n";
|
||||
}
|
||||
|
||||
|
||||
void print_orders(MDIncrementalUpdate const &update,std::ostream &orders_stream) {
|
||||
if (update.has<MDEntries>()) {
|
||||
auto &md_entries = update.get<MDEntries>();
|
||||
auto & first_entry = md_entries[0];
|
||||
|
||||
if (first_entry.get<MDEntryType> () == "0" ||
|
||||
first_entry.get<MDEntryType> () == "1") {
|
||||
|
||||
Order order;
|
||||
order.sending_time = update.get<SendingTime>();
|
||||
order.transact_time = update.get<TransactTime>();
|
||||
order.side = first_entry.get<MDEntryType> ();
|
||||
|
||||
if (first_entry.has<MDPriceLevel>()) {
|
||||
// combined template https://www.cmegroup.com/confluence/display/EPICSANDBOX/Incremental+Refresh+SBE+Template+Book+Processing
|
||||
if (update.has<OrderIDEntries>()) {
|
||||
auto &oid_entries = update.get<OrderIDEntries>();
|
||||
for (size_t i = 0; i < oid_entries.size(); i++) {
|
||||
|
||||
auto &oid = oid_entries[i];
|
||||
order.order_id = oid.get<OrderID>();
|
||||
order.order_update_action = oid.get<OrderUpdateAction>();
|
||||
order.md_order_priority = oid.get<MDOrderPriority>();
|
||||
order.display_qty = oid.get<MDDisplayQty>();
|
||||
|
||||
auto &md_entry = update.get<MDEntries>()[oid.get<ReferenceID>()-1];
|
||||
order.symbol = md_entry.get<Symbol>();
|
||||
order.md_entry_px = md_entry.get<MDEntryPx>();
|
||||
print_order(order, orders_stream);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
// MBO only template
|
||||
for (size_t i = 0; i < md_entries.size(); i++) {
|
||||
auto &entry = md_entries[i];
|
||||
order.order_id = entry.get<OrderID>();
|
||||
order.order_update_action = entry.get<MDUpateAction>();
|
||||
order.md_order_priority = entry.get<MDOrderPriority>();
|
||||
order.display_qty = entry.get<MDDisplayQty>();
|
||||
order.symbol = entry.get<Symbol>();
|
||||
order.md_entry_px = entry.get<MDEntryPx>();
|
||||
print_order(order,orders_stream);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int ParseHistoricalFIX::execute(std::vector<std::string> const &args) {
|
||||
std::ifstream input(args[0]);
|
||||
std::ofstream books_stream(args[0] + "_books.csv");
|
||||
std::ofstream msgs_stream(args[0] + "_msgs.csv");
|
||||
std::ofstream trades_stream(args[0] + "_trades.csv");
|
||||
std::ofstream orders_stream(args[0] + "_orders.csv");
|
||||
|
||||
std::unordered_map<std::string, Book> books;
|
||||
TradeSummaryEvent current_trade_summary;
|
||||
|
||||
MDIncrementalUpdate update;
|
||||
FIXParser<MDIncrementalUpdate> parser;
|
||||
|
||||
std::string line;
|
||||
size_t c = 0;
|
||||
auto ok = 0;
|
||||
auto start = Timer::now();
|
||||
|
||||
print_book_header(books_stream);
|
||||
print_msg_headers(msgs_stream);
|
||||
print_trades_header(trades_stream);
|
||||
print_orders_header(orders_stream);
|
||||
|
||||
while (std::getline(input, line)) {
|
||||
c++;
|
||||
auto parsed_ptr = parser.parse(InMsgBuffer(
|
||||
line.data(), line.size(), std::shared_ptr<std::string>{}));
|
||||
if (parsed_ptr) {
|
||||
auto msg =
|
||||
std::dynamic_pointer_cast<const MDIncrementalUpdate>(parsed_ptr);
|
||||
update_and_maybe_print_book(*msg, books, books_stream);
|
||||
print_msgs(c, *msg, msgs_stream);
|
||||
update_and_maybe_print_trades(*msg, current_trade_summary,
|
||||
trades_stream);
|
||||
print_orders(*msg, orders_stream);
|
||||
}
|
||||
ok += (bool)(parsed_ptr);
|
||||
}
|
||||
auto sec_duration = sec_diff(Timer::now(), start);
|
||||
std::cout << (int)(c / 1000 / sec_duration) << " Km/sec parsed: " << ok
|
||||
<< " out of " << c << " time: " << sec_duration << " secs\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::string ParseHistoricalFIX::help() {
|
||||
return "ParseHistoricalFIX <input> will produce 2 files, "
|
||||
"<input>_mdentries.csv and <input>order_entries.csv";
|
||||
}
|
||||
|
||||
} // namespace cmd
|
||||
} // namespace bts
|
||||
@@ -0,0 +1,17 @@
|
||||
#pragma once
|
||||
|
||||
#include "ICmd.h"
|
||||
|
||||
namespace bts {
|
||||
namespace cmd {
|
||||
|
||||
class ParseHistoricalFIX : public ICmd
|
||||
{
|
||||
public:
|
||||
int execute(std::vector<std::string> const &args);
|
||||
std::string help ();
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "server/sparkd/cmds/Help.h"
|
||||
#include "server/sparkd/cmds/KeyCode.h"
|
||||
#include "server/sparkd/cmds/Md.h"
|
||||
#include "server/sparkd/cmds/ParseHistoricalFIX.h"
|
||||
#include "server/sparkd/cmds/PrintHedgeOrders.h"
|
||||
#include "server/sparkd/cmds/QuickTest.h"
|
||||
#include "server/sparkd/cmds/Run.h"
|
||||
@@ -41,6 +42,7 @@ int main(int argc, char **argv) {
|
||||
REGISTER(FIXSim);
|
||||
REGISTER(Span);
|
||||
REGISTER(Web);
|
||||
REGISTER(ParseHistoricalFIX);
|
||||
REGISTER(PrintHedgeOrders);
|
||||
REGISTER(AdminReport);
|
||||
END_CMD;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
setlocal
|
||||
@call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat" > nul
|
||||
@call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\Tools\VsDevCmd.bat" > nul
|
||||
cd /d %~dp0/../
|
||||
setlocal
|
||||
set path=%spark_build_python_path%;%path%
|
||||
|
||||
@@ -5,9 +5,9 @@ if not exist build\src\lib\libspark.vcxproj (
|
||||
@call tools\setup_builds.bat
|
||||
)
|
||||
copy /y tools\cpp.build.props build\Directory.Build.Props > nul
|
||||
@call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat" > nul
|
||||
@call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\Tools\VsDevCmd.bat" > nul
|
||||
cd /d %~dp0\..
|
||||
set path=%spark_build_python_path%;%path%
|
||||
touch src\lib\CMakeLists.txt
|
||||
msbuild /m /p:debugtype=portable /p:platform=x64 /clp:verbosity=minimal /clp:summary /t:restore %* spark_client.sln
|
||||
msbuild /m /p:debugtype=portable /p:platform=x64 /p:GenerateFullPaths=true /clp:verbosity=minimal /clp:summary %* spark_client.sln
|
||||
msbuild -m -p:platform=x64 -v:m -clp:summary %* build\src\lib\libspark.sln
|
||||
msbuild -m -p:platform=x64 -v:m -clp:summary %* spark_client.sln
|
||||
@@ -0,0 +1,13 @@
|
||||
@setlocal
|
||||
@echo off
|
||||
cd /d %~dp0\..
|
||||
if not exist build\src\lib\libspark.vcxproj (
|
||||
@call tools\setup_builds.bat
|
||||
)
|
||||
copy /y tools\cpp.build.props build\Directory.Build.Props > nul
|
||||
@call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\Tools\VsDevCmd.bat" > nul
|
||||
cd /d %~dp0\..
|
||||
set path=%spark_build_python_path%;%path%
|
||||
touch src\lib\CMakeLists.txt
|
||||
msbuild -m -p:platform=x64 -v:m -clp:summary %* build\src\lib\libspark.sln
|
||||
dotnet build -m -clp:summary %* spark_client.core.sln
|
||||
+64
-28
@@ -1,28 +1,64 @@
|
||||
<Project>
|
||||
|
||||
<PropertyGroup>
|
||||
<BuildRoot>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)))</BuildRoot>
|
||||
<DesiredOutputPath>$(BuildRoot)\$(Configuration)\bin\net471\</DesiredOutputPath>
|
||||
<ErrorReport>None</ErrorReport>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="CopyToNet471" AfterTargets="Link">
|
||||
<Copy
|
||||
SourceFiles="$(OutDir)libspark.dll"
|
||||
Condition="Exists('$(OutDir)libspark.dll')"
|
||||
DestinationFolder="$(DesiredOutputPath)"
|
||||
Retries="512"
|
||||
RetryDelayMilliseconds="250"
|
||||
SkipUnchangedFiles="true"
|
||||
/>
|
||||
<Copy
|
||||
SourceFiles="$(OutDir)libspark.pdb"
|
||||
Condition="Exists('$(OutDir)libspark.pdb')"
|
||||
DestinationFolder="$(DesiredOutputPath)"
|
||||
Retries="512"
|
||||
RetryDelayMilliseconds="250"
|
||||
SkipUnchangedFiles="true"
|
||||
/>
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
<Project>
|
||||
|
||||
<PropertyGroup>
|
||||
<BuildRoot>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)))</BuildRoot>
|
||||
<NetCoreApp31Path>$(BuildRoot)\$(Configuration)\bin\netcoreapp3.1\</NetCoreApp31Path>
|
||||
<Net48OutputPath>$(BuildRoot)\$(Configuration)\bin\net48\</Net48OutputPath>
|
||||
<ErrorReport>None</ErrorReport>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="CopyToBins" AfterTargets="Link">
|
||||
<!--NetCoreApp31-->
|
||||
<Copy
|
||||
SourceFiles="$(OutDir)libspark.dll"
|
||||
Condition="Exists('$(OutDir)libspark.dll')"
|
||||
DestinationFolder="$(NetCoreApp31Path)"
|
||||
Retries="512"
|
||||
RetryDelayMilliseconds="250"
|
||||
SkipUnchangedFiles="true"
|
||||
/>
|
||||
<Copy
|
||||
SourceFiles="$(OutDir)libspark.pdb"
|
||||
Condition="Exists('$(OutDir)libspark.pdb')"
|
||||
DestinationFolder="$(NetCoreApp31Path)"
|
||||
Retries="512"
|
||||
RetryDelayMilliseconds="250"
|
||||
SkipUnchangedFiles="true"
|
||||
/>
|
||||
<!--NetCoreApp31\win7-x64-->
|
||||
<Copy
|
||||
SourceFiles="$(OutDir)libspark.dll"
|
||||
Condition="Exists('$(OutDir)libspark.dll')"
|
||||
DestinationFolder="$(NetCoreApp31Path)win7-x64"
|
||||
Retries="512"
|
||||
RetryDelayMilliseconds="250"
|
||||
SkipUnchangedFiles="true"
|
||||
/>
|
||||
<Copy
|
||||
SourceFiles="$(OutDir)libspark.pdb"
|
||||
Condition="Exists('$(OutDir)libspark.pdb')"
|
||||
DestinationFolder="$(NetCoreApp31Path)win7-x64"
|
||||
Retries="512"
|
||||
RetryDelayMilliseconds="250"
|
||||
SkipUnchangedFiles="true"
|
||||
/>
|
||||
<!--Net48-->
|
||||
<Copy
|
||||
SourceFiles="$(OutDir)libspark.dll"
|
||||
Condition="Exists('$(OutDir)libspark.dll')"
|
||||
DestinationFolder="$(Net48OutputPath)"
|
||||
Retries="512"
|
||||
RetryDelayMilliseconds="250"
|
||||
SkipUnchangedFiles="true"
|
||||
/>
|
||||
<Copy
|
||||
SourceFiles="$(OutDir)libspark.pdb"
|
||||
Condition="Exists('$(OutDir)libspark.pdb')"
|
||||
DestinationFolder="$(Net48OutputPath)"
|
||||
Retries="512"
|
||||
RetryDelayMilliseconds="250"
|
||||
SkipUnchangedFiles="true"
|
||||
/>
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
+1
-1
@@ -1 +1 @@
|
||||
@"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat"
|
||||
@"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\Tools\VsDevCmd.bat"
|
||||
@@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
setlocal
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat" > nul
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\Tools\VsDevCmd.bat" > nul
|
||||
cd /d %~dp0/../
|
||||
msbuild /m /p:platform=x64 /clp:verbosity=minimal /clp:summary /t:restore spark_client.sln
|
||||
msbuild /m /p:platform=x64 /clp:verbosity=minimal /clp:summary /p:Configuration=release /t:restore spark_client.sln
|
||||
|
||||
@@ -7,7 +7,7 @@ rmdir /s /q c:\build\Debug
|
||||
rmdir /s /q c:\build\Release
|
||||
cd c:\build
|
||||
c:
|
||||
cmake.exe -G "Visual Studio 15 2017 Win64" %ROOT%
|
||||
cmake.exe -G "Visual Studio 16 2019 Win64" %ROOT%
|
||||
cd %ROOT%
|
||||
P:
|
||||
copy /y tools\cpp.build.props c:\build\Directory.Build.Props
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ if not exist c:\build\src\lib\libspark.vcxproj (
|
||||
@call tools\pp_setup_builds.bat
|
||||
)
|
||||
copy /y tools\cpp.build.props c:\build\Directory.Build.Props > nul
|
||||
@call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat" > nul
|
||||
@call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\Tools\VsDevCmd.bat" > nul
|
||||
cd %~dp0\..
|
||||
msbuild /m /p:platform=x64 /clp:verbosity=minimal /clp:summary /t:restore pp_spark_client.sln
|
||||
msbuild /m /p:platform=x64 /clp:verbosity=minimal /clp:summary pp_spark_client.sln
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
@echo off
|
||||
@setlocal
|
||||
@echo off
|
||||
cd /d %~dp0\..
|
||||
mkdir build 2> nul
|
||||
cd build
|
||||
rmdir /s /q Debug
|
||||
rmdir /s /q Release
|
||||
if exist "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" (
|
||||
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -G "Visual Studio 15 2017 Win64" ..
|
||||
) else (
|
||||
cmake.exe -G "Visual Studio 15 2017 Win64" ..
|
||||
if exist "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" (
|
||||
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -G "Visual Studio 16 2019" -A x64 ..
|
||||
) else (
|
||||
cmake.exe -G "Visual Studio 16 2019" -A x64 ..
|
||||
)
|
||||
copy /y ..\tools\cpp.build.props Directory.Build.Props
|
||||
del spark.sln
|
||||
|
||||
@@ -41,6 +41,7 @@ REM can't share externals because of symlinks
|
||||
REM docker exec spark_sdk ln -s /home/bts/spark_host/externals /home/bts/spark/externals
|
||||
echo installing protobuf pybars3 markdown, remove this line if we fixed docker
|
||||
docker exec spark_sdk pip install protobuf pybars3 markdown
|
||||
echo now run git clone git@bitbucket.org:bluetradesys/externals.git in /home/bts/spark
|
||||
|
||||
REM ssh-keygen -e -f c:\users\kevin\.ssh\id_rsa > c:\users\kevin\.ssh\id_rsa_com.pub
|
||||
REM ssh-keygen -i -f c:\users\kevin\.ssh\id_rsa_com.pub > c:\users\kevin\.ssh\id_rsa.pub
|
||||
|
||||
@@ -25,4 +25,6 @@ docker run \
|
||||
-t bluetradingsystems/linux_docker \
|
||||
/bin/bash -c "(sudo /usr/sbin/sshd) & (cd ~ && $DIR/../externals/linux/bin/unison -socket 8080) & /bin/bash --login"
|
||||
|
||||
find /etc/ssh/ssh_host_* |xargs -I{} sudo docker cp {} bts:/etc/ssh/
|
||||
docker exec bts sudo service ssh restart
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
@echo off
|
||||
setlocal
|
||||
cd %~dp0\..
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat" > nul
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\Tools\VsDevCmd.bat" > nul
|
||||
cd /d %~dp0\..
|
||||
setlocal
|
||||
cmd /C start "" "C:\Program Files\Microsoft VS Code\Code.exe" "%*"
|
||||
Reference in new issue
Block a user