Compare commits
38
Commits
ls
...
development.ticks
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bef84d6dc3 | ||
|
|
b061509126 | ||
|
|
5c0487358e | ||
|
|
5c7eedbf7b | ||
|
|
74475cb68f | ||
|
|
24978f76b5 | ||
|
|
0698567f53 | ||
|
|
ec78e35733 | ||
|
|
4801ce6b83 | ||
|
|
7eb8cd5ead | ||
|
|
d7b42e3cee | ||
|
|
35d65f107b | ||
|
|
e335a2d827 | ||
|
|
abc7d44ce2 | ||
|
|
85ff7f412a | ||
|
|
8a3ad08456 | ||
|
|
f181d34cbe | ||
|
|
002087f62a | ||
|
|
e37ae056c0 | ||
|
|
b8a7f398c9 | ||
|
|
2038d747d8 | ||
|
|
edf127069f | ||
|
|
07448cede9 | ||
|
|
9aef42cb21 | ||
|
|
baa43cbecf | ||
|
|
de3e491843 | ||
|
|
7cc09350a0 | ||
|
|
059e1202e1 | ||
|
|
9093f56498 | ||
|
|
649b4560ff | ||
|
|
6c060f6171 | ||
|
|
581b9259b8 | ||
|
|
e7bd57964e | ||
|
|
6ea955aacd | ||
|
|
29d028fee2 | ||
|
|
dc5da87a65 | ||
|
|
7de98a313f | ||
|
|
7873e76ba0 |
No files matched your search
@@ -29,6 +29,9 @@
|
|||||||
# tools/deploy.sh --help
|
# tools/deploy.sh --help
|
||||||
#
|
#
|
||||||
|
|
||||||
|
### Host/Runtime ###
|
||||||
|
TZ=Etc/UTC
|
||||||
|
|
||||||
### Sparkd ###
|
### Sparkd ###
|
||||||
# The internal image for sparkd to use. For more info, view:
|
# The internal image for sparkd to use. For more info, view:
|
||||||
# src/server/sparkd/Dockerfile
|
# src/server/sparkd/Dockerfile
|
||||||
@@ -38,6 +41,9 @@ SPARKD__CONFIG_DIR=src/app_sparkd/configurations/dev
|
|||||||
# Mount a specific volume or dir to "~/sparkdata/data" inside the docker.
|
# Mount a specific volume or dir to "~/sparkdata/data" inside the docker.
|
||||||
# Defaults to a volume named "sparkd_<config_port>" (e.g., sparkd_8000).
|
# Defaults to a volume named "sparkd_<config_port>" (e.g., sparkd_8000).
|
||||||
# SPARKD__DATA_DIR=/home/bts/sparkdata/data
|
# SPARKD__DATA_DIR=/home/bts/sparkdata/data
|
||||||
|
# Mount volume or dir to "/md_recording" inside the docker. Defaults to volume
|
||||||
|
# "sparkd_md_recording_<config_port>" (e.g., sparkd_md_recording_8000).
|
||||||
|
# SPARKD__MD_RECORDING_DIR=/home/bts/md_recording
|
||||||
SPARKD__SOURCE_DIR=install/sparkd-release-gcc
|
SPARKD__SOURCE_DIR=install/sparkd-release-gcc
|
||||||
SPARKD__RUNTIME_CONF_DIR=/home/ubuntu/8000/sparkdata/conf/
|
SPARKD__RUNTIME_CONF_DIR=/home/ubuntu/8000/sparkdata/conf/
|
||||||
SPARKD__CONFIG_PORT=8000
|
SPARKD__CONFIG_PORT=8000
|
||||||
@@ -45,6 +51,7 @@ SPARKD__QUICKBUS_PORT=8001
|
|||||||
SPARKD__SIM_FIX_PORT=8002
|
SPARKD__SIM_FIX_PORT=8002
|
||||||
SPARKD__SHM_SIZE=4gb
|
SPARKD__SHM_SIZE=4gb
|
||||||
SPARKD__PYTHON_REQUIREMENTS=requirements.txt
|
SPARKD__PYTHON_REQUIREMENTS=requirements.txt
|
||||||
|
SPARKD__ENTRYPOINT=src/app_sparkd/sparkd-entrypoint.sh
|
||||||
|
|
||||||
### PubSubServer ###
|
### PubSubServer ###
|
||||||
PUBSUB__CONFIG_DIR=src/DataStreamSuite/PubSubServer/Configurations/Development
|
PUBSUB__CONFIG_DIR=src/DataStreamSuite/PubSubServer/Configurations/Development
|
||||||
|
|||||||
@@ -17,6 +17,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Spark.Sdk", "src\cs\Bts
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Spark.Sdk.Demo", "src\cs\Bts.Spark.Sdk.Demo\Bts.Spark.Sdk.Demo.csproj", "{FCFDBDBE-74B0-41C4-9011-C651B21056D4}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Spark.Sdk.Demo", "src\cs\Bts.Spark.Sdk.Demo\Bts.Spark.Sdk.Demo.csproj", "{FCFDBDBE-74B0-41C4-9011-C651B21056D4}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Collections", "src\cs\Bts.Collections\Bts.Collections.csproj", "{3BF4DF96-5AFF-4674-866A-71A8090627FF}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Core", "src\cs\Bts.Core\Bts.Core.csproj", "{CD0A3EEF-303A-44EE-85F2-76F4CE632A3B}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Disposables", "src\cs\Bts.Disposables\Bts.Disposables.csproj", "{62067659-AA2E-4CB5-B7CE-0B38EAA92080}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Numerics", "src\cs\Bts.Numerics\Bts.Numerics.csproj", "{2FE1E5D0-168A-4D83-9B18-0D48250B4BFE}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -87,6 +95,54 @@ Global
|
|||||||
{FCFDBDBE-74B0-41C4-9011-C651B21056D4}.Release|x64.Build.0 = Release|Any CPU
|
{FCFDBDBE-74B0-41C4-9011-C651B21056D4}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{FCFDBDBE-74B0-41C4-9011-C651B21056D4}.Release|x86.ActiveCfg = Release|Any CPU
|
{FCFDBDBE-74B0-41C4-9011-C651B21056D4}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{FCFDBDBE-74B0-41C4-9011-C651B21056D4}.Release|x86.Build.0 = Release|Any CPU
|
{FCFDBDBE-74B0-41C4-9011-C651B21056D4}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{3BF4DF96-5AFF-4674-866A-71A8090627FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{3BF4DF96-5AFF-4674-866A-71A8090627FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{3BF4DF96-5AFF-4674-866A-71A8090627FF}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{3BF4DF96-5AFF-4674-866A-71A8090627FF}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{3BF4DF96-5AFF-4674-866A-71A8090627FF}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{3BF4DF96-5AFF-4674-866A-71A8090627FF}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{3BF4DF96-5AFF-4674-866A-71A8090627FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{3BF4DF96-5AFF-4674-866A-71A8090627FF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{3BF4DF96-5AFF-4674-866A-71A8090627FF}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{3BF4DF96-5AFF-4674-866A-71A8090627FF}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{3BF4DF96-5AFF-4674-866A-71A8090627FF}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{3BF4DF96-5AFF-4674-866A-71A8090627FF}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{CD0A3EEF-303A-44EE-85F2-76F4CE632A3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{CD0A3EEF-303A-44EE-85F2-76F4CE632A3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{CD0A3EEF-303A-44EE-85F2-76F4CE632A3B}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{CD0A3EEF-303A-44EE-85F2-76F4CE632A3B}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{CD0A3EEF-303A-44EE-85F2-76F4CE632A3B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{CD0A3EEF-303A-44EE-85F2-76F4CE632A3B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{CD0A3EEF-303A-44EE-85F2-76F4CE632A3B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{CD0A3EEF-303A-44EE-85F2-76F4CE632A3B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{CD0A3EEF-303A-44EE-85F2-76F4CE632A3B}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{CD0A3EEF-303A-44EE-85F2-76F4CE632A3B}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{CD0A3EEF-303A-44EE-85F2-76F4CE632A3B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{CD0A3EEF-303A-44EE-85F2-76F4CE632A3B}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{62067659-AA2E-4CB5-B7CE-0B38EAA92080}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{62067659-AA2E-4CB5-B7CE-0B38EAA92080}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{62067659-AA2E-4CB5-B7CE-0B38EAA92080}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{62067659-AA2E-4CB5-B7CE-0B38EAA92080}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{62067659-AA2E-4CB5-B7CE-0B38EAA92080}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{62067659-AA2E-4CB5-B7CE-0B38EAA92080}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{62067659-AA2E-4CB5-B7CE-0B38EAA92080}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{62067659-AA2E-4CB5-B7CE-0B38EAA92080}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{62067659-AA2E-4CB5-B7CE-0B38EAA92080}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{62067659-AA2E-4CB5-B7CE-0B38EAA92080}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{62067659-AA2E-4CB5-B7CE-0B38EAA92080}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{62067659-AA2E-4CB5-B7CE-0B38EAA92080}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{2FE1E5D0-168A-4D83-9B18-0D48250B4BFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{2FE1E5D0-168A-4D83-9B18-0D48250B4BFE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{2FE1E5D0-168A-4D83-9B18-0D48250B4BFE}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{2FE1E5D0-168A-4D83-9B18-0D48250B4BFE}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{2FE1E5D0-168A-4D83-9B18-0D48250B4BFE}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{2FE1E5D0-168A-4D83-9B18-0D48250B4BFE}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{2FE1E5D0-168A-4D83-9B18-0D48250B4BFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{2FE1E5D0-168A-4D83-9B18-0D48250B4BFE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{2FE1E5D0-168A-4D83-9B18-0D48250B4BFE}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{2FE1E5D0-168A-4D83-9B18-0D48250B4BFE}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{2FE1E5D0-168A-4D83-9B18-0D48250B4BFE}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{2FE1E5D0-168A-4D83-9B18-0D48250B4BFE}.Release|x86.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@@ -98,5 +154,9 @@ Global
|
|||||||
{37E4E890-D025-4729-90F9-6F95862F47BC} = {C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295}
|
{37E4E890-D025-4729-90F9-6F95862F47BC} = {C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295}
|
||||||
{A5FF3FAF-43CB-496B-AF4B-F61EFD645579} = {C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295}
|
{A5FF3FAF-43CB-496B-AF4B-F61EFD645579} = {C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295}
|
||||||
{FCFDBDBE-74B0-41C4-9011-C651B21056D4} = {C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295}
|
{FCFDBDBE-74B0-41C4-9011-C651B21056D4} = {C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295}
|
||||||
|
{3BF4DF96-5AFF-4674-866A-71A8090627FF} = {C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295}
|
||||||
|
{CD0A3EEF-303A-44EE-85F2-76F4CE632A3B} = {C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295}
|
||||||
|
{62067659-AA2E-4CB5-B7CE-0B38EAA92080} = {C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295}
|
||||||
|
{2FE1E5D0-168A-4D83-9B18-0D48250B4BFE} = {C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
+8
-2
@@ -32,14 +32,20 @@
|
|||||||
"lhs": "${hostSystemName}",
|
"lhs": "${hostSystemName}",
|
||||||
"rhs": "Windows"
|
"rhs": "Windows"
|
||||||
},
|
},
|
||||||
"generator": "Visual Studio 17 2022",
|
"generator": "Ninja Multi-Config",
|
||||||
"environment": {
|
"environment": {
|
||||||
"SPARK_CMAKE_CXX_FLAGS": "/MP /WX /wd4250 /wd4251 /wd4244 /wd4267 /wd4355 /wd4275 /wd4345 /bigobj /EHsc /DCURL_STATICLIB /D_WINSOCK_DEPRECATED_NO_WARNINGS /D__TBB_NO_IMPLICIT_LINKAGE /DBOOST_ALL_NO_LIB /std:c++20 /D_SCL_SECURE_NO_WARNINGS /D_CRT_SECURE_NO_WARNINGS /D_WIN32_WINNT=0x0600"
|
"SPARK_CMAKE_CXX_FLAGS": "/WX /wd4250 /wd4251 /wd4244 /wd4267 /wd4355 /wd4275 /wd4345 /bigobj /EHsc /DCURL_STATICLIB /D_WINSOCK_DEPRECATED_NO_WARNINGS /D__TBB_NO_IMPLICIT_LINKAGE /DBOOST_ALL_NO_LIB /std:c++20 /D_SCL_SECURE_NO_WARNINGS /D_CRT_SECURE_NO_WARNINGS /D_WIN32_WINNT=0x0600"
|
||||||
},
|
},
|
||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
|
"CMAKE_C_COMPILER": "clang-cl",
|
||||||
|
"CMAKE_CXX_COMPILER": "clang-cl",
|
||||||
"CMAKE_CXX_FLAGS": "$env{SPARK_CMAKE_CXX_FLAGS}",
|
"CMAKE_CXX_FLAGS": "$env{SPARK_CMAKE_CXX_FLAGS}",
|
||||||
"CMAKE_CXX_FLAGS_DEBUG": "$env{SPARK_CMAKE_CXX_FLAGS} /MTd",
|
"CMAKE_CXX_FLAGS_DEBUG": "$env{SPARK_CMAKE_CXX_FLAGS} /MTd",
|
||||||
"CMAKE_CXX_FLAGS_RELEASE": "$env{SPARK_CMAKE_CXX_FLAGS} /MT",
|
"CMAKE_CXX_FLAGS_RELEASE": "$env{SPARK_CMAKE_CXX_FLAGS} /MT",
|
||||||
|
"CMAKE_EXPORT_COMPILE_COMMANDS": {
|
||||||
|
"type": "BOOL",
|
||||||
|
"value": "ON"
|
||||||
|
},
|
||||||
"CMAKE_SHARED_LINKER_FLAGS_DEBUG": "/DEBUG",
|
"CMAKE_SHARED_LINKER_FLAGS_DEBUG": "/DEBUG",
|
||||||
"CMAKE_SHARED_LINKER_FLAGS_RELEASE": "/OPT:REF /OPT:ICF /LTCG",
|
"CMAKE_SHARED_LINKER_FLAGS_RELEASE": "/OPT:REF /OPT:ICF /LTCG",
|
||||||
"EXTERNALS_ROOT": "${sourceDir}/externals/windows"
|
"EXTERNALS_ROOT": "${sourceDir}/externals/windows"
|
||||||
|
|||||||
@@ -51,6 +51,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Net", "src\cs\Bts.Net\B
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.IO.Compression", "src\cs\Bts.IO.Compression\Bts.IO.Compression.csproj", "{BC277499-8215-4F9F-B9AB-07B6391110BF}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.IO.Compression", "src\cs\Bts.IO.Compression\Bts.IO.Compression.csproj", "{BC277499-8215-4F9F-B9AB-07B6391110BF}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Collections", "src\cs\Bts.Collections\Bts.Collections.csproj", "{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Core", "src\cs\Bts.Core\Bts.Core.csproj", "{802ECF0B-7264-4168-95D1-158E47FB65CC}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Disposables", "src\cs\Bts.Disposables\Bts.Disposables.csproj", "{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Numerics", "src\cs\Bts.Numerics\Bts.Numerics.csproj", "{0354655D-2394-42BB-B1D4-2D75B9BCABF1}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|x64 = Debug|x64
|
Debug|x64 = Debug|x64
|
||||||
@@ -571,6 +579,102 @@ Global
|
|||||||
{BC277499-8215-4F9F-B9AB-07B6391110BF}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
|
{BC277499-8215-4F9F-B9AB-07B6391110BF}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{BC277499-8215-4F9F-B9AB-07B6391110BF}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
|
{BC277499-8215-4F9F-B9AB-07B6391110BF}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
|
||||||
{BC277499-8215-4F9F-B9AB-07B6391110BF}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
|
{BC277499-8215-4F9F-B9AB-07B6391110BF}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@@ -592,6 +696,10 @@ Global
|
|||||||
{385C4948-E080-56A6-E29E-8B0F4913175C} = {267F81EF-A8AB-49FD-9F56-D7EC3C1F7C7C}
|
{385C4948-E080-56A6-E29E-8B0F4913175C} = {267F81EF-A8AB-49FD-9F56-D7EC3C1F7C7C}
|
||||||
{43FB297B-7A4D-4835-A878-E6DF345B580C} = {385C4948-E080-56A6-E29E-8B0F4913175C}
|
{43FB297B-7A4D-4835-A878-E6DF345B580C} = {385C4948-E080-56A6-E29E-8B0F4913175C}
|
||||||
{BC277499-8215-4F9F-B9AB-07B6391110BF} = {385C4948-E080-56A6-E29E-8B0F4913175C}
|
{BC277499-8215-4F9F-B9AB-07B6391110BF} = {385C4948-E080-56A6-E29E-8B0F4913175C}
|
||||||
|
{C42F4CCB-9E65-4370-939A-527ACDBC4DA6} = {385C4948-E080-56A6-E29E-8B0F4913175C}
|
||||||
|
{802ECF0B-7264-4168-95D1-158E47FB65CC} = {385C4948-E080-56A6-E29E-8B0F4913175C}
|
||||||
|
{95C5F6C0-88E5-4338-9A4F-614CF6C03CC0} = {385C4948-E080-56A6-E29E-8B0F4913175C}
|
||||||
|
{0354655D-2394-42BB-B1D4-2D75B9BCABF1} = {385C4948-E080-56A6-E29E-8B0F4913175C}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {422D1620-0166-4C26-9A81-CA8A2EB1AB58}
|
SolutionGuid = {422D1620-0166-4C26-9A81-CA8A2EB1AB58}
|
||||||
|
|||||||
+32
-36
@@ -2,6 +2,7 @@ services:
|
|||||||
sparkd:
|
sparkd:
|
||||||
volumes:
|
volumes:
|
||||||
- ${SPARKD__DATA_DIR:-sparkd_data}:/home/bts/.local/share/bts/sparkd/data
|
- ${SPARKD__DATA_DIR:-sparkd_data}:/home/bts/.local/share/bts/sparkd/data
|
||||||
|
- ${SPARKD__MD_RECORDING_DIR:-md_recording}:/md_recording
|
||||||
build:
|
build:
|
||||||
dockerfile: src/app_sparkd/Dockerfile
|
dockerfile: src/app_sparkd/Dockerfile
|
||||||
args:
|
args:
|
||||||
@@ -9,24 +10,34 @@ services:
|
|||||||
- SOURCE_DIR=${SPARKD__SOURCE_DIR}
|
- SOURCE_DIR=${SPARKD__SOURCE_DIR}
|
||||||
- CONFIG_DIR=${SPARKD__CONFIG_DIR}
|
- CONFIG_DIR=${SPARKD__CONFIG_DIR}
|
||||||
- PYTHON_REQUIREMENTS=${SPARKD__PYTHON_REQUIREMENTS}
|
- PYTHON_REQUIREMENTS=${SPARKD__PYTHON_REQUIREMENTS}
|
||||||
|
- ENTRYPOINT_SCRIPT=${SPARKD__ENTRYPOINT}
|
||||||
shm_size: "${SPARKD__SHM_SIZE:-512mb}"
|
shm_size: "${SPARKD__SHM_SIZE:-512mb}"
|
||||||
command: >
|
env_file:
|
||||||
sh -c "
|
- .env
|
||||||
echo bts | sudo -S chown -R bts:bts /home/bts/.local/share/bts/sparkd/data
|
- ${SPARKD__CONFIG_DIR}/.env
|
||||||
if [ -e "/home/bts/.local/share/bts/sparkd/data/logging.sparkd/log" ]; then
|
ports:
|
||||||
mv "/home/bts/.local/share/bts/sparkd/data/logging.sparkd/log" "/home/bts/.local/share/bts/sparkd/data/logging.sparkd/log_$(date '+%Y%m%d-%H%M')"
|
- "${SPARKD__CONFIG_PORT}:${SPARKD__CONFIG_PORT}"
|
||||||
fi
|
- "${SPARKD__QUICKBUS_PORT}:${SPARKD__QUICKBUS_PORT}"
|
||||||
if [ -e "/home/bts/.local/share/bts/conf/.env.local" ]; then
|
- "${SPARKD__SIM_FIX_PORT}:${SPARKD__SIM_FIX_PORT}"
|
||||||
echo 'Sourcing /home/bts/.local/share/bts/conf/.env.local'
|
deploy:
|
||||||
set -a
|
resources:
|
||||||
. /home/bts/.local/share/bts/sparkd/conf/.env.local
|
limits:
|
||||||
set +a
|
memory: "${SPARKD__MEMORY:-4gb}"
|
||||||
fi
|
|
||||||
if [ -d /home/bts/.local/share/bts/sparkd/conf/plugins ]; then
|
sparkd-shell:
|
||||||
echo 'Copying /home/bts/.local/share/bts/sparkd/conf/plugins to runtime dir (/home/bts/bin)'
|
volumes:
|
||||||
cp -r /home/bts/.local/share/bts/sparkd/conf/plugins /home/bts/bin/
|
- ${SPARKD__DATA_DIR:-sparkd_data}:/home/bts/.local/share/bts/sparkd/data
|
||||||
fi
|
- ${SPARKD__MD_RECORDING_DIR:-md_recording}:/md_recording
|
||||||
./sparkd run"
|
build:
|
||||||
|
dockerfile: docker/images/bluetradingsystems/linux_shell/Dockerfile
|
||||||
|
args:
|
||||||
|
- IMAGE=${SPARKD__IMAGE}
|
||||||
|
- SOURCE_DIR=${SPARKD__SOURCE_DIR}
|
||||||
|
- CONFIG_DIR=${SPARKD__CONFIG_DIR}
|
||||||
|
- PYTHON_REQUIREMENTS=${SPARKD__PYTHON_REQUIREMENTS}
|
||||||
|
- ENTRYPOINT_SCRIPT=${SPARKD__ENTRYPOINT}
|
||||||
|
shm_size: "${SPARKD__SHM_SIZE:-512mb}"
|
||||||
|
command: "do sleep 1; done"
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
- ${SPARKD__CONFIG_DIR}/.env
|
- ${SPARKD__CONFIG_DIR}/.env
|
||||||
@@ -50,26 +61,8 @@ services:
|
|||||||
- SOURCE_DIR=${SPARKD__SOURCE_DIR}
|
- SOURCE_DIR=${SPARKD__SOURCE_DIR}
|
||||||
- CONFIG_DIR=${SPARKD__CONFIG_DIR}
|
- CONFIG_DIR=${SPARKD__CONFIG_DIR}
|
||||||
- PYTHON_REQUIREMENTS=${SPARKD__PYTHON_REQUIREMENTS}
|
- PYTHON_REQUIREMENTS=${SPARKD__PYTHON_REQUIREMENTS}
|
||||||
|
- ENTRYPOINT_SCRIPT=${SPARKD__ENTRYPOINT}
|
||||||
shm_size: "${SPARKD__SHM_SIZE:-512mb}"
|
shm_size: "${SPARKD__SHM_SIZE:-512mb}"
|
||||||
command: >
|
|
||||||
sh -c "
|
|
||||||
echo bts | sudo -S chown -R bts:bts /home/bts/.local/share/bts/sparkd
|
|
||||||
if [ -e "/home/bts/.local/share/bts/sparkd/data/logging.sparkd/log" ]; then
|
|
||||||
mv "/home/bts/.local/share/bts/sparkd/data/logging.sparkd/log" "/home/bts/.local/share/bts/sparkd/data/logging.sparkd/log_$(date '+%Y%m%d-%H%M')"
|
|
||||||
fi
|
|
||||||
ls -alh /home/bts/.local/share/bts/sparkd/conf/
|
|
||||||
cat /home/bts/.local/share/bts/sparkd/conf/.env.local
|
|
||||||
if [ -e "/home/bts/.local/share/bts/sparkd/conf/.env.local" ]; then
|
|
||||||
echo 'Sourcing /home/bts/.local/share/bts/sparkd/conf/.env.local'
|
|
||||||
set -a
|
|
||||||
. /home/bts/.local/share/bts/sparkd/conf/.env.local
|
|
||||||
set +a
|
|
||||||
fi
|
|
||||||
if [ -d /home/bts/.local/share/bts/sparkd/conf/plugins ]; then
|
|
||||||
echo 'Copying /home/bts/.local/share/bts/sparkd/conf/plugins to runtime dir (/home/bts/bin)'
|
|
||||||
cp -r /home/bts/.local/share/bts/sparkd/conf/plugins /home/bts/bin/
|
|
||||||
fi
|
|
||||||
./sparkd run"
|
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
- ${SPARKD__CONFIG_DIR}/.env
|
- ${SPARKD__CONFIG_DIR}/.env
|
||||||
@@ -195,3 +188,6 @@ volumes:
|
|||||||
name: "md_publisher_22019"
|
name: "md_publisher_22019"
|
||||||
historic_md:
|
historic_md:
|
||||||
name: "historic_md"
|
name: "historic_md"
|
||||||
|
md_recording:
|
||||||
|
name: "sparkd_md_recording_${SPARKD__CONFIG_PORT:-8000}"
|
||||||
|
external: true
|
||||||
@@ -8,6 +8,7 @@ RUN apt-get update && apt-get install -y ca-certificates
|
|||||||
RUN apt-get update && apt-get install -y libssh2-1-dev
|
RUN apt-get update && apt-get install -y libssh2-1-dev
|
||||||
RUN apt-get update && apt-get install -y software-properties-common
|
RUN apt-get update && apt-get install -y software-properties-common
|
||||||
RUN apt-get update && apt-get install -y sudo
|
RUN apt-get update && apt-get install -y sudo
|
||||||
|
RUN apt-get update && apt-get install -y tzdata
|
||||||
|
|
||||||
# GCC
|
# GCC
|
||||||
ARG gcc_major=13
|
ARG gcc_major=13
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
FROM ubuntu:24.04
|
||||||
|
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
fish \
|
||||||
|
less \
|
||||||
|
vim
|
||||||
|
|
||||||
|
USER bts
|
||||||
|
WORKDIR /home/bts
|
||||||
+1
-1
Submodule externals updated: c7478ef5cd...9fa7a9898e.
+387
-406
@@ -1,433 +1,414 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.3.32922.545
|
VisualStudioVersion = 17.0.31903.59
|
||||||
MinimumVisualStudioVersion = 15.0.26124.0
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bts.Spark.Api", "src\cs\Bts.Spark.Api\Bts.Spark.Api.csproj", "{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}"
|
|
||||||
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}") = "Spark.Console", "src\client\Spark.Console\Spark.Console.csproj", "{387566C6-C6F6-412C-A30C-9855BBCB4816}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bts.Spark.Core", "src\cs\Bts.Spark.Core\Bts.Spark.Core.csproj", "{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_sdk", "src\client\spark_sdk\spark_sdk.csproj", "{6963C314-83C4-4667-B0D0-C2F7AE208C29}"
|
|
||||||
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_websocket", "src\client\spark_websocket\spark_websocket.csproj", "{3201359D-C071-4089-9EDE-B04D759F1508}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_api_server", "src\client\spark_api_server\spark_api_server.csproj", "{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataStreamCore", "src\DataStreamSuite\DataStreamCore\DataStreamCore.csproj", "{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataStream", "src\DataStreamSuite\DataStream\DataStream.csproj", "{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharedStreams", "src\DataStreamSuite\SharedStreams\SharedStreams.csproj", "{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PubSub", "src\DataStreamSuite\PubSub\PubSub.csproj", "{51C40BA9-F226-4A35-939D-1ED6F5FF7299}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "cs", "cs", "{D7C6B9C7-1058-B1EA-FEE6-34C56B05AEDB}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Spark.Core", "src\cs\Bts.Spark.Core\Bts.Spark.Core.csproj", "{684863A1-3396-4D31-A731-C0725CF07F4E}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Spark.Api", "src\cs\Bts.Spark.Api\Bts.Spark.Api.csproj", "{45292808-4EF3-4D4A-B3F5-B75C42EE5870}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Extensions.Hosting", "src\cs\Bts.Extensions.Hosting\Bts.Extensions.Hosting.csproj", "{AA57F8D9-7BD6-4161-881B-AD2CEF9A30F6}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.IO.Compression", "src\cs\Bts.IO.Compression\Bts.IO.Compression.csproj", "{28A26DF7-5F7A-43A2-A548-B55FEBCC3958}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Net", "src\cs\Bts.Net\Bts.Net.csproj", "{7543386A-5EBA-4AF0-9E0F-35657B58557D}"
|
||||||
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DataStreamSuite", "DataStreamSuite", "{60E0D592-FFB3-0D0A-C4AA-E88919B48F9D}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DataStreamSuite", "DataStreamSuite", "{60E0D592-FFB3-0D0A-C4AA-E88919B48F9D}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Net", "src\cs\Bts.Net\Bts.Net.csproj", "{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PubSub", "src\DataStreamSuite\PubSub\PubSub.csproj", "{C13A5ABD-F739-4BE8-A2FE-511E989A5B43}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Extensions.Hosting", "src\cs\Bts.Extensions.Hosting\Bts.Extensions.Hosting.csproj", "{90A48718-F6A7-4747-97EA-89632B451008}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataStreamCore", "src\DataStreamSuite\DataStreamCore\DataStreamCore.csproj", "{F7C6F079-67BA-4899-9B43-D3F8C121D264}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "cs", "cs", "{1A5B8C5D-BADC-457E-819F-0050C44FE4D3}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArithmeticExpressions", "src\DataStreamSuite\ArithmeticExpressions\ArithmeticExpressions.csproj", "{E60C119D-2919-4E2F-9D39-90DB1A8FF9A7}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.IO.Compression", "src\cs\Bts.IO.Compression\Bts.IO.Compression.csproj", "{2A0FBDE0-D870-4567-85BD-F7793A5862C6}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BaseUtilities", "src\DataStreamSuite\BaseUtilities\BaseUtilities.csproj", "{ECBAA198-EC93-4174-8156-BDA5F5E95042}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooleanExpressions", "src\DataStreamSuite\BooleanExpressions\BooleanExpressions.csproj", "{F54AE5C0-2ECA-4151-82E6-0D7EFE88FF40}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.ColumnExpressions", "src\DataStreamSuite\Bts.ColumnExpressions\Bts.ColumnExpressions.csproj", "{A898C6C3-F134-4AF0-AFB3-3834C58CC0D7}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.ColumnSortExpressions", "src\DataStreamSuite\Bts.ColumnSortExpressions\Bts.ColumnSortExpressions.csproj", "{1E296FB3-D185-4A95-A1EB-AA5B37B85C60}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataStreamExpressions", "src\DataStreamSuite\DataStreamExpressions\DataStreamExpressions.csproj", "{B6070F41-8759-448B-B56D-A7D15D489569}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataStream", "src\DataStreamSuite\DataStream\DataStream.csproj", "{B2D721AB-920C-4CD6-8DBF-6778A115A449}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharedStreams", "src\DataStreamSuite\SharedStreams\SharedStreams.csproj", "{38EE36C6-892C-4C94-8BB0-1ACB164E1F20}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "client", "client", "{C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "spark", "spark", "{42C014A0-00C5-0620-8552-38912E891A7F}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spark", "src\client\spark\Spark.csproj", "{D432F3E9-3D2F-4623-B7B9-CEBA6701FFC3}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "spark_test", "src\client\spark_test\spark_test.csproj", "{DD00F5D5-6C2F-4FDA-AE3D-25CF01A9A224}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spark.Console", "src\client\Spark.Console\Spark.Console.csproj", "{2B8243FF-60C6-4607-8AAE-7762D29B0A48}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Collections", "src\cs\Bts.Collections\Bts.Collections.csproj", "{00D21F82-61F4-467F-B125-268018A185E5}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Core", "src\cs\Bts.Core\Bts.Core.csproj", "{513A3F0D-46B5-4AC2-B700-8671933F6347}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Disposables", "src\cs\Bts.Disposables\Bts.Disposables.csproj", "{D419D996-9870-4FF5-82AD-08370D1C945F}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Numerics", "src\cs\Bts.Numerics\Bts.Numerics.csproj", "{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|x64 = Debug|x64
|
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
Debug|x86 = Debug|x86
|
Debug|x86 = Debug|x86
|
||||||
MinSizeRel|x64 = MinSizeRel|x64
|
|
||||||
MinSizeRel|Any CPU = MinSizeRel|Any CPU
|
|
||||||
MinSizeRel|x86 = MinSizeRel|x86
|
|
||||||
Release|x64 = Release|x64
|
|
||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|x64 = Release|x64
|
||||||
Release|x86 = Release|x86
|
Release|x86 = Release|x86
|
||||||
RelWithDebInfo|x64 = RelWithDebInfo|x64
|
|
||||||
RelWithDebInfo|Any CPU = RelWithDebInfo|Any CPU
|
|
||||||
RelWithDebInfo|x86 = RelWithDebInfo|x86
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Debug|x64.ActiveCfg = Debug|x64
|
{684863A1-3396-4D31-A731-C0725CF07F4E}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Debug|x64.Build.0 = Debug|x64
|
{684863A1-3396-4D31-A731-C0725CF07F4E}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{684863A1-3396-4D31-A731-C0725CF07F4E}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{684863A1-3396-4D31-A731-C0725CF07F4E}.Debug|x64.Build.0 = Debug|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{684863A1-3396-4D31-A731-C0725CF07F4E}.Debug|x86.ActiveCfg = Debug|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Debug|x86.Build.0 = Debug|Any CPU
|
{684863A1-3396-4D31-A731-C0725CF07F4E}.Debug|x86.Build.0 = Debug|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|x64.ActiveCfg = Release|x64
|
{684863A1-3396-4D31-A731-C0725CF07F4E}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|x64.Build.0 = Release|x64
|
{684863A1-3396-4D31-A731-C0725CF07F4E}.Release|Any CPU.Build.0 = Release|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|Any CPU
|
{684863A1-3396-4D31-A731-C0725CF07F4E}.Release|x64.ActiveCfg = Release|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|Any CPU.Build.0 = MinSizeRel|Any CPU
|
{684863A1-3396-4D31-A731-C0725CF07F4E}.Release|x64.Build.0 = Release|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|x86.ActiveCfg = MinSizeRel|Any CPU
|
{684863A1-3396-4D31-A731-C0725CF07F4E}.Release|x86.ActiveCfg = Release|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|x86.Build.0 = MinSizeRel|Any CPU
|
{684863A1-3396-4D31-A731-C0725CF07F4E}.Release|x86.Build.0 = Release|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Release|x64.ActiveCfg = Release|x64
|
{45292808-4EF3-4D4A-B3F5-B75C42EE5870}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Release|x64.Build.0 = Release|x64
|
{45292808-4EF3-4D4A-B3F5-B75C42EE5870}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{45292808-4EF3-4D4A-B3F5-B75C42EE5870}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Release|Any CPU.Build.0 = Release|Any CPU
|
{45292808-4EF3-4D4A-B3F5-B75C42EE5870}.Debug|x64.Build.0 = Debug|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Release|x86.ActiveCfg = Release|Any CPU
|
{45292808-4EF3-4D4A-B3F5-B75C42EE5870}.Debug|x86.ActiveCfg = Debug|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Release|x86.Build.0 = Release|Any CPU
|
{45292808-4EF3-4D4A-B3F5-B75C42EE5870}.Debug|x86.Build.0 = Debug|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
{45292808-4EF3-4D4A-B3F5-B75C42EE5870}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|x64.Build.0 = Release|x64
|
{45292808-4EF3-4D4A-B3F5-B75C42EE5870}.Release|Any CPU.Build.0 = Release|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|Any CPU
|
{45292808-4EF3-4D4A-B3F5-B75C42EE5870}.Release|x64.ActiveCfg = Release|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|Any CPU.Build.0 = RelWithDebInfo|Any CPU
|
{45292808-4EF3-4D4A-B3F5-B75C42EE5870}.Release|x64.Build.0 = Release|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU
|
{45292808-4EF3-4D4A-B3F5-B75C42EE5870}.Release|x86.ActiveCfg = Release|x64
|
||||||
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU
|
{45292808-4EF3-4D4A-B3F5-B75C42EE5870}.Release|x86.Build.0 = Release|x64
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Debug|x64.ActiveCfg = Debug|x64
|
{AA57F8D9-7BD6-4161-881B-AD2CEF9A30F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Debug|x64.Build.0 = Debug|x64
|
{AA57F8D9-7BD6-4161-881B-AD2CEF9A30F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{AA57F8D9-7BD6-4161-881B-AD2CEF9A30F6}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{AA57F8D9-7BD6-4161-881B-AD2CEF9A30F6}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{AA57F8D9-7BD6-4161-881B-AD2CEF9A30F6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Debug|x86.Build.0 = Debug|Any CPU
|
{AA57F8D9-7BD6-4161-881B-AD2CEF9A30F6}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.MinSizeRel|x64.ActiveCfg = Release|x64
|
{AA57F8D9-7BD6-4161-881B-AD2CEF9A30F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.MinSizeRel|x64.Build.0 = Release|x64
|
{AA57F8D9-7BD6-4161-881B-AD2CEF9A30F6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|Any CPU
|
{AA57F8D9-7BD6-4161-881B-AD2CEF9A30F6}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.MinSizeRel|Any CPU.Build.0 = MinSizeRel|Any CPU
|
{AA57F8D9-7BD6-4161-881B-AD2CEF9A30F6}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.MinSizeRel|x86.ActiveCfg = MinSizeRel|Any CPU
|
{AA57F8D9-7BD6-4161-881B-AD2CEF9A30F6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.MinSizeRel|x86.Build.0 = MinSizeRel|Any CPU
|
{AA57F8D9-7BD6-4161-881B-AD2CEF9A30F6}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Release|x64.ActiveCfg = Release|x64
|
{28A26DF7-5F7A-43A2-A548-B55FEBCC3958}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Release|x64.Build.0 = Release|x64
|
{28A26DF7-5F7A-43A2-A548-B55FEBCC3958}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{28A26DF7-5F7A-43A2-A548-B55FEBCC3958}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Release|Any CPU.Build.0 = Release|Any CPU
|
{28A26DF7-5F7A-43A2-A548-B55FEBCC3958}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Release|x86.ActiveCfg = Release|Any CPU
|
{28A26DF7-5F7A-43A2-A548-B55FEBCC3958}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.Release|x86.Build.0 = Release|Any CPU
|
{28A26DF7-5F7A-43A2-A548-B55FEBCC3958}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
{28A26DF7-5F7A-43A2-A548-B55FEBCC3958}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.RelWithDebInfo|x64.Build.0 = Release|x64
|
{28A26DF7-5F7A-43A2-A548-B55FEBCC3958}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|Any CPU
|
{28A26DF7-5F7A-43A2-A548-B55FEBCC3958}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.RelWithDebInfo|Any CPU.Build.0 = RelWithDebInfo|Any CPU
|
{28A26DF7-5F7A-43A2-A548-B55FEBCC3958}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU
|
{28A26DF7-5F7A-43A2-A548-B55FEBCC3958}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{9A4D4D07-1AB6-4B2B-B111-A4F34D6C267E}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU
|
{28A26DF7-5F7A-43A2-A548-B55FEBCC3958}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|x64.ActiveCfg = Debug|x64
|
{7543386A-5EBA-4AF0-9E0F-35657B58557D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|x64.Build.0 = Debug|x64
|
{7543386A-5EBA-4AF0-9E0F-35657B58557D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{7543386A-5EBA-4AF0-9E0F-35657B58557D}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{7543386A-5EBA-4AF0-9E0F-35657B58557D}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{7543386A-5EBA-4AF0-9E0F-35657B58557D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Debug|x86.Build.0 = Debug|Any CPU
|
{7543386A-5EBA-4AF0-9E0F-35657B58557D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|x64.ActiveCfg = Debug|x64
|
{7543386A-5EBA-4AF0-9E0F-35657B58557D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|x64.Build.0 = Debug|x64
|
{7543386A-5EBA-4AF0-9E0F-35657B58557D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|Any CPU
|
{7543386A-5EBA-4AF0-9E0F-35657B58557D}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|Any CPU.Build.0 = MinSizeRel|Any CPU
|
{7543386A-5EBA-4AF0-9E0F-35657B58557D}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|x86.ActiveCfg = MinSizeRel|Any CPU
|
{7543386A-5EBA-4AF0-9E0F-35657B58557D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.MinSizeRel|x86.Build.0 = MinSizeRel|Any CPU
|
{7543386A-5EBA-4AF0-9E0F-35657B58557D}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|x64.ActiveCfg = Release|x64
|
{C13A5ABD-F739-4BE8-A2FE-511E989A5B43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|x64.Build.0 = Release|x64
|
{C13A5ABD-F739-4BE8-A2FE-511E989A5B43}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{C13A5ABD-F739-4BE8-A2FE-511E989A5B43}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|Any CPU.Build.0 = Release|Any CPU
|
{C13A5ABD-F739-4BE8-A2FE-511E989A5B43}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|x86.ActiveCfg = Release|Any CPU
|
{C13A5ABD-F739-4BE8-A2FE-511E989A5B43}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.Release|x86.Build.0 = Release|Any CPU
|
{C13A5ABD-F739-4BE8-A2FE-511E989A5B43}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
{C13A5ABD-F739-4BE8-A2FE-511E989A5B43}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|x64.Build.0 = Release|x64
|
{C13A5ABD-F739-4BE8-A2FE-511E989A5B43}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|Any CPU
|
{C13A5ABD-F739-4BE8-A2FE-511E989A5B43}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|Any CPU.Build.0 = RelWithDebInfo|Any CPU
|
{C13A5ABD-F739-4BE8-A2FE-511E989A5B43}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU
|
{C13A5ABD-F739-4BE8-A2FE-511E989A5B43}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{387566C6-C6F6-412C-A30C-9855BBCB4816}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU
|
{C13A5ABD-F739-4BE8-A2FE-511E989A5B43}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Debug|x64.ActiveCfg = Debug|x64
|
{F7C6F079-67BA-4899-9B43-D3F8C121D264}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Debug|x64.Build.0 = Debug|x64
|
{F7C6F079-67BA-4899-9B43-D3F8C121D264}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{F7C6F079-67BA-4899-9B43-D3F8C121D264}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{F7C6F079-67BA-4899-9B43-D3F8C121D264}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{F7C6F079-67BA-4899-9B43-D3F8C121D264}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Debug|x86.Build.0 = Debug|Any CPU
|
{F7C6F079-67BA-4899-9B43-D3F8C121D264}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|x64.ActiveCfg = Release|x64
|
{F7C6F079-67BA-4899-9B43-D3F8C121D264}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|x64.Build.0 = Release|x64
|
{F7C6F079-67BA-4899-9B43-D3F8C121D264}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|Any CPU
|
{F7C6F079-67BA-4899-9B43-D3F8C121D264}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|Any CPU.Build.0 = MinSizeRel|Any CPU
|
{F7C6F079-67BA-4899-9B43-D3F8C121D264}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|x86.ActiveCfg = MinSizeRel|Any CPU
|
{F7C6F079-67BA-4899-9B43-D3F8C121D264}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|x86.Build.0 = MinSizeRel|Any CPU
|
{F7C6F079-67BA-4899-9B43-D3F8C121D264}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Release|x64.ActiveCfg = Release|x64
|
{E60C119D-2919-4E2F-9D39-90DB1A8FF9A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Release|x64.Build.0 = Release|x64
|
{E60C119D-2919-4E2F-9D39-90DB1A8FF9A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{E60C119D-2919-4E2F-9D39-90DB1A8FF9A7}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Release|Any CPU.Build.0 = Release|Any CPU
|
{E60C119D-2919-4E2F-9D39-90DB1A8FF9A7}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Release|x86.ActiveCfg = Release|Any CPU
|
{E60C119D-2919-4E2F-9D39-90DB1A8FF9A7}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Release|x86.Build.0 = Release|Any CPU
|
{E60C119D-2919-4E2F-9D39-90DB1A8FF9A7}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
{E60C119D-2919-4E2F-9D39-90DB1A8FF9A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|x64.Build.0 = Release|x64
|
{E60C119D-2919-4E2F-9D39-90DB1A8FF9A7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|Any CPU
|
{E60C119D-2919-4E2F-9D39-90DB1A8FF9A7}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|Any CPU.Build.0 = RelWithDebInfo|Any CPU
|
{E60C119D-2919-4E2F-9D39-90DB1A8FF9A7}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU
|
{E60C119D-2919-4E2F-9D39-90DB1A8FF9A7}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU
|
{E60C119D-2919-4E2F-9D39-90DB1A8FF9A7}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Debug|x64.ActiveCfg = Debug|x64
|
{ECBAA198-EC93-4174-8156-BDA5F5E95042}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Debug|x64.Build.0 = Debug|x64
|
{ECBAA198-EC93-4174-8156-BDA5F5E95042}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{ECBAA198-EC93-4174-8156-BDA5F5E95042}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{ECBAA198-EC93-4174-8156-BDA5F5E95042}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{ECBAA198-EC93-4174-8156-BDA5F5E95042}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Debug|x86.Build.0 = Debug|Any CPU
|
{ECBAA198-EC93-4174-8156-BDA5F5E95042}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.MinSizeRel|x64.ActiveCfg = Release|x64
|
{ECBAA198-EC93-4174-8156-BDA5F5E95042}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.MinSizeRel|x64.Build.0 = Release|x64
|
{ECBAA198-EC93-4174-8156-BDA5F5E95042}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|Any CPU
|
{ECBAA198-EC93-4174-8156-BDA5F5E95042}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.MinSizeRel|Any CPU.Build.0 = MinSizeRel|Any CPU
|
{ECBAA198-EC93-4174-8156-BDA5F5E95042}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.MinSizeRel|x86.ActiveCfg = MinSizeRel|Any CPU
|
{ECBAA198-EC93-4174-8156-BDA5F5E95042}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.MinSizeRel|x86.Build.0 = MinSizeRel|Any CPU
|
{ECBAA198-EC93-4174-8156-BDA5F5E95042}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Release|x64.ActiveCfg = Release|x64
|
{F54AE5C0-2ECA-4151-82E6-0D7EFE88FF40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Release|x64.Build.0 = Release|x64
|
{F54AE5C0-2ECA-4151-82E6-0D7EFE88FF40}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{F54AE5C0-2ECA-4151-82E6-0D7EFE88FF40}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Release|Any CPU.Build.0 = Release|Any CPU
|
{F54AE5C0-2ECA-4151-82E6-0D7EFE88FF40}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Release|x86.ActiveCfg = Release|Any CPU
|
{F54AE5C0-2ECA-4151-82E6-0D7EFE88FF40}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.Release|x86.Build.0 = Release|Any CPU
|
{F54AE5C0-2ECA-4151-82E6-0D7EFE88FF40}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
{F54AE5C0-2ECA-4151-82E6-0D7EFE88FF40}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.RelWithDebInfo|x64.Build.0 = Release|x64
|
{F54AE5C0-2ECA-4151-82E6-0D7EFE88FF40}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|Any CPU
|
{F54AE5C0-2ECA-4151-82E6-0D7EFE88FF40}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.RelWithDebInfo|Any CPU.Build.0 = RelWithDebInfo|Any CPU
|
{F54AE5C0-2ECA-4151-82E6-0D7EFE88FF40}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU
|
{F54AE5C0-2ECA-4151-82E6-0D7EFE88FF40}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{6963C314-83C4-4667-B0D0-C2F7AE208C29}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU
|
{F54AE5C0-2ECA-4151-82E6-0D7EFE88FF40}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|x64.ActiveCfg = Debug|x64
|
{A898C6C3-F134-4AF0-AFB3-3834C58CC0D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|x64.Build.0 = Debug|x64
|
{A898C6C3-F134-4AF0-AFB3-3834C58CC0D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{A898C6C3-F134-4AF0-AFB3-3834C58CC0D7}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{A898C6C3-F134-4AF0-AFB3-3834C58CC0D7}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{A898C6C3-F134-4AF0-AFB3-3834C58CC0D7}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Debug|x86.Build.0 = Debug|Any CPU
|
{A898C6C3-F134-4AF0-AFB3-3834C58CC0D7}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|x64.ActiveCfg = Debug|x64
|
{A898C6C3-F134-4AF0-AFB3-3834C58CC0D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|x64.Build.0 = Debug|x64
|
{A898C6C3-F134-4AF0-AFB3-3834C58CC0D7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|Any CPU
|
{A898C6C3-F134-4AF0-AFB3-3834C58CC0D7}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|Any CPU.Build.0 = MinSizeRel|Any CPU
|
{A898C6C3-F134-4AF0-AFB3-3834C58CC0D7}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|x86.ActiveCfg = MinSizeRel|Any CPU
|
{A898C6C3-F134-4AF0-AFB3-3834C58CC0D7}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.MinSizeRel|x86.Build.0 = MinSizeRel|Any CPU
|
{A898C6C3-F134-4AF0-AFB3-3834C58CC0D7}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|x64.ActiveCfg = Release|x64
|
{1E296FB3-D185-4A95-A1EB-AA5B37B85C60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|x64.Build.0 = Release|x64
|
{1E296FB3-D185-4A95-A1EB-AA5B37B85C60}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{1E296FB3-D185-4A95-A1EB-AA5B37B85C60}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|Any CPU.Build.0 = Release|Any CPU
|
{1E296FB3-D185-4A95-A1EB-AA5B37B85C60}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|x86.ActiveCfg = Release|Any CPU
|
{1E296FB3-D185-4A95-A1EB-AA5B37B85C60}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.Release|x86.Build.0 = Release|Any CPU
|
{1E296FB3-D185-4A95-A1EB-AA5B37B85C60}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
{1E296FB3-D185-4A95-A1EB-AA5B37B85C60}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|x64.Build.0 = Release|x64
|
{1E296FB3-D185-4A95-A1EB-AA5B37B85C60}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|Any CPU
|
{1E296FB3-D185-4A95-A1EB-AA5B37B85C60}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|Any CPU.Build.0 = RelWithDebInfo|Any CPU
|
{1E296FB3-D185-4A95-A1EB-AA5B37B85C60}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU
|
{1E296FB3-D185-4A95-A1EB-AA5B37B85C60}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{ECD78CC5-138F-4809-A764-2358C2AC2E82}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU
|
{1E296FB3-D185-4A95-A1EB-AA5B37B85C60}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.Debug|x64.ActiveCfg = Debug|x64
|
{B6070F41-8759-448B-B56D-A7D15D489569}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.Debug|x64.Build.0 = Debug|x64
|
{B6070F41-8759-448B-B56D-A7D15D489569}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{B6070F41-8759-448B-B56D-A7D15D489569}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{B6070F41-8759-448B-B56D-A7D15D489569}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{B6070F41-8759-448B-B56D-A7D15D489569}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.Debug|x86.Build.0 = Debug|Any CPU
|
{B6070F41-8759-448B-B56D-A7D15D489569}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.MinSizeRel|x64.ActiveCfg = Debug|x64
|
{B6070F41-8759-448B-B56D-A7D15D489569}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.MinSizeRel|x64.Build.0 = Debug|x64
|
{B6070F41-8759-448B-B56D-A7D15D489569}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|Any CPU
|
{B6070F41-8759-448B-B56D-A7D15D489569}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.MinSizeRel|Any CPU.Build.0 = MinSizeRel|Any CPU
|
{B6070F41-8759-448B-B56D-A7D15D489569}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.MinSizeRel|x86.ActiveCfg = MinSizeRel|Any CPU
|
{B6070F41-8759-448B-B56D-A7D15D489569}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.MinSizeRel|x86.Build.0 = MinSizeRel|Any CPU
|
{B6070F41-8759-448B-B56D-A7D15D489569}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.Release|x64.ActiveCfg = Release|x64
|
{B2D721AB-920C-4CD6-8DBF-6778A115A449}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.Release|x64.Build.0 = Release|x64
|
{B2D721AB-920C-4CD6-8DBF-6778A115A449}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{B2D721AB-920C-4CD6-8DBF-6778A115A449}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.Release|Any CPU.Build.0 = Release|Any CPU
|
{B2D721AB-920C-4CD6-8DBF-6778A115A449}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.Release|x86.ActiveCfg = Release|Any CPU
|
{B2D721AB-920C-4CD6-8DBF-6778A115A449}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.Release|x86.Build.0 = Release|Any CPU
|
{B2D721AB-920C-4CD6-8DBF-6778A115A449}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
{B2D721AB-920C-4CD6-8DBF-6778A115A449}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.RelWithDebInfo|x64.Build.0 = Release|x64
|
{B2D721AB-920C-4CD6-8DBF-6778A115A449}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|Any CPU
|
{B2D721AB-920C-4CD6-8DBF-6778A115A449}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.RelWithDebInfo|Any CPU.Build.0 = RelWithDebInfo|Any CPU
|
{B2D721AB-920C-4CD6-8DBF-6778A115A449}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU
|
{B2D721AB-920C-4CD6-8DBF-6778A115A449}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{3201359D-C071-4089-9EDE-B04D759F1508}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU
|
{B2D721AB-920C-4CD6-8DBF-6778A115A449}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Debug|x64.ActiveCfg = Debug|x64
|
{38EE36C6-892C-4C94-8BB0-1ACB164E1F20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Debug|x64.Build.0 = Debug|x64
|
{38EE36C6-892C-4C94-8BB0-1ACB164E1F20}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{38EE36C6-892C-4C94-8BB0-1ACB164E1F20}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{38EE36C6-892C-4C94-8BB0-1ACB164E1F20}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{38EE36C6-892C-4C94-8BB0-1ACB164E1F20}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Debug|x86.Build.0 = Debug|Any CPU
|
{38EE36C6-892C-4C94-8BB0-1ACB164E1F20}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.MinSizeRel|x64.ActiveCfg = Debug|x64
|
{38EE36C6-892C-4C94-8BB0-1ACB164E1F20}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.MinSizeRel|x64.Build.0 = Debug|x64
|
{38EE36C6-892C-4C94-8BB0-1ACB164E1F20}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|Any CPU
|
{38EE36C6-892C-4C94-8BB0-1ACB164E1F20}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.MinSizeRel|Any CPU.Build.0 = MinSizeRel|Any CPU
|
{38EE36C6-892C-4C94-8BB0-1ACB164E1F20}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.MinSizeRel|x86.ActiveCfg = MinSizeRel|Any CPU
|
{38EE36C6-892C-4C94-8BB0-1ACB164E1F20}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.MinSizeRel|x86.Build.0 = MinSizeRel|Any CPU
|
{38EE36C6-892C-4C94-8BB0-1ACB164E1F20}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Release|x64.ActiveCfg = Release|x64
|
{D432F3E9-3D2F-4623-B7B9-CEBA6701FFC3}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Release|x64.Build.0 = Release|x64
|
{D432F3E9-3D2F-4623-B7B9-CEBA6701FFC3}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{D432F3E9-3D2F-4623-B7B9-CEBA6701FFC3}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Release|Any CPU.Build.0 = Release|Any CPU
|
{D432F3E9-3D2F-4623-B7B9-CEBA6701FFC3}.Debug|x64.Build.0 = Debug|x64
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Release|x86.ActiveCfg = Release|Any CPU
|
{D432F3E9-3D2F-4623-B7B9-CEBA6701FFC3}.Debug|x86.ActiveCfg = Debug|x64
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Release|x86.Build.0 = Release|Any CPU
|
{D432F3E9-3D2F-4623-B7B9-CEBA6701FFC3}.Debug|x86.Build.0 = Debug|x64
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
{D432F3E9-3D2F-4623-B7B9-CEBA6701FFC3}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.RelWithDebInfo|x64.Build.0 = Release|x64
|
{D432F3E9-3D2F-4623-B7B9-CEBA6701FFC3}.Release|Any CPU.Build.0 = Release|x64
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|Any CPU
|
{D432F3E9-3D2F-4623-B7B9-CEBA6701FFC3}.Release|x64.ActiveCfg = Release|x64
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.RelWithDebInfo|Any CPU.Build.0 = RelWithDebInfo|Any CPU
|
{D432F3E9-3D2F-4623-B7B9-CEBA6701FFC3}.Release|x64.Build.0 = Release|x64
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU
|
{D432F3E9-3D2F-4623-B7B9-CEBA6701FFC3}.Release|x86.ActiveCfg = Release|x64
|
||||||
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU
|
{D432F3E9-3D2F-4623-B7B9-CEBA6701FFC3}.Release|x86.Build.0 = Release|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{DD00F5D5-6C2F-4FDA-AE3D-25CF01A9A224}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.Debug|x64.Build.0 = Debug|Any CPU
|
{DD00F5D5-6C2F-4FDA-AE3D-25CF01A9A224}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{DD00F5D5-6C2F-4FDA-AE3D-25CF01A9A224}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{DD00F5D5-6C2F-4FDA-AE3D-25CF01A9A224}.Debug|x64.Build.0 = Debug|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{DD00F5D5-6C2F-4FDA-AE3D-25CF01A9A224}.Debug|x86.ActiveCfg = Debug|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.Debug|x86.Build.0 = Debug|Any CPU
|
{DD00F5D5-6C2F-4FDA-AE3D-25CF01A9A224}.Debug|x86.Build.0 = Debug|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
{DD00F5D5-6C2F-4FDA-AE3D-25CF01A9A224}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
{DD00F5D5-6C2F-4FDA-AE3D-25CF01A9A224}.Release|Any CPU.Build.0 = Release|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|Any CPU
|
{DD00F5D5-6C2F-4FDA-AE3D-25CF01A9A224}.Release|x64.ActiveCfg = Release|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.MinSizeRel|Any CPU.Build.0 = MinSizeRel|Any CPU
|
{DD00F5D5-6C2F-4FDA-AE3D-25CF01A9A224}.Release|x64.Build.0 = Release|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.MinSizeRel|x86.ActiveCfg = MinSizeRel|Any CPU
|
{DD00F5D5-6C2F-4FDA-AE3D-25CF01A9A224}.Release|x86.ActiveCfg = Release|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.MinSizeRel|x86.Build.0 = MinSizeRel|Any CPU
|
{DD00F5D5-6C2F-4FDA-AE3D-25CF01A9A224}.Release|x86.Build.0 = Release|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.Release|x64.ActiveCfg = Release|Any CPU
|
{2B8243FF-60C6-4607-8AAE-7762D29B0A48}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.Release|x64.Build.0 = Release|Any CPU
|
{2B8243FF-60C6-4607-8AAE-7762D29B0A48}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{2B8243FF-60C6-4607-8AAE-7762D29B0A48}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.Release|Any CPU.Build.0 = Release|Any CPU
|
{2B8243FF-60C6-4607-8AAE-7762D29B0A48}.Debug|x64.Build.0 = Debug|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.Release|x86.ActiveCfg = Release|Any CPU
|
{2B8243FF-60C6-4607-8AAE-7762D29B0A48}.Debug|x86.ActiveCfg = Debug|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.Release|x86.Build.0 = Release|Any CPU
|
{2B8243FF-60C6-4607-8AAE-7762D29B0A48}.Debug|x86.Build.0 = Debug|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
{2B8243FF-60C6-4607-8AAE-7762D29B0A48}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
{2B8243FF-60C6-4607-8AAE-7762D29B0A48}.Release|Any CPU.Build.0 = Release|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|Any CPU
|
{2B8243FF-60C6-4607-8AAE-7762D29B0A48}.Release|x64.ActiveCfg = Release|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.RelWithDebInfo|Any CPU.Build.0 = RelWithDebInfo|Any CPU
|
{2B8243FF-60C6-4607-8AAE-7762D29B0A48}.Release|x64.Build.0 = Release|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU
|
{2B8243FF-60C6-4607-8AAE-7762D29B0A48}.Release|x86.ActiveCfg = Release|x64
|
||||||
{4E4F491F-C688-43C4-88DA-AC92BC5FA1B8}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU
|
{2B8243FF-60C6-4607-8AAE-7762D29B0A48}.Release|x86.Build.0 = Release|x64
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.Debug|x64.Build.0 = Debug|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.Debug|x86.Build.0 = Debug|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.MinSizeRel|Any CPU.Build.0 = MinSizeRel|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.MinSizeRel|x86.ActiveCfg = MinSizeRel|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.MinSizeRel|x86.Build.0 = MinSizeRel|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.Release|x64.ActiveCfg = Release|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.Release|x64.Build.0 = Release|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.Release|Any CPU.Build.0 = Release|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.Release|x86.ActiveCfg = Release|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.Release|x86.Build.0 = Release|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.RelWithDebInfo|Any CPU.Build.0 = RelWithDebInfo|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
|
||||||
{2AC54ADC-3246-427E-9CA9-FEA2DBCB9432}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU
|
{00D21F82-61F4-467F-B125-268018A185E5}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.Debug|x64.Build.0 = Debug|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.Debug|x86.Build.0 = Debug|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.MinSizeRel|Any CPU.Build.0 = MinSizeRel|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.MinSizeRel|x86.ActiveCfg = MinSizeRel|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.MinSizeRel|x86.Build.0 = MinSizeRel|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.Release|x64.ActiveCfg = Release|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.Release|x64.Build.0 = Release|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.Release|Any CPU.Build.0 = Release|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.Release|x86.ActiveCfg = Release|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.Release|x86.Build.0 = Release|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.RelWithDebInfo|Any CPU.Build.0 = RelWithDebInfo|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
|
||||||
{4E96E5CC-7791-40B3-A8A1-C34FBB736B3B}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU
|
{513A3F0D-46B5-4AC2-B700-8671933F6347}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.Debug|x64.Build.0 = Debug|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.Debug|x86.Build.0 = Debug|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.MinSizeRel|Any CPU.Build.0 = MinSizeRel|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.MinSizeRel|x86.ActiveCfg = MinSizeRel|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.MinSizeRel|x86.Build.0 = MinSizeRel|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.Release|x64.ActiveCfg = Release|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.Release|x64.Build.0 = Release|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.Release|Any CPU.Build.0 = Release|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.Release|x86.ActiveCfg = Release|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.Release|x86.Build.0 = Release|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.RelWithDebInfo|Any CPU.Build.0 = RelWithDebInfo|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
|
||||||
{51C40BA9-F226-4A35-939D-1ED6F5FF7299}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU
|
{D419D996-9870-4FF5-82AD-08370D1C945F}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.Debug|x64.Build.0 = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.Debug|x86.Build.0 = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.Release|x64.ActiveCfg = Release|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.Release|x64.Build.0 = Release|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.Release|Any CPU.Build.0 = Release|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.Release|x86.ActiveCfg = Release|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.Release|x86.Build.0 = Release|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
|
||||||
{5DE3B533-DCE6-4BF4-8F7E-08C440E177B4}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.Debug|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.Debug|x64.Build.0 = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.Debug|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.Debug|x86.Build.0 = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.Release|x64.ActiveCfg = Release|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.Release|x64.Build.0 = Release|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.Release|x86.ActiveCfg = Release|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.Release|x86.Build.0 = Release|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{90A48718-F6A7-4747-97EA-89632B451008}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.Debug|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.Debug|x64.Build.0 = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.Debug|x86.Build.0 = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.Release|x64.ActiveCfg = Release|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.Release|x64.Build.0 = Release|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.Release|x86.ActiveCfg = Release|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.Release|x86.Build.0 = Release|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(NestedProjects) = preSolution
|
GlobalSection(NestedProjects) = preSolution
|
||||||
|
{D7C6B9C7-1058-B1EA-FEE6-34C56B05AEDB} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
|
{684863A1-3396-4D31-A731-C0725CF07F4E} = {D7C6B9C7-1058-B1EA-FEE6-34C56B05AEDB}
|
||||||
|
{45292808-4EF3-4D4A-B3F5-B75C42EE5870} = {D7C6B9C7-1058-B1EA-FEE6-34C56B05AEDB}
|
||||||
|
{AA57F8D9-7BD6-4161-881B-AD2CEF9A30F6} = {D7C6B9C7-1058-B1EA-FEE6-34C56B05AEDB}
|
||||||
|
{28A26DF7-5F7A-43A2-A548-B55FEBCC3958} = {D7C6B9C7-1058-B1EA-FEE6-34C56B05AEDB}
|
||||||
|
{7543386A-5EBA-4AF0-9E0F-35657B58557D} = {D7C6B9C7-1058-B1EA-FEE6-34C56B05AEDB}
|
||||||
{60E0D592-FFB3-0D0A-C4AA-E88919B48F9D} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
{60E0D592-FFB3-0D0A-C4AA-E88919B48F9D} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
{1A5B8C5D-BADC-457E-819F-0050C44FE4D3} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
{C13A5ABD-F739-4BE8-A2FE-511E989A5B43} = {60E0D592-FFB3-0D0A-C4AA-E88919B48F9D}
|
||||||
{2A0FBDE0-D870-4567-85BD-F7793A5862C6} = {1A5B8C5D-BADC-457E-819F-0050C44FE4D3}
|
{F7C6F079-67BA-4899-9B43-D3F8C121D264} = {60E0D592-FFB3-0D0A-C4AA-E88919B48F9D}
|
||||||
EndGlobalSection
|
{E60C119D-2919-4E2F-9D39-90DB1A8FF9A7} = {60E0D592-FFB3-0D0A-C4AA-E88919B48F9D}
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
{ECBAA198-EC93-4174-8156-BDA5F5E95042} = {60E0D592-FFB3-0D0A-C4AA-E88919B48F9D}
|
||||||
SolutionGuid = {422D1620-0166-4C26-9A81-CA8A2EB1AB58}
|
{F54AE5C0-2ECA-4151-82E6-0D7EFE88FF40} = {60E0D592-FFB3-0D0A-C4AA-E88919B48F9D}
|
||||||
EndGlobalSection
|
{A898C6C3-F134-4AF0-AFB3-3834C58CC0D7} = {60E0D592-FFB3-0D0A-C4AA-E88919B48F9D}
|
||||||
GlobalSection(Performance) = preSolution
|
{1E296FB3-D185-4A95-A1EB-AA5B37B85C60} = {60E0D592-FFB3-0D0A-C4AA-E88919B48F9D}
|
||||||
HasPerformanceSessions = true
|
{B6070F41-8759-448B-B56D-A7D15D489569} = {60E0D592-FFB3-0D0A-C4AA-E88919B48F9D}
|
||||||
|
{B2D721AB-920C-4CD6-8DBF-6778A115A449} = {60E0D592-FFB3-0D0A-C4AA-E88919B48F9D}
|
||||||
|
{38EE36C6-892C-4C94-8BB0-1ACB164E1F20} = {60E0D592-FFB3-0D0A-C4AA-E88919B48F9D}
|
||||||
|
{C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
|
{42C014A0-00C5-0620-8552-38912E891A7F} = {C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295}
|
||||||
|
{D432F3E9-3D2F-4623-B7B9-CEBA6701FFC3} = {42C014A0-00C5-0620-8552-38912E891A7F}
|
||||||
|
{DD00F5D5-6C2F-4FDA-AE3D-25CF01A9A224} = {C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295}
|
||||||
|
{2B8243FF-60C6-4607-8AAE-7762D29B0A48} = {C5A3B5EA-BE9F-76E5-E9B8-8A22B289B295}
|
||||||
|
{00D21F82-61F4-467F-B125-268018A185E5} = {D7C6B9C7-1058-B1EA-FEE6-34C56B05AEDB}
|
||||||
|
{513A3F0D-46B5-4AC2-B700-8671933F6347} = {D7C6B9C7-1058-B1EA-FEE6-34C56B05AEDB}
|
||||||
|
{D419D996-9870-4FF5-82AD-08370D1C945F} = {D7C6B9C7-1058-B1EA-FEE6-34C56B05AEDB}
|
||||||
|
{697BC3A3-1A98-43D3-A6E8-BB39A05EA049} = {D7C6B9C7-1058-B1EA-FEE6-34C56B05AEDB}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
+3
-3
@@ -102,10 +102,10 @@ namespace BCG
|
|||||||
List<ColumnInfo> col_info = new List<ColumnInfo>();
|
List<ColumnInfo> col_info = new List<ColumnInfo>();
|
||||||
col_info.Add(new ColumnInfo("id", col_index++, typeof(int)));
|
col_info.Add(new ColumnInfo("id", col_index++, typeof(int)));
|
||||||
foreach (Pair<string, Type> p in group_by_col_info)
|
foreach (Pair<string, Type> p in group_by_col_info)
|
||||||
col_info.Add(new ColumnInfo(p.first, col_index++, p.second));
|
col_info.Add(new ColumnInfo(p.first ?? string.Empty, col_index++, ExceptionAssert.NotNull(p.second)));
|
||||||
foreach (string tc_prefix in tc_prefixes)
|
foreach (string tc_prefix in tc_prefixes)
|
||||||
foreach (Pair<string, Type> p in _cols_per_transposed)
|
foreach (Pair<string, Type> p in _cols_per_transposed)
|
||||||
col_info.Add(new ColumnInfo(_get_full_column_name(tc_prefix, p.first ?? string.Empty), col_index++, p.second));
|
col_info.Add(new ColumnInfo(_get_full_column_name(tc_prefix, p.first ?? string.Empty), col_index++, ExceptionAssert.NotNull(p.second)));
|
||||||
IBlueTableSchema schema = new BlueTableSchema(col_info.ToArray(), "xy_transposed_" + table_name);
|
IBlueTableSchema schema = new BlueTableSchema(col_info.ToArray(), "xy_transposed_" + table_name);
|
||||||
if (_schema == null)
|
if (_schema == null)
|
||||||
_schema = schema;
|
_schema = schema;
|
||||||
@@ -182,7 +182,7 @@ namespace BCG
|
|||||||
if (_transpsed_col_value_comparer_wrapper != null)
|
if (_transpsed_col_value_comparer_wrapper != null)
|
||||||
tc_values.Sort(_transpsed_col_value_comparer_wrapper);
|
tc_values.Sort(_transpsed_col_value_comparer_wrapper);
|
||||||
List<string> prefixes = new List<string>();
|
List<string> prefixes = new List<string>();
|
||||||
foreach (Pair<int, object[]> p in tc_values)
|
foreach (Pair<int, object?[]> p in tc_values)
|
||||||
prefixes.Add(tc_prefixes[p.first]);
|
prefixes.Add(tc_prefixes[p.first]);
|
||||||
_set_schema(prefixes, group_by_col_info, table_name);
|
_set_schema(prefixes, group_by_col_info, table_name);
|
||||||
BlueTable result = new BlueTable(_schema);
|
BlueTable result = new BlueTable(_schema);
|
||||||
|
|||||||
+25
-19
@@ -1,17 +1,17 @@
|
|||||||
|
using Spark.Core.Diagnostics;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
using BCG;
|
|
||||||
using BCG.Utilities;
|
|
||||||
|
|
||||||
namespace BCG
|
namespace BCG
|
||||||
{
|
{
|
||||||
public class ConcatenateColumnsMapper : IStreamMapper
|
public class ConcatenateColumnsMapper : IStreamMapper
|
||||||
{
|
{
|
||||||
protected IDictionary myTempColMap = new SortedList ();
|
protected IDictionary myTempColMap = new SortedList ();
|
||||||
protected ArrayList myColMap;
|
protected ArrayList? myColMap;
|
||||||
protected BlueTableSchema mySchema;
|
protected BlueTableSchema? mySchema;
|
||||||
|
|
||||||
public ConcatenateColumnsMapper(params string [] columnDefs)
|
public ConcatenateColumnsMapper(params string [] columnDefs)
|
||||||
{
|
{
|
||||||
@@ -55,11 +55,7 @@ namespace BCG
|
|||||||
myColMap = new ArrayList (myTempColMap.Count);
|
myColMap = new ArrayList (myTempColMap.Count);
|
||||||
foreach (DictionaryEntry de in myTempColMap)
|
foreach (DictionaryEntry de in myTempColMap)
|
||||||
{
|
{
|
||||||
string[] cols = de.Value as string[];
|
myColMap.Add(Array.ConvertAll((string[])de.Value!, c => inputSchema[c].colNo));
|
||||||
ArrayList temp = new ArrayList ();
|
|
||||||
foreach (string col in cols)
|
|
||||||
temp.Add (inputSchema[col].colNo);
|
|
||||||
myColMap.Add (temp.ToArray(typeof(int)) as int[]);
|
|
||||||
}
|
}
|
||||||
myTempColMap.Clear ();
|
myTempColMap.Clear ();
|
||||||
}
|
}
|
||||||
@@ -72,6 +68,8 @@ namespace BCG
|
|||||||
|
|
||||||
public virtual IBlueRow map (IBlueRow row)
|
public virtual IBlueRow map (IBlueRow row)
|
||||||
{
|
{
|
||||||
|
requireSchema();
|
||||||
|
requireColMap();
|
||||||
object[] retVal = new object[mySchema.columnInfo.Length];
|
object[] retVal = new object[mySchema.columnInfo.Length];
|
||||||
row.CopyTo (retVal, myColMap.Count);
|
row.CopyTo (retVal, myColMap.Count);
|
||||||
for (int colNo = 0; colNo < myColMap.Count; colNo ++)
|
for (int colNo = 0; colNo < myColMap.Count; colNo ++)
|
||||||
@@ -90,11 +88,21 @@ namespace BCG
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
protected virtual object myGetConcatValue (IBlueRow row, int colNo)
|
protected virtual object myGetConcatValue (IBlueRow row, int colNo)
|
||||||
{
|
{
|
||||||
|
requireColMap();
|
||||||
StringBuilder b = new StringBuilder();
|
StringBuilder b = new StringBuilder();
|
||||||
foreach (int cn in myColMap[colNo] as int[])
|
foreach (int cn in (int[])myColMap[colNo]!) {
|
||||||
b.Append(row[cn].ToString());
|
b.Append(row[cn]?.ToString());
|
||||||
|
}
|
||||||
return b.ToString ();
|
return b.ToString ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[MemberNotNull(nameof(myColMap))]
|
||||||
|
protected void requireColMap() =>
|
||||||
|
ExceptionAssert.NotNull(myColMap);
|
||||||
|
|
||||||
|
[MemberNotNull(nameof(mySchema))]
|
||||||
|
void requireSchema() =>
|
||||||
|
ExceptionAssert.NotNull(mySchema);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ConcatenateColumnsMapperForSameDataSet : ConcatenateColumnsMapper
|
public class ConcatenateColumnsMapperForSameDataSet : ConcatenateColumnsMapper
|
||||||
@@ -107,23 +115,21 @@ namespace BCG
|
|||||||
myDicts = new HashTableND [columnDefs.Length];
|
myDicts = new HashTableND [columnDefs.Length];
|
||||||
int i = 0;
|
int i = 0;
|
||||||
foreach (DictionaryEntry de in myTempColMap)
|
foreach (DictionaryEntry de in myTempColMap)
|
||||||
myDicts[i++] = new HashTableND ((de.Value as string[]).Length);
|
myDicts[i++] = new HashTableND(((string[])de.Value!).Length);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override object myGetConcatValue (IBlueRow row, int colNo)
|
protected override object myGetConcatValue (IBlueRow row, int colNo)
|
||||||
{
|
{
|
||||||
int[] cols = myColMap[colNo] as int[];
|
requireColMap();
|
||||||
object[] vals = new object[cols.Length];
|
|
||||||
for (int i = 0; i < vals.Length; i++)
|
|
||||||
vals[i] = row[cols[i]];
|
|
||||||
HashTableND ht = myDicts[colNo];
|
HashTableND ht = myDicts[colNo];
|
||||||
object rv = ht.getValue (vals);
|
var vals = Array.ConvertAll((int[])myColMap[colNo]!, c => row[c]);
|
||||||
|
var rv = ht.getValue(vals);
|
||||||
if (rv != null)
|
if (rv != null)
|
||||||
return rv;
|
return rv;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rv = base.myGetConcatValue (row, colNo);
|
rv = base.myGetConcatValue (row, colNo);
|
||||||
object[] args = new object[vals.Length + 1];
|
var args = new object?[vals.Length + 1];
|
||||||
vals.CopyTo (args, 0);
|
vals.CopyTo (args, 0);
|
||||||
args[args.Length-1] = rv;
|
args[args.Length-1] = rv;
|
||||||
ht.add (args);
|
ht.add (args);
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace BCG
|
|||||||
{
|
{
|
||||||
IDictionary<string, double> columnSums = new Dictionary<string, double>();
|
IDictionary<string, double> columnSums = new Dictionary<string, double>();
|
||||||
|
|
||||||
IBlueRow resultRow = null;
|
IBlueRow? resultRow = null;
|
||||||
foreach (IBlueRow row in rows)
|
foreach (IBlueRow row in rows)
|
||||||
{
|
{
|
||||||
resultRow = row;
|
resultRow = row;
|
||||||
@@ -29,7 +29,7 @@ namespace BCG
|
|||||||
{
|
{
|
||||||
double sum = 0.0f;
|
double sum = 0.0f;
|
||||||
columnSums.TryGetValue(colName, out sum);
|
columnSums.TryGetValue(colName, out sum);
|
||||||
sum += (double) row[colName];
|
sum += (double)row[colName]!;
|
||||||
columnSums[colName] = sum;
|
columnSums[colName] = sum;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,3 @@
|
|||||||
using System;
|
|
||||||
using System.Collections;
|
|
||||||
|
|
||||||
using BCG.Utilities;
|
|
||||||
|
|
||||||
namespace BCG
|
namespace BCG
|
||||||
{
|
{
|
||||||
public class DistinctRowEvaluator : GroupByEvaluator
|
public class DistinctRowEvaluator : GroupByEvaluator
|
||||||
@@ -14,10 +9,8 @@ namespace BCG
|
|||||||
public DistinctRowEvaluator(string colMapExpression, string[] columnNames)
|
public DistinctRowEvaluator(string colMapExpression, string[] columnNames)
|
||||||
: base (colMapExpression, null, columnNames) {}
|
: base (colMapExpression, null, columnNames) {}
|
||||||
|
|
||||||
|
public override IBlueRow? evaluate(IDataPacket packet) {
|
||||||
public override IBlueRow evaluate (DataPacket packet)
|
myOutputTable ??= new GroupByOutputTable(packet.Schema);
|
||||||
{
|
|
||||||
myOutputTable = myOutputTable == null ? new GroupByOutputTable (packet.schema) : myOutputTable;
|
|
||||||
string hashString = GroupByStream.getRepString (packet, myGroupByCols);
|
string hashString = GroupByStream.getRepString (packet, myGroupByCols);
|
||||||
if (packet.newRows.Count == 0)
|
if (packet.newRows.Count == 0)
|
||||||
//if there are no rows for this group we remove the group from the output table
|
//if there are no rows for this group we remove the group from the output table
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ namespace BCG {
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public event FilterChangeDelegate onFilterChange;
|
public event FilterChangeDelegate? onFilterChange;
|
||||||
|
|
||||||
#region IStreamFilter
|
#region IStreamFilter
|
||||||
public bool filter(IBlueRow row) {
|
public bool filter(IBlueRow row) {
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace bts.SilverPine {
|
|||||||
operations = operations_;
|
operations = operations_;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IBlueRow group_by(List<IBlueRow> rows, MultiRowOpHelper parameters) {
|
public static IBlueRow? group_by(List<IBlueRow> rows, MultiRowOpHelper parameters) {
|
||||||
if (rows.Count() == 0) {
|
if (rows.Count() == 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -73,7 +73,7 @@ namespace bts.SilverPine {
|
|||||||
// rolling_rows are the rolling window of rows. the 0th row is the one thats gettin
|
// rolling_rows are the rolling window of rows. the 0th row is the one thats gettin
|
||||||
// calculated. rows 1 - n-1 are its window rows. the schema is based on the operations.
|
// calculated. rows 1 - n-1 are its window rows. the schema is based on the operations.
|
||||||
|
|
||||||
public IBlueRow rolling_calc(List<IBlueRow> rolling_rows) {
|
public IBlueRow? rolling_calc(List<IBlueRow> rolling_rows) {
|
||||||
if (rolling_rows.Count() == 0) {
|
if (rolling_rows.Count() == 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -123,4 +123,4 @@ namespace bts.SilverPine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
using System;
|
using Bts.DataStreamCore;
|
||||||
|
|
||||||
namespace BCG
|
namespace BCG
|
||||||
{
|
{
|
||||||
@@ -9,18 +9,18 @@ namespace BCG
|
|||||||
public abstract class GroupByEvaluator : IGroupByEvaluator
|
public abstract class GroupByEvaluator : IGroupByEvaluator
|
||||||
{
|
{
|
||||||
protected string[] myGroupByCols;
|
protected string[] myGroupByCols;
|
||||||
protected string myOutputColumn;
|
protected string? myOutputColumn;
|
||||||
protected GroupByOutputTable myOutputTable;
|
protected GroupByOutputTable? myOutputTable;
|
||||||
protected string myColMapExpression;
|
protected string? myColMapExpression;
|
||||||
|
|
||||||
#region constructors
|
#region constructors
|
||||||
public GroupByEvaluator (string outputCol, string[] groupByCols)
|
public GroupByEvaluator (string? outputCol, string[] groupByCols)
|
||||||
{
|
{
|
||||||
myOutputColumn = outputCol;
|
myOutputColumn = outputCol;
|
||||||
myGroupByCols = groupByCols;
|
myGroupByCols = groupByCols;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GroupByEvaluator (string colMapExpression, string outputCol, string[] groupByCols)
|
public GroupByEvaluator (string colMapExpression, string? outputCol, string[] groupByCols)
|
||||||
: this (outputCol, groupByCols) {myColMapExpression = colMapExpression;}
|
: this (outputCol, groupByCols) {myColMapExpression = colMapExpression;}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ namespace BCG
|
|||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract IBlueRow evaluate (DataPacket dp) ;
|
public abstract IBlueRow? evaluate(IDataPacket dp);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Helper methods
|
#region Helper methods
|
||||||
@@ -52,21 +52,20 @@ namespace BCG
|
|||||||
/// <param name="r"></param>
|
/// <param name="r"></param>
|
||||||
/// <param name="id"></param>
|
/// <param name="id"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
protected IBlueRow myProject (IBlueRow r, int id)
|
protected IBlueRow? myProject(IBlueRow? r, int id) =>
|
||||||
{
|
r is null
|
||||||
return r == null ? null :
|
? null
|
||||||
myColMapExpression == null || myColMapExpression.Length < 1 ?
|
: myColMapExpression is null || myColMapExpression.Length < 1
|
||||||
BlueDataUtility.getNewReplacedRow (r, id, "id") :
|
? BlueDataUtility.getNewReplacedRow(r, id, "id")
|
||||||
BlueDataUtility.getNewReplacedRow(myProjectRow (r, myColMapExpression),
|
: BlueDataUtility.getNewReplacedRow(myProjectRow(r, myColMapExpression), id, "id");
|
||||||
id, "id");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Projects the id, conserving the id
|
/// Projects the id, conserving the id
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="r"></param>
|
/// <param name="r"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
protected IBlueRow myProject (IBlueRow r) {return myProject (r, r == null ? Int32.MinValue : (int)r["id"]);}
|
protected IBlueRow? myProject(IBlueRow? r) =>
|
||||||
|
myProject(r, r is null ? int.MinValue : r.Id());
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
IBlueRow myProjectRow (IBlueRow r, string colMapExpression) =>
|
IBlueRow myProjectRow (IBlueRow r, string colMapExpression) =>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
using Bts.DataStreamCore;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using BCG.Utilities;
|
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
|
||||||
namespace BCG
|
namespace BCG
|
||||||
@@ -22,10 +23,12 @@ namespace BCG
|
|||||||
/// <param name="groupRepString"></param>
|
/// <param name="groupRepString"></param>
|
||||||
public void addRow (IBlueRow row, string groupRepString)
|
public void addRow (IBlueRow row, string groupRepString)
|
||||||
{
|
{
|
||||||
if (myDict[groupRepString] != null)
|
var grp = myDict[groupRepString];
|
||||||
myTable.deleteRow ((IBlueRow)myDict[groupRepString]);
|
if (grp is not null) {
|
||||||
|
myTable.deleteRow((IBlueRow)grp);
|
||||||
|
}
|
||||||
myTable.addRow (row);
|
myTable.addRow (row);
|
||||||
myDict[groupRepString] = myTable[(int)row["id"]];
|
myDict[groupRepString] = myTable[row.Id()];
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -35,7 +38,7 @@ namespace BCG
|
|||||||
public void removeRow (string groupRepString)
|
public void removeRow (string groupRepString)
|
||||||
{
|
{
|
||||||
// BlueEventLog.logAssert (myDict[groupRepString] != null);
|
// BlueEventLog.logAssert (myDict[groupRepString] != null);
|
||||||
myTable.deleteRow ((IBlueRow)myDict[groupRepString]);
|
myTable.deleteRow ((IBlueRow)myDict[groupRepString]!);
|
||||||
myDict.Remove (groupRepString);
|
myDict.Remove (groupRepString);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,11 +51,8 @@ namespace BCG
|
|||||||
myDict.Clear ();
|
myDict.Clear ();
|
||||||
}
|
}
|
||||||
|
|
||||||
public IBlueRow getRow (string groupRepString)
|
public IBlueRow? getRow(string groupRepString) =>
|
||||||
{
|
myDict[groupRepString] as IBlueRow;
|
||||||
return myDict[groupRepString] == null ? null :
|
|
||||||
myDict[groupRepString] as IBlueRow;
|
|
||||||
}
|
|
||||||
|
|
||||||
#region IBlueRowCollection members
|
#region IBlueRowCollection members
|
||||||
public IBlueRow this[int id] {get{return myTable[id];}}
|
public IBlueRow this[int id] {get{return myTable[id];}}
|
||||||
|
|||||||
@@ -1,19 +1,22 @@
|
|||||||
|
using Spark.Core.Diagnostics;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using BCG.Utilities;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace BCG {
|
namespace BCG {
|
||||||
internal class GroupByStream : MethodDrivenStream {
|
internal class GroupByStream : MethodDrivenStream {
|
||||||
private class MyFuncGroupByEvaluator : IGroupByEvaluator {
|
private class MyFuncGroupByEvaluator : IGroupByEvaluator {
|
||||||
private string[] _groupby_cols;
|
private string[] _groupby_cols;
|
||||||
private Func<DataPacket, IBlueRow> _groupby_func;
|
readonly Func<IDataPacket, IBlueRow> _groupby_func;
|
||||||
public MyFuncGroupByEvaluator(IEnumerable<string> groupby_cols, Func<DataPacket, IBlueRow> groupby_func) {
|
public MyFuncGroupByEvaluator(IEnumerable<string> groupby_cols, Func<IDataPacket, IBlueRow> groupby_func) {
|
||||||
_groupby_cols = groupby_cols.ToArray();
|
_groupby_cols = groupby_cols.ToArray();
|
||||||
_groupby_func = groupby_func;
|
_groupby_func = groupby_func;
|
||||||
}
|
}
|
||||||
public IBlueRow evaluate(DataPacket packet) { return _groupby_func(packet); }
|
public IBlueRow evaluate(IDataPacket packet) =>
|
||||||
|
_groupby_func(packet);
|
||||||
|
|
||||||
public string[] groupByColumns { get { return _groupby_cols; } }
|
public string[] groupByColumns { get { return _groupby_cols; } }
|
||||||
|
|
||||||
@@ -25,14 +28,15 @@ namespace BCG {
|
|||||||
/// Serves as a quick way to access all rows belonging to the same group
|
/// Serves as a quick way to access all rows belonging to the same group
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private bool myIdGuard = true;
|
private bool myIdGuard = true;
|
||||||
private RowDictionaryTable myBookKeepingTable;
|
RowDictionaryTable? myBookKeepingTable;
|
||||||
private IGroupByEvaluator myGroupByEvaluator;
|
private IGroupByEvaluator myGroupByEvaluator;
|
||||||
private IBlueTableSchema mySchema; //input schema, as output schema can differ (IGroupByEvaluator's
|
// input schema, as output schema can differ (IGroupByEvaluator's
|
||||||
|
IBlueTableSchema? mySchema;
|
||||||
//can map a schema to another
|
//can map a schema to another
|
||||||
private IBlueTableSchema myOutputSchema;
|
IBlueTableSchema? myOutputSchema;
|
||||||
private int myIdGenerator = 0;
|
private int myIdGenerator = 0;
|
||||||
|
|
||||||
public GroupByStream(ViewStream stream, IEnumerable<string> groupby_cols, Func<DataPacket, IBlueRow> groupby_func)
|
public GroupByStream(ViewStream stream, IEnumerable<string> groupby_cols, Func<IDataPacket, IBlueRow> groupby_func)
|
||||||
: this(stream, new MyFuncGroupByEvaluator(groupby_cols, groupby_func)) { }
|
: this(stream, new MyFuncGroupByEvaluator(groupby_cols, groupby_func)) { }
|
||||||
|
|
||||||
public GroupByStream(ViewStream stream, IGroupByEvaluator groupByEvaluator)
|
public GroupByStream(ViewStream stream, IGroupByEvaluator groupByEvaluator)
|
||||||
@@ -45,14 +49,14 @@ namespace BCG {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected override void myHandleFirstCall() {
|
protected override void myHandleFirstCall() {
|
||||||
|
requireLastArrivedPacket();
|
||||||
mySchema = myLastArrivedPacket.schema;
|
mySchema = myLastArrivedPacket.schema;
|
||||||
myOutputSchema = myGroupByEvaluator.getOutputSchema(mySchema);
|
myOutputSchema = myGroupByEvaluator.getOutputSchema(mySchema);
|
||||||
myBookKeepingTable = new RowDictionaryTable(myLastArrivedPacket.newRows,
|
myBookKeepingTable = new RowDictionaryTable(myLastArrivedPacket.newRows,
|
||||||
myGroupByEvaluator.groupByColumns);
|
myGroupByEvaluator.groupByColumns);
|
||||||
GroupByOutputTable temp = new GroupByOutputTable(myOutputSchema);
|
GroupByOutputTable temp = new GroupByOutputTable(myOutputSchema);
|
||||||
foreach (IBlueRowCollection rowGroup in myBookKeepingTable.getGroups()) {
|
foreach (IBlueRowCollection rowGroup in myBookKeepingTable.getGroups()) {
|
||||||
IBlueRow newRow = myEvaluate(new DataPacket(rowGroup,
|
var newRow = myEvaluate(new DataPacket(rowGroup, rowGroup, new BlueTable(mySchema)));
|
||||||
rowGroup, new BlueTable(mySchema)));
|
|
||||||
if (newRow != null)
|
if (newRow != null)
|
||||||
temp.addRow(newRow, myGetGroupString(rowGroup));
|
temp.addRow(newRow, myGetGroupString(rowGroup));
|
||||||
}
|
}
|
||||||
@@ -78,15 +82,14 @@ namespace BCG {
|
|||||||
ArrayList handledAddGroups = new ArrayList();
|
ArrayList handledAddGroups = new ArrayList();
|
||||||
string groupRepString;
|
string groupRepString;
|
||||||
|
|
||||||
|
requireBookKeeping();
|
||||||
foreach (IBlueRowCollection delGroup in delGroups.getGroups()) {
|
foreach (IBlueRowCollection delGroup in delGroups.getGroups()) {
|
||||||
// BlueEventLog.logAssert (delGroup.Count > 0);
|
// BlueEventLog.logAssert (delGroup.Count > 0);
|
||||||
groupRepString = myGetGroupString(delGroup);
|
groupRepString = myGetGroupString(delGroup);
|
||||||
IBlueRowCollection addGroup = addGroups.getGroup(groupRepString) == null ?
|
IBlueRowCollection addGroup = addGroups.getGroup(groupRepString) ?? new BlueTable(mySchema);
|
||||||
new BlueTable(mySchema) : addGroups.getGroup(groupRepString);
|
|
||||||
handledAddGroups.Add(addGroup);
|
handledAddGroups.Add(addGroup);
|
||||||
IBlueRowCollection aggGroup = myBookKeepingTable.getGroup(groupRepString) == null ?
|
IBlueRowCollection aggGroup = myBookKeepingTable.getGroup(groupRepString) ?? new BlueTable(mySchema);
|
||||||
new BlueTable(mySchema) : myBookKeepingTable.getGroup(groupRepString);
|
var newRow = myEvaluate(new DataPacket(aggGroup, addGroup, delGroup));
|
||||||
IBlueRow newRow = myEvaluate(new DataPacket(aggGroup, addGroup, delGroup));
|
|
||||||
myFireSwitch |= myMergeRow(newRow, groupRepString);
|
myFireSwitch |= myMergeRow(newRow, groupRepString);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,16 +101,16 @@ namespace BCG {
|
|||||||
//the loop above
|
//the loop above
|
||||||
|
|
||||||
groupRepString = myGetGroupString(addGroup);
|
groupRepString = myGetGroupString(addGroup);
|
||||||
IBlueRowCollection aggGroup = myBookKeepingTable.getGroup(groupRepString);
|
var aggGroup = ExceptionAssert.NotNull(myBookKeepingTable.getGroup(groupRepString));
|
||||||
// BlueEventLog.logAssert (aggGroup != null && aggGroup.Count > 0);
|
// BlueEventLog.logAssert (aggGroup != null && aggGroup.Count > 0);
|
||||||
IBlueRow newRow = myEvaluate(new DataPacket(aggGroup, addGroup,
|
var newRow = myEvaluate(new DataPacket(aggGroup, addGroup, new BlueTable(aggGroup.schema)));
|
||||||
new BlueTable(aggGroup.schema)));
|
|
||||||
myFireSwitch |= myMergeRow(newRow, groupRepString);
|
myFireSwitch |= myMergeRow(newRow, groupRepString);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool myMergeRow(IBlueRow newRow, string groupRepString) {
|
private bool myMergeRow(IBlueRow? newRow, string groupRepString) {
|
||||||
|
requireLastFiredPacket();
|
||||||
IBlueRow existingRow = ((GroupByOutputTable)myLastFiredPacket.newRows).getRow(groupRepString);
|
IBlueRow existingRow = ((GroupByOutputTable)myLastFiredPacket.newRows).getRow(groupRepString);
|
||||||
//BlueEventLog.logAssert (newRow != null || existingRow != null);
|
//BlueEventLog.logAssert (newRow != null || existingRow != null);
|
||||||
if (existingRow == null && newRow == null)
|
if (existingRow == null && newRow == null)
|
||||||
@@ -115,6 +118,7 @@ namespace BCG {
|
|||||||
else if (existingRow != null && newRow != null && BlueDataUtility.compute_equality(existingRow, newRow))
|
else if (existingRow != null && newRow != null && BlueDataUtility.compute_equality(existingRow, newRow))
|
||||||
return false;
|
return false;
|
||||||
else if (existingRow == null) {
|
else if (existingRow == null) {
|
||||||
|
ArgumentNullException.ThrowIfNull(newRow);
|
||||||
//row added for the first time
|
//row added for the first time
|
||||||
((GroupByOutputTable)myLastFiredPacket.newRows).addRow(newRow, groupRepString);
|
((GroupByOutputTable)myLastFiredPacket.newRows).addRow(newRow, groupRepString);
|
||||||
((BlueTable)myLastFiredPacket.addedRows).addRow(newRow);
|
((BlueTable)myLastFiredPacket.addedRows).addRow(newRow);
|
||||||
@@ -137,6 +141,9 @@ namespace BCG {
|
|||||||
/// <param name="delGroups"></param>
|
/// <param name="delGroups"></param>
|
||||||
/// <param name="addGroups"></param>
|
/// <param name="addGroups"></param>
|
||||||
private void myInitIncrementalChangeData(out RowDictionaryTable delGroups, out RowDictionaryTable addGroups) {
|
private void myInitIncrementalChangeData(out RowDictionaryTable delGroups, out RowDictionaryTable addGroups) {
|
||||||
|
ExceptionAssert.NotNull(myBookKeepingTable);
|
||||||
|
requireLastFiredPacket();
|
||||||
|
requireLastArrivedPacket();
|
||||||
delGroups =
|
delGroups =
|
||||||
new RowDictionaryTable(myLastArrivedPacket.deletedRows, myGroupByEvaluator.groupByColumns);
|
new RowDictionaryTable(myLastArrivedPacket.deletedRows, myGroupByEvaluator.groupByColumns);
|
||||||
addGroups =
|
addGroups =
|
||||||
@@ -150,16 +157,19 @@ namespace BCG {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected override void myOnTableClear() {
|
protected override void myOnTableClear() {
|
||||||
if (myBookKeepingTable.Count == 0)
|
if (ExceptionAssert.NotNull(myBookKeepingTable).Count == 0) {
|
||||||
return; //ie there arent any rows, so no need to optimize the 'cleansing' process
|
// ie there arent any rows, so no need to optimize the 'cleansing' process
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
requireLastFiredPacket();
|
||||||
myLastFiredPacket.deletedRows = new BlueTable(myLastFiredPacket.newRows);
|
myLastFiredPacket.deletedRows = new BlueTable(myLastFiredPacket.newRows);
|
||||||
myLastFiredPacket.addedRows = new BlueTable(myLastFiredPacket.deletedRows.schema);
|
myLastFiredPacket.addedRows = new BlueTable(myLastFiredPacket.deletedRows.schema);
|
||||||
(myLastFiredPacket.newRows as GroupByOutputTable).clear();
|
((GroupByOutputTable)myLastFiredPacket.newRows).clear();
|
||||||
myBookKeepingTable.clear();
|
myBookKeepingTable.clear();
|
||||||
myGroupByEvaluator.clear();
|
myGroupByEvaluator.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private IBlueRow myEvaluate(DataPacket dp) {
|
private IBlueRow? myEvaluate(DataPacket dp) {
|
||||||
IBlueRow evalRow = myGroupByEvaluator.evaluate(dp);
|
IBlueRow evalRow = myGroupByEvaluator.evaluate(dp);
|
||||||
return evalRow == null ? null :
|
return evalRow == null ? null :
|
||||||
myIdGuard ?
|
myIdGuard ?
|
||||||
@@ -187,11 +197,11 @@ namespace BCG {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string getRepString(DataPacket dp, string[] colNames) {
|
public static string getRepString(IDataPacket dp, string[] colNames) {
|
||||||
return BlueDataUtility.rowToString(getRepRow(dp), colNames);
|
return BlueDataUtility.rowToString(getRepRow(dp), colNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IBlueRow getRepRow(DataPacket dp) {
|
public static IBlueRow? getRepRow(IDataPacket dp) {
|
||||||
if (dp.newRows.Count > 0)
|
if (dp.newRows.Count > 0)
|
||||||
return BlueDataUtility.extractRow(dp.newRows, 0);
|
return BlueDataUtility.extractRow(dp.newRows, 0);
|
||||||
else if (dp.addedRows.Count > 0)
|
else if (dp.addedRows.Count > 0)
|
||||||
@@ -210,13 +220,13 @@ namespace BCG {
|
|||||||
/// <param name="newValue"></param>
|
/// <param name="newValue"></param>
|
||||||
/// <param name="isAdd"></param>
|
/// <param name="isAdd"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static object incrementalAdd(object lastValue, object newValue, bool isAdd) {
|
public static object? incrementalAdd(object lastValue, object newValue, bool isAdd) {
|
||||||
if (lastValue == null || lastValue.Equals(DBNull.Value))
|
if (lastValue == null || lastValue.Equals(DBNull.Value))
|
||||||
return newValue;
|
return newValue;
|
||||||
// BlueEventLog.logAssert (lastValue.GetType().Equals (typeof(Int32)) && newValue.GetType().Equals (typeof(Int32)) ||
|
// BlueEventLog.logAssert (lastValue.GetType().Equals (typeof(Int32)) && newValue.GetType().Equals (typeof(Int32)) ||
|
||||||
// lastValue.GetType().Equals (typeof(Double)) && newValue.GetType().Equals (typeof(Double)) ||
|
// lastValue.GetType().Equals (typeof(Double)) && newValue.GetType().Equals (typeof(Double)) ||
|
||||||
// lastValue.GetType().Equals (typeof(Decimal)) && newValue.GetType().Equals (typeof(Decimal)));
|
// lastValue.GetType().Equals (typeof(Decimal)) && newValue.GetType().Equals (typeof(Decimal)));
|
||||||
Object retVal = null;
|
object? retVal = null;
|
||||||
if (newValue.GetType().Equals(typeof(int)))
|
if (newValue.GetType().Equals(typeof(int)))
|
||||||
retVal = isAdd ? (int)lastValue + (int)newValue : (int)lastValue - (int)newValue;
|
retVal = isAdd ? (int)lastValue + (int)newValue : (int)lastValue - (int)newValue;
|
||||||
else if (newValue.GetType().Equals(typeof(Double)))
|
else if (newValue.GetType().Equals(typeof(Double)))
|
||||||
@@ -228,6 +238,9 @@ namespace BCG {
|
|||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[MemberNotNull(nameof(myBookKeepingTable))]
|
||||||
|
void requireBookKeeping() =>
|
||||||
|
ExceptionAssert.NotNull(myBookKeepingTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,3 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace BCG
|
namespace BCG
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -14,7 +12,7 @@ namespace BCG
|
|||||||
/// deletetion) and the added and deletedRows being the increments. If a group has
|
/// deletetion) and the added and deletedRows being the increments. If a group has
|
||||||
/// to be totally removed then a null should be returned
|
/// to be totally removed then a null should be returned
|
||||||
/// </summary>
|
/// </summary>
|
||||||
IBlueRow evaluate (DataPacket packet);
|
IBlueRow? evaluate(IDataPacket packet);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the columns (belonging to the original schema) on which this IGroupByEvaluator
|
/// Returns the columns (belonging to the original schema) on which this IGroupByEvaluator
|
||||||
|
|||||||
@@ -1,8 +1,3 @@
|
|||||||
using System;
|
|
||||||
using System.Collections;
|
|
||||||
|
|
||||||
using BCG.Utilities;
|
|
||||||
|
|
||||||
namespace BCG {
|
namespace BCG {
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Computes the max for a given column
|
/// Computes the max for a given column
|
||||||
@@ -14,14 +9,13 @@ namespace BCG {
|
|||||||
public MaxGroupByEvaluator(string colMapEpression, string outputCol, string[] groupByCols)
|
public MaxGroupByEvaluator(string colMapEpression, string outputCol, string[] groupByCols)
|
||||||
: base(colMapEpression, outputCol, groupByCols) { }
|
: base(colMapEpression, outputCol, groupByCols) { }
|
||||||
|
|
||||||
public override IBlueRow evaluate(DataPacket dp) {
|
public override IBlueRow? evaluate(IDataPacket dp) {
|
||||||
myOutputTable = myOutputTable == null ? new GroupByOutputTable(dp.schema) :
|
myOutputTable ??= new GroupByOutputTable(dp.Schema);
|
||||||
myOutputTable;
|
|
||||||
string hashString = BlueDataUtility.rowToString(GroupByStream.getRepRow(dp), myGroupByCols);
|
string hashString = BlueDataUtility.rowToString(GroupByStream.getRepRow(dp), myGroupByCols);
|
||||||
IBlueRow currMaxRow = myOutputTable.getRow(hashString);
|
var currMaxRow = myOutputTable.getRow(hashString);
|
||||||
IBlueRow maxRow = BlueDataUtility.computeMaxRow(dp.deletedRows, myOutputColumn);
|
IBlueRow maxRow = BlueDataUtility.computeMaxRow(dp.deletedRows, myOutputColumn);
|
||||||
if (maxRow != null) {
|
if (maxRow != null) {
|
||||||
bts.Log.assert(currMaxRow != null);
|
bts.Log.notnull(currMaxRow);
|
||||||
bts.Log.assert(BlueDataUtility.compare_rows(maxRow, currMaxRow, myOutputColumn) <= 0);
|
bts.Log.assert(BlueDataUtility.compare_rows(maxRow, currMaxRow, myOutputColumn) <= 0);
|
||||||
if (BlueDataUtility.compare_rows(maxRow, currMaxRow, myOutputColumn) == 0) {
|
if (BlueDataUtility.compare_rows(maxRow, currMaxRow, myOutputColumn) == 0) {
|
||||||
maxRow = BlueDataUtility.computeMaxRow(dp.newRows, myOutputColumn);
|
maxRow = BlueDataUtility.computeMaxRow(dp.newRows, myOutputColumn);
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
using System;
|
|
||||||
using System.Collections;
|
|
||||||
using BCG.Utilities;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace BCG
|
namespace BCG
|
||||||
{
|
{
|
||||||
|
using Spark.Core.Diagnostics;
|
||||||
|
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Some basic event handling functionality factorred out of any Stream whose behaviour
|
/// Some basic event handling functionality factorred out of any Stream whose behaviour
|
||||||
/// is driven by some interface passed on by the user
|
/// is driven by some interface passed on by the user
|
||||||
@@ -12,8 +11,8 @@ namespace BCG
|
|||||||
public abstract class MethodDrivenStream : ViewStream
|
public abstract class MethodDrivenStream : ViewStream
|
||||||
{
|
{
|
||||||
protected ViewStream myStream;
|
protected ViewStream myStream;
|
||||||
protected DataPacket myLastArrivedPacket;
|
protected DataPacket? myLastArrivedPacket;
|
||||||
protected DataPacket myLastFiredPacket;
|
protected DataPacket? myLastFiredPacket;
|
||||||
protected bool myFireSwitch = true;
|
protected bool myFireSwitch = true;
|
||||||
|
|
||||||
public MethodDrivenStream(ViewStream vs) {myStream = vs;}
|
public MethodDrivenStream(ViewStream vs) {myStream = vs;}
|
||||||
@@ -59,6 +58,7 @@ namespace BCG
|
|||||||
/// To handle the first call, the LastFiredPacket is supposed to be initialized and filled
|
/// To handle the first call, the LastFiredPacket is supposed to be initialized and filled
|
||||||
/// with data.
|
/// with data.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[MemberNotNull(nameof(myLastFiredPacket))]
|
||||||
protected abstract void myHandleFirstCall ();
|
protected abstract void myHandleFirstCall ();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -89,5 +89,13 @@ namespace BCG
|
|||||||
{
|
{
|
||||||
myStream.onChange -= new DataStream.ChangeDelegate (myChangeHandler);
|
myStream.onChange -= new DataStream.ChangeDelegate (myChangeHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[MemberNotNull(nameof(myLastArrivedPacket))]
|
||||||
|
protected void requireLastArrivedPacket() =>
|
||||||
|
ExceptionAssert.NotNull(myLastArrivedPacket);
|
||||||
|
|
||||||
|
[MemberNotNull(nameof(myLastFiredPacket))]
|
||||||
|
protected void requireLastFiredPacket() =>
|
||||||
|
ExceptionAssert.NotNull(myLastFiredPacket);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,3 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
using BCG.Utilities;
|
|
||||||
|
|
||||||
namespace BCG {
|
namespace BCG {
|
||||||
public class MinGroupByEvaluator : MaxGroupByEvaluator {
|
public class MinGroupByEvaluator : MaxGroupByEvaluator {
|
||||||
public MinGroupByEvaluator(string outputCol, string[] groupByCols)
|
public MinGroupByEvaluator(string outputCol, string[] groupByCols)
|
||||||
@@ -10,10 +6,10 @@ namespace BCG {
|
|||||||
public MinGroupByEvaluator(string colMapEpression, string outputCol, string[] groupByCols) :
|
public MinGroupByEvaluator(string colMapEpression, string outputCol, string[] groupByCols) :
|
||||||
base(colMapEpression, outputCol, groupByCols) { }
|
base(colMapEpression, outputCol, groupByCols) { }
|
||||||
|
|
||||||
public override IBlueRow evaluate(DataPacket dp) {
|
public override IBlueRow? evaluate(IDataPacket dp) {
|
||||||
myOutputTable = myOutputTable == null ? new GroupByOutputTable(dp.schema) : myOutputTable;
|
myOutputTable ??= new GroupByOutputTable(dp.Schema);
|
||||||
string stringRep = BlueDataUtility.rowToString(GroupByStream.getRepRow(dp), myGroupByCols);
|
string stringRep = BlueDataUtility.rowToString(GroupByStream.getRepRow(dp), myGroupByCols);
|
||||||
IBlueRow currMinRow = myOutputTable.getRow(stringRep);
|
var currMinRow = myOutputTable.getRow(stringRep);
|
||||||
IBlueRow minRow = BlueDataUtility.computeMinRow(dp.deletedRows, myOutputColumn);
|
IBlueRow minRow = BlueDataUtility.computeMinRow(dp.deletedRows, myOutputColumn);
|
||||||
if (minRow != null) {
|
if (minRow != null) {
|
||||||
// BlueEventLog.logAssert (currMinRow != null);
|
// BlueEventLog.logAssert (currMinRow != null);
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace BCG {
|
namespace BCG {
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Computes the sum for a given column
|
/// Computes the sum for a given column
|
||||||
@@ -10,8 +8,8 @@ namespace BCG {
|
|||||||
public SumGroupByEvaluator(string colMapEpression, string outputCol, string[] groupByCols)
|
public SumGroupByEvaluator(string colMapEpression, string outputCol, string[] groupByCols)
|
||||||
: base(colMapEpression, outputCol, groupByCols) { }
|
: base(colMapEpression, outputCol, groupByCols) { }
|
||||||
|
|
||||||
public override IBlueRow evaluate(DataPacket dp) {
|
public override IBlueRow evaluate(IDataPacket dp) {
|
||||||
myOutputTable = myOutputTable == null ? new GroupByOutputTable(dp.schema) : myOutputTable;
|
myOutputTable ??= new GroupByOutputTable(dp.Schema);
|
||||||
|
|
||||||
IBlueRow sumRow = BlueDataUtility.computeSum(dp.newRows, myOutputColumn);
|
IBlueRow sumRow = BlueDataUtility.computeSum(dp.newRows, myOutputColumn);
|
||||||
return sumRow;
|
return sumRow;
|
||||||
@@ -33,7 +31,7 @@ namespace BCG {
|
|||||||
|
|
||||||
#region IGroupByEvaluator Members
|
#region IGroupByEvaluator Members
|
||||||
|
|
||||||
public IBlueRow evaluate(DataPacket packet) { return BlueDataUtility.computeSum(packet.newRows, myOutputCols); }
|
public IBlueRow evaluate(IDataPacket packet) => BlueDataUtility.computeSum(packet.newRows, myOutputCols);
|
||||||
|
|
||||||
public string[] groupByColumns { get { return myGroupByCols; } }
|
public string[] groupByColumns { get { return myGroupByCols; } }
|
||||||
|
|
||||||
@@ -51,9 +49,8 @@ namespace BCG {
|
|||||||
public SumGroupByEvaluator(string colMapEpression, string outputCol, string[] groupByCols)
|
public SumGroupByEvaluator(string colMapEpression, string outputCol, string[] groupByCols)
|
||||||
: base(colMapEpression, outputCol, groupByCols) { }
|
: base(colMapEpression, outputCol, groupByCols) { }
|
||||||
|
|
||||||
public override IBlueRow evaluate(DataPacket dp) {
|
public override IBlueRow evaluate(IDataPacket dp) {
|
||||||
myOutputTable = myOutputTable == null ? new GroupByOutputTable(dp.schema) : myOutputTable;
|
myOutputTable ??= new GroupByOutputTable(dp.Schema);
|
||||||
|
|
||||||
IBlueRow sumRow = BlueDataUtility.computeSum<T>(dp.newRows, myOutputColumn);
|
IBlueRow sumRow = BlueDataUtility.computeSum<T>(dp.newRows, myOutputColumn);
|
||||||
return sumRow;
|
return sumRow;
|
||||||
}
|
}
|
||||||
@@ -68,7 +65,7 @@ namespace BCG {
|
|||||||
|
|
||||||
#region IGroupByEvaluator Members
|
#region IGroupByEvaluator Members
|
||||||
|
|
||||||
public IBlueRow evaluate(DataPacket packet) { return BlueDataUtility.computeSum<T>(packet.newRows, myOutputCols); }
|
public IBlueRow evaluate(IDataPacket packet) => BlueDataUtility.computeSum<T>(packet.newRows, myOutputCols);
|
||||||
|
|
||||||
public string[] groupByColumns { get { return myGroupByCols; } }
|
public string[] groupByColumns { get { return myGroupByCols; } }
|
||||||
|
|
||||||
|
|||||||
@@ -45,12 +45,13 @@ namespace BCG {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public SumStream(ViewStream stream, string[] output_columns, string[] groupby_columns, bool force_null_into_other_columns) {
|
public SumStream(ViewStream stream, string[] output_columns, string[] groupby_columns, bool force_null_into_other_columns) {
|
||||||
ViewStream rs = null;
|
ViewStream? rs = null;
|
||||||
groupby_columns = groupby_columns ?? new string[] { };
|
groupby_columns = groupby_columns ?? new string[] { };
|
||||||
if (groupby_columns.Length == 0) {
|
if (groupby_columns.Length == 0) {
|
||||||
// rs = new AddColumnsStream(stream, "fake_col=0");
|
// rs = new AddColumnsStream(stream, "fake_col=0");
|
||||||
// rs = new GroupByStream(rs, new MultiColumnSumGroupByEvaluator(output_columns, new string[] { "fake_col" }));
|
// rs = new GroupByStream(rs, new MultiColumnSumGroupByEvaluator(output_columns, new string[] { "fake_col" }));
|
||||||
// rs = new ProjectStream(rs, "!fake_col");
|
// rs = new ProjectStream(rs, "!fake_col");
|
||||||
|
throw new ArgumentException("No groupby columns specified", nameof(groupby_columns));
|
||||||
} else {
|
} else {
|
||||||
rs = new GroupByStream(stream, new MultiColumnSumGroupByEvaluator(output_columns, groupby_columns));
|
rs = new GroupByStream(stream, new MultiColumnSumGroupByEvaluator(output_columns, groupby_columns));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
using mbts;
|
using mbts;
|
||||||
|
|
||||||
|
using Spark.Core.Diagnostics;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
@@ -35,7 +37,7 @@ namespace BCG {
|
|||||||
List<NonIncJoinSpec> rv = new List<NonIncJoinSpec>();
|
List<NonIncJoinSpec> rv = new List<NonIncJoinSpec>();
|
||||||
foreach (Triplet<ViewStream, string, string> r in join_specs) {
|
foreach (Triplet<ViewStream, string, string> r in join_specs) {
|
||||||
string[] keys = String.IsNullOrEmpty(r.second) ? new string[] { } : r.second.Split(' ');
|
string[] keys = String.IsNullOrEmpty(r.second) ? new string[] { } : r.second.Split(' ');
|
||||||
string[] visible_cols = r.third.Split(' ');
|
string[] visible_cols = ExceptionAssert.NotNull(r.third).Split(' ');
|
||||||
List<string> data_col_names = new List<string>(), mapped_col_names = new List<string>();
|
List<string> data_col_names = new List<string>(), mapped_col_names = new List<string>();
|
||||||
foreach (string s in visible_cols) {
|
foreach (string s in visible_cols) {
|
||||||
string[] toks = s.Split(':');
|
string[] toks = s.Split(':');
|
||||||
@@ -47,7 +49,7 @@ namespace BCG {
|
|||||||
mapped_col_names.Add(toks[1]);
|
mapped_col_names.Add(toks[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rv.Add(new NonIncJoinSpec(r.first, keys, data_col_names.ToArray(), mapped_col_names.ToArray()));
|
rv.Add(new(ExceptionAssert.NotNull(r.first), keys, data_col_names.ToArray(), mapped_col_names.ToArray()));
|
||||||
}
|
}
|
||||||
return rv.ToArray();
|
return rv.ToArray();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -290,6 +290,7 @@ namespace BCG
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ExceptionAssert.NotNull(myState);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void myAddRows(IBlueRowCollection addedRows, bool isLeft, BlueTable state, BlueTable addedRowsOut)
|
private void myAddRows(IBlueRowCollection addedRows, bool isLeft, BlueTable state, BlueTable addedRowsOut)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using Spark.Core.Diagnostics;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace BCG
|
namespace BCG
|
||||||
@@ -18,16 +20,21 @@ namespace BCG
|
|||||||
|
|
||||||
public override void onTableClear (bool isLeft)
|
public override void onTableClear (bool isLeft)
|
||||||
{
|
{
|
||||||
|
requireSchema();
|
||||||
|
requireLastFiredPacket();
|
||||||
myLastFiredPacket.deletedRows = myLastFiredPacket.newRows;
|
myLastFiredPacket.deletedRows = myLastFiredPacket.newRows;
|
||||||
myLastFiredPacket.newRows = new JoinForeignTable (mySchema);
|
myLastFiredPacket.newRows = new JoinForeignTable (mySchema);
|
||||||
myLastFiredPacket.addedRows = new BlueTable (mySchema);
|
myLastFiredPacket.addedRows = new BlueTable (mySchema);
|
||||||
if (!isLeft)
|
if (!isLeft) {
|
||||||
|
ExceptionAssert.NotNull(myLeftDataPacket);
|
||||||
foreach (IBlueRow row in myLeftDataPacket.newRows)
|
foreach (IBlueRow row in myLeftDataPacket.newRows)
|
||||||
((JoinTable)myLastFiredPacket.newRows).addRow (row, null, myLastFiredPacket);
|
((JoinTable)myLastFiredPacket.newRows).addRow (row, null, myLastFiredPacket);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void myInitFiredPacket ()
|
protected override void myInitFiredPacket ()
|
||||||
{
|
{
|
||||||
|
requireSchema();
|
||||||
myLastFiredPacket = new DataPacket ();
|
myLastFiredPacket = new DataPacket ();
|
||||||
myLastFiredPacket.newRows = new JoinForeignTable (mySchema);
|
myLastFiredPacket.newRows = new JoinForeignTable (mySchema);
|
||||||
myLastFiredPacket.addedRows = new BlueTable (mySchema);
|
myLastFiredPacket.addedRows = new BlueTable (mySchema);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ namespace BCG
|
|||||||
: this (r, null, null)
|
: this (r, null, null)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
public SimpleNode(IBlueRow r, SimpleNode? nx, SimpleNode? pv) {
|
public SimpleNode(IBlueRow? r, SimpleNode? nx, SimpleNode? pv) {
|
||||||
row = r;
|
row = r;
|
||||||
next = nx;
|
next = nx;
|
||||||
prev = pv;
|
prev = pv;
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
using bts;
|
using bts;
|
||||||
|
|
||||||
|
using Spark.Core.Diagnostics;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
@@ -60,7 +62,7 @@ namespace BCG {
|
|||||||
if (columnAndType.Length == 1)
|
if (columnAndType.Length == 1)
|
||||||
ci[n] = new ColumnInfo(c, n, typeof(double));
|
ci[n] = new ColumnInfo(c, n, typeof(double));
|
||||||
else
|
else
|
||||||
ci[n] = new ColumnInfo(columnAndType[0], n, Type.GetType("System." + columnAndType[1], true));
|
ci[n] = new(columnAndType[0], n, ExceptionAssert.NotNull(Type.GetType("System." + columnAndType[1], true)));
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ using BCG;
|
|||||||
|
|
||||||
using MongoDB.Driver.Core.WireProtocol.Messages;
|
using MongoDB.Driver.Core.WireProtocol.Messages;
|
||||||
|
|
||||||
|
using Spark.Core.Diagnostics;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -37,12 +39,12 @@ namespace bts {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _handle_stream_update(object dp_obj) {
|
void _handle_stream_update(object dp_obj) {
|
||||||
DataPacket dp = dp_obj as DataPacket;
|
var dp = ExceptionAssert.Argument.Is<IDataPacket>(dp_obj);
|
||||||
IDictionary<int, List<IBlueRow>> groups = !String.IsNullOrEmpty(_group_by_col) ?
|
IDictionary<int, List<IBlueRow>> groups = !String.IsNullOrEmpty(_group_by_col) ?
|
||||||
BlueDataUtility.group_together(dp.newRows, new string[] { _group_by_col })
|
BlueDataUtility.group_together(dp.newRows, new string[] { _group_by_col })
|
||||||
:
|
:
|
||||||
new Dictionary<int, List<IBlueRow>>() { { 0, dp.newRows.to_list() } };
|
new Dictionary<int, List<IBlueRow>>() { { 0, dp.newRows.to_list() } };
|
||||||
BlueTable out_table = null;
|
BlueTable? out_table = null;
|
||||||
foreach (var kv in groups) {
|
foreach (var kv in groups) {
|
||||||
List<IBlueRow> group_rows = kv.Value;
|
List<IBlueRow> group_rows = kv.Value;
|
||||||
group_rows.Sort((r1, r2) => BlueDataUtility.compare_rows(r2, r1, _sort_col_name));
|
group_rows.Sort((r1, r2) => BlueDataUtility.compare_rows(r2, r1, _sort_col_name));
|
||||||
@@ -71,4 +73,4 @@ namespace bts {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -23,6 +23,6 @@ namespace BCG
|
|||||||
/// fires an event when the mapper
|
/// fires an event when the mapper
|
||||||
/// changes itself
|
/// changes itself
|
||||||
/// </summary>
|
/// </summary>
|
||||||
event MapperChangeDelegate onMapperChange;
|
event MapperChangeDelegate? onMapperChange;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -75,6 +75,7 @@ namespace BCG {
|
|||||||
|
|
||||||
protected override void myHandleFirstCall() {
|
protected override void myHandleFirstCall() {
|
||||||
ArgumentNullException.ThrowIfNull(myMapper);
|
ArgumentNullException.ThrowIfNull(myMapper);
|
||||||
|
requireLastArrivedPacket();
|
||||||
IBlueTableSchema outputSchema = myMapper.getOutputSchema(myLastArrivedPacket.newRows.schema);
|
IBlueTableSchema outputSchema = myMapper.getOutputSchema(myLastArrivedPacket.newRows.schema);
|
||||||
myLastFiredPacket = new DataPacket();
|
myLastFiredPacket = new DataPacket();
|
||||||
myLastFiredPacket.newRows = new BlueTable(outputSchema);
|
myLastFiredPacket.newRows = new BlueTable(outputSchema);
|
||||||
@@ -85,10 +86,12 @@ namespace BCG {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected override void myHandleIncrementalAdd() {
|
protected override void myHandleIncrementalAdd() {
|
||||||
|
requireLastArrivedPacket();
|
||||||
if (myLastArrivedPacket.addedRows.Count == 0) {
|
if (myLastArrivedPacket.addedRows.Count == 0) {
|
||||||
Log.Gen.warn("MapStream.myHandleIncrementalAdd called with 0 addedRows");
|
Log.Gen.warn("MapStream.myHandleIncrementalAdd called with 0 addedRows");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
requireLastFiredPacket();
|
||||||
ArgumentNullException.ThrowIfNull(myMapper);
|
ArgumentNullException.ThrowIfNull(myMapper);
|
||||||
var addedRows = new BlueTable(myLastFiredPacket.newRows.schema);
|
var addedRows = new BlueTable(myLastFiredPacket.newRows.schema);
|
||||||
var newRows = ExceptionAssert.Cast(myLastFiredPacket.newRows).To<BlueTable>();
|
var newRows = ExceptionAssert.Cast(myLastFiredPacket.newRows).To<BlueTable>();
|
||||||
@@ -101,10 +104,12 @@ namespace BCG {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected override void myHandleIncrementalDelete() {
|
protected override void myHandleIncrementalDelete() {
|
||||||
|
requireLastArrivedPacket();
|
||||||
if (myLastArrivedPacket.deletedRows.Count == 0) {
|
if (myLastArrivedPacket.deletedRows.Count == 0) {
|
||||||
Log.Gen.warn("MapStream.myHandleIncrementalDelete called with 0 deletedRows");
|
Log.Gen.warn("MapStream.myHandleIncrementalDelete called with 0 deletedRows");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
requireLastFiredPacket();
|
||||||
var deletedRows = new BlueTable(myLastFiredPacket.newRows.schema);
|
var deletedRows = new BlueTable(myLastFiredPacket.newRows.schema);
|
||||||
var newRows = ExceptionAssert.Cast(myLastFiredPacket.newRows).To<BlueTable>();
|
var newRows = ExceptionAssert.Cast(myLastFiredPacket.newRows).To<BlueTable>();
|
||||||
foreach (IBlueRow row in myLastArrivedPacket.deletedRows) {
|
foreach (IBlueRow row in myLastArrivedPacket.deletedRows) {
|
||||||
@@ -127,6 +132,7 @@ namespace BCG {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected override void myOnTableClear() {
|
protected override void myOnTableClear() {
|
||||||
|
requireLastFiredPacket();
|
||||||
myLastFiredPacket.deletedRows = myLastFiredPacket.newRows;
|
myLastFiredPacket.deletedRows = myLastFiredPacket.newRows;
|
||||||
myLastFiredPacket.newRows = new BlueTable(myLastFiredPacket.deletedRows.schema);
|
myLastFiredPacket.newRows = new BlueTable(myLastFiredPacket.deletedRows.schema);
|
||||||
myLastFiredPacket.addedRows = new BlueTable(myLastFiredPacket.deletedRows.schema);
|
myLastFiredPacket.addedRows = new BlueTable(myLastFiredPacket.deletedRows.schema);
|
||||||
|
|||||||
@@ -47,14 +47,14 @@ namespace BCG {
|
|||||||
_map_rows = map_rows;
|
_map_rows = map_rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event MapperChangeDelegate? ISuperStreamMapper.onMapperChange { add { } remove { } }
|
||||||
|
|
||||||
public IBlueTableSchema getOutputSchema(IBlueTableSchema schema) { return _get_schema(schema); }
|
public IBlueTableSchema getOutputSchema(IBlueTableSchema schema) { return _get_schema(schema); }
|
||||||
|
|
||||||
public IBlueRow[] map(IBlueRow r) {
|
public IBlueRow[] map(IBlueRow r) {
|
||||||
IEnumerable<IBlueRow> rows = _map_rows(r);
|
IEnumerable<IBlueRow> rows = _map_rows(r);
|
||||||
return rows == null ? new IBlueRow[] { } : new List<IBlueRow>(rows).ToArray();
|
return rows == null ? new IBlueRow[] { } : new List<IBlueRow>(rows).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public event MapperChangeDelegate? onMapperChange;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//maps the id of the underlying stream to the
|
//maps the id of the underlying stream to the
|
||||||
|
|||||||
@@ -608,8 +608,8 @@ namespace BCG {
|
|||||||
// 5. deserialize the state into a stream op
|
// 5. deserialize the state into a stream op
|
||||||
str_io_msg_p = deser.deserialize(content_p);
|
str_io_msg_p = deser.deserialize(content_p);
|
||||||
// 6. check to make sure the state's rows are good
|
// 6. check to make sure the state's rows are good
|
||||||
passes = passes && str_io_msg_p.op == bts.StreamIOMessage.StreamOp.CREATE &&
|
passes &= str_io_msg_p.op == StreamIOMessage.StreamOp.CREATE
|
||||||
BlueDataUtility.compute_equality(cr_rows, str_io_msg_p.create_message.rows);
|
&& BlueDataUtility.compute_equality(cr_rows, ExceptionAssert.NotNull(str_io_msg_p.create_message).rows);
|
||||||
return new TestResult {
|
return new TestResult {
|
||||||
test_result = passes,
|
test_result = passes,
|
||||||
test_name = "run_pubsub_server_stream_tag_handler_test"
|
test_name = "run_pubsub_server_stream_tag_handler_test"
|
||||||
@@ -692,7 +692,7 @@ namespace BCG {
|
|||||||
var content = st_data.get_current_content();
|
var content = st_data.get_current_content();
|
||||||
var msg_p = deser.deserialize(content);
|
var msg_p = deser.deserialize(content);
|
||||||
Log.assert(msg_p.op == bts.StreamIOMessage.StreamOp.CREATE);
|
Log.assert(msg_p.op == bts.StreamIOMessage.StreamOp.CREATE);
|
||||||
return msg_p.create_message.rows;
|
return ExceptionAssert.NotNull(msg_p.create_message).rows;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
using Bts.ColumnSortExpressions;
|
using Bts.ColumnSortExpressions;
|
||||||
|
|
||||||
|
using Spark.Core.Diagnostics;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -39,7 +41,7 @@ public class SortRow : IComparable, IBlueRow {
|
|||||||
var otherVal = otherRow[col.Name];
|
var otherVal = otherRow[col.Name];
|
||||||
int rv = myIsNull(this[col.Name]) ?
|
int rv = myIsNull(this[col.Name]) ?
|
||||||
(myIsNull(otherVal) ? 0 : -1) :
|
(myIsNull(otherVal) ? 0 : -1) :
|
||||||
(myIsNull(otherVal) ? 1 : ((IComparable)this[col.Name]).CompareTo(otherVal));
|
(myIsNull(otherVal) ? 1 : ExceptionAssert.Argument.Is<IComparable>(this[col.Name]).CompareTo(otherVal));
|
||||||
rv *= col.IsAscending ? 1 : -1;
|
rv *= col.IsAscending ? 1 : -1;
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
using System;
|
using Spark.Core.Diagnostics;
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
@@ -60,13 +62,13 @@ namespace BCG
|
|||||||
List<string> columnInfoStrParts = new List<string>(columnInfoStr.Split(new char[] { ':' }, StringSplitOptions.None));
|
List<string> columnInfoStrParts = new List<string>(columnInfoStr.Split(new char[] { ':' }, StringSplitOptions.None));
|
||||||
if (columnInfoStrParts.Count != 2)
|
if (columnInfoStrParts.Count != 2)
|
||||||
{
|
{
|
||||||
throw (new Exception(String.Format("Unable to decode schema string '{0}'", schemaStr)));
|
throw new Exception($"Unable to decode schema string '{schemaStr}'");
|
||||||
}
|
}
|
||||||
|
|
||||||
columnInfos.Add(new ColumnInfo(columnInfoStrParts[0], i, Type.GetType(columnInfoStrParts[1])));
|
columnInfos.Add(new ColumnInfo(columnInfoStrParts[0], i, ExceptionAssert.NotNull(Type.GetType(columnInfoStrParts[1]))));
|
||||||
}
|
}
|
||||||
|
|
||||||
return (new BlueTableSchema(columnInfos.ToArray(), ""));
|
return new BlueTableSchema(columnInfos.ToArray(), string.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
private IBlueRow myGetRow(IBlueTableSchema schema, string rowStr)
|
private IBlueRow myGetRow(IBlueTableSchema schema, string rowStr)
|
||||||
@@ -75,7 +77,7 @@ namespace BCG
|
|||||||
|
|
||||||
if (schema.columnInfo.Length != valueStrs.Count)
|
if (schema.columnInfo.Length != valueStrs.Count)
|
||||||
{
|
{
|
||||||
throw (new Exception(String.Format("Unable to decode row string '{0}'", rowStr)));
|
throw new Exception($"Unable to decode row string '{rowStr}'");
|
||||||
}
|
}
|
||||||
|
|
||||||
List<object> values = new List<object>();
|
List<object> values = new List<object>();
|
||||||
@@ -84,7 +86,7 @@ namespace BCG
|
|||||||
values.Add(Convert.ChangeType(valueStrs[i], schema.columnInfo[i].colType));
|
values.Add(Convert.ChangeType(valueStrs[i], schema.columnInfo[i].colType));
|
||||||
}
|
}
|
||||||
|
|
||||||
return (new BlueRow(schema, values.ToArray()));
|
return new BlueRow(schema, values.ToArray());
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using BCG.Utilities.General;
|
using BCG.Utilities.General;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
namespace BCG
|
namespace BCG
|
||||||
@@ -97,7 +98,7 @@ namespace BCG
|
|||||||
// BlueEventLog2.instance().assert(Thread.CurrentThread.ManagedThreadId == _target_thread,
|
// BlueEventLog2.instance().assert(Thread.CurrentThread.ManagedThreadId == _target_thread,
|
||||||
// "onTargetDoWork should only be called from target thread");
|
// "onTargetDoWork should only be called from target thread");
|
||||||
var updates = _queued_updates.dequeueAll();
|
var updates = _queued_updates.dequeueAll();
|
||||||
foreach (var u in updates) {
|
foreach (var u in updates.ExceptNull()) {
|
||||||
if (u.subscription == _current_target_subscription)
|
if (u.subscription == _current_target_subscription)
|
||||||
myFireEvent(u.dp);
|
myFireEvent(u.dp);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
using BCG.Utilities.General;
|
using BCG.Utilities.General;
|
||||||
|
|
||||||
|
using Spark.Core.Diagnostics;
|
||||||
|
|
||||||
|
using System;
|
||||||
|
|
||||||
namespace BCG {
|
namespace BCG {
|
||||||
public abstract class TimeUnitStream : ViewStream, IWorker {
|
public abstract class TimeUnitStream : ViewStream, IWorker {
|
||||||
protected TimeSpan myOffset;
|
protected TimeSpan myOffset;
|
||||||
@@ -46,8 +48,8 @@ namespace BCG {
|
|||||||
myRoundTime(myZeroTime + new TimeSpan(myOffset.Ticks * periods));
|
myRoundTime(myZeroTime + new TimeSpan(myOffset.Ticks * periods));
|
||||||
|
|
||||||
|
|
||||||
if (myGetLatestRow() == null ||
|
var latestRow = myGetLatestRow();
|
||||||
!myGetLatestRow()["time"].Equals(dt)) {
|
if (latestRow is null || !ExceptionAssert.Argument.Is<DateTime>(latestRow["time"]).Equals(dt)) {
|
||||||
IBlueRow ar = new BlueRow(myCollection.schema,
|
IBlueRow ar = new BlueRow(myCollection.schema,
|
||||||
myId++, dt);
|
myId++, dt);
|
||||||
IBlueRow dr = myCollection.addRowWithReturn(ar);
|
IBlueRow dr = myCollection.addRowWithReturn(ar);
|
||||||
@@ -71,11 +73,10 @@ namespace BCG {
|
|||||||
|
|
||||||
#region Private Helper methods
|
#region Private Helper methods
|
||||||
|
|
||||||
private IBlueRow myGetLatestRow() {
|
IBlueRow? myGetLatestRow() =>
|
||||||
return myCollection.Count == 0 ?
|
myCollection.Count == 0
|
||||||
null :
|
? null
|
||||||
BlueDataUtility.extractRow(myCollection, myCollection.Count - 1);
|
: BlueDataUtility.extractRow(myCollection, myCollection.Count - 1);
|
||||||
}
|
|
||||||
|
|
||||||
private IBlueRowCollection myConvertToCollection(IBlueRow r) {
|
private IBlueRowCollection myConvertToCollection(IBlueRow r) {
|
||||||
BlueTable retVal = new BlueTable(myCollection.schema);
|
BlueTable retVal = new BlueTable(myCollection.schema);
|
||||||
|
|||||||
@@ -1,43 +1,42 @@
|
|||||||
using System;
|
namespace BCG;
|
||||||
|
|
||||||
namespace BCG {
|
public class TopStream : MethodDrivenStream {
|
||||||
public class TopStream : MethodDrivenStream {
|
int myTopCount;
|
||||||
private int myTopCount;
|
|
||||||
|
|
||||||
public TopStream(ViewStream stream, int topCount) : base(stream) { myTopCount = topCount; }
|
public TopStream(ViewStream stream, int topCount)
|
||||||
|
: base(stream) =>
|
||||||
|
myTopCount = topCount;
|
||||||
|
|
||||||
public TopStream(ViewStream stream,
|
public TopStream(ViewStream stream, int topCount, string sortExpression)
|
||||||
int topCount,
|
: this(sortExpression is null ? stream : new SortStream(stream, sortExpression), topCount) { }
|
||||||
string sortExpression)
|
|
||||||
:
|
|
||||||
this(sortExpression == null ?
|
|
||||||
stream :
|
|
||||||
new SortStream(stream, sortExpression), topCount) { }
|
|
||||||
|
|
||||||
protected override void myOnTableClear() {
|
protected override void myOnTableClear() {
|
||||||
myLastFiredPacket.deletedRows = myLastFiredPacket.newRows;
|
requireLastFiredPacket();
|
||||||
myLastFiredPacket.newRows = new OrderedBlueTable(myLastFiredPacket.deletedRows.schema);
|
myLastFiredPacket.deletedRows = myLastFiredPacket.newRows;
|
||||||
myLastFiredPacket.addedRows = new OrderedBlueTable(myLastFiredPacket.deletedRows.schema);
|
myLastFiredPacket.newRows = new OrderedBlueTable(myLastFiredPacket.deletedRows.schema);
|
||||||
}
|
myLastFiredPacket.addedRows = new OrderedBlueTable(myLastFiredPacket.deletedRows.schema);
|
||||||
|
}
|
||||||
|
|
||||||
protected override void myHandleFirstCall() {
|
protected override void myHandleFirstCall() {
|
||||||
myLastFiredPacket = new DataPacket();
|
requireLastArrivedPacket();
|
||||||
myLastFiredPacket.newRows = new OrderedBlueTable(myLastArrivedPacket.newRows, myTopCount);
|
myLastFiredPacket = new DataPacket();
|
||||||
myLastFiredPacket.addedRows = new OrderedBlueTable(myLastFiredPacket.newRows);
|
myLastFiredPacket.newRows = new OrderedBlueTable(myLastArrivedPacket.newRows, myTopCount);
|
||||||
myLastFiredPacket.deletedRows = new OrderedBlueTable(myLastFiredPacket.newRows.schema);
|
myLastFiredPacket.addedRows = new OrderedBlueTable(myLastFiredPacket.newRows);
|
||||||
}
|
myLastFiredPacket.deletedRows = new OrderedBlueTable(myLastFiredPacket.newRows.schema);
|
||||||
|
}
|
||||||
|
|
||||||
protected override void myHandleIncrementalAdd() { }
|
protected override void myHandleIncrementalAdd() { }
|
||||||
|
|
||||||
protected override void myHandleIncrementalDelete() {
|
protected override void myHandleIncrementalDelete() {
|
||||||
IBlueRowCollection oldRows = myLastFiredPacket.newRows;
|
requireLastArrivedPacket();
|
||||||
myLastFiredPacket.newRows = new OrderedBlueTable(myLastArrivedPacket.newRows, myTopCount);
|
requireLastFiredPacket();
|
||||||
BlueDataUtility.computeDifferences(myLastFiredPacket.newRows,
|
IBlueRowCollection oldRows = myLastFiredPacket.newRows;
|
||||||
oldRows,
|
myLastFiredPacket.newRows = new OrderedBlueTable(myLastArrivedPacket.newRows, myTopCount);
|
||||||
myLastFiredPacket.schema.columnNames,
|
BlueDataUtility.computeDifferences(myLastFiredPacket.newRows,
|
||||||
out myLastFiredPacket.deletedRows,
|
oldRows,
|
||||||
out myLastFiredPacket.addedRows);
|
myLastFiredPacket.schema.columnNames,
|
||||||
myFireSwitch = myLastFiredPacket.addedRows.Count + myLastFiredPacket.deletedRows.Count == 0 ? false : true;
|
out myLastFiredPacket.deletedRows,
|
||||||
}
|
out myLastFiredPacket.addedRows);
|
||||||
}
|
myFireSwitch = myLastFiredPacket.addedRows.Count + myLastFiredPacket.deletedRows.Count == 0 ? false : true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,10 @@
|
|||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
|
||||||
namespace BCG {
|
namespace BCG {
|
||||||
|
|
||||||
public class AlphabetizeColumnsStream : ViewStream {
|
public class AlphabetizeColumnsStream : ViewStream {
|
||||||
private ViewStream mySrc;
|
private ViewStream mySrc;
|
||||||
private IBlueTableSchema mySchema = null;
|
IBlueTableSchema? mySchema = null;
|
||||||
|
|
||||||
public AlphabetizeColumnsStream(ViewStream src) {
|
public AlphabetizeColumnsStream(ViewStream src) {
|
||||||
mySrc = src;
|
mySrc = src;
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
|
|
||||||
namespace BCG
|
namespace BCG
|
||||||
{
|
{
|
||||||
public class AppendStreamModified : ViewStream
|
public class AppendStreamModified : ViewStream
|
||||||
{
|
{
|
||||||
private AppendCollection myColl = new AppendCollection ();
|
private AppendCollection myColl = new AppendCollection ();
|
||||||
private ViewStream myLeftStream, myRightstream;
|
ViewStream? myLeftStream, myRightstream;
|
||||||
|
|
||||||
public AppendStreamModified (ViewStream leftStream, ViewStream rightStream)
|
public AppendStreamModified (ViewStream leftStream, ViewStream rightStream)
|
||||||
{
|
{
|
||||||
myLeftStream = leftStream;
|
myLeftStream = leftStream;
|
||||||
@@ -15,11 +15,24 @@ namespace BCG
|
|||||||
|
|
||||||
public AppendStreamModified (ViewStream[] vss)
|
public AppendStreamModified (ViewStream[] vss)
|
||||||
{
|
{
|
||||||
|
switch (vss.Length) {
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
mySetRealSource (vss[0]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mySetRealSource(
|
||||||
|
vss[1..].Aggregate(
|
||||||
|
new AppendStreamModified(new[] { vss[0] }),
|
||||||
|
(asm, vs) => new AppendStreamModified(asm, vs)));
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (vss.Length == 1)
|
if (vss.Length == 1)
|
||||||
mySetRealSource (vss[0]);
|
mySetRealSource (vss[0]);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AppendStreamModified rv = null;
|
AppendStreamModified? rv = null;
|
||||||
foreach (ViewStream s in vss)
|
foreach (ViewStream s in vss)
|
||||||
rv = rv == null ? new AppendStreamModified (new ViewStream[] {s}) : new AppendStreamModified (rv, s);
|
rv = rv == null ? new AppendStreamModified (new ViewStream[] {s}) : new AppendStreamModified (rv, s);
|
||||||
mySetRealSource (rv);
|
mySetRealSource (rv);
|
||||||
|
|||||||
@@ -43,6 +43,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Net", "..\cs\Bts.Net\Bt
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.IO.Compression", "..\cs\Bts.IO.Compression\Bts.IO.Compression.csproj", "{3BF059B0-51C0-44A8-8297-9B7464DC5BA3}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.IO.Compression", "..\cs\Bts.IO.Compression\Bts.IO.Compression.csproj", "{3BF059B0-51C0-44A8-8297-9B7464DC5BA3}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Collections", "..\cs\Bts.Collections\Bts.Collections.csproj", "{ADBEBCB3-5367-431B-AFC8-F57CAF9F029D}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Core", "..\cs\Bts.Core\Bts.Core.csproj", "{4E3D817D-9A0A-40F4-A1A1-4865375F40DD}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Disposables", "..\cs\Bts.Disposables\Bts.Disposables.csproj", "{ED034E82-07F4-473D-9C3A-F5EF9C961CFD}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bts.Numerics", "..\cs\Bts.Numerics\Bts.Numerics.csproj", "{9A3E289A-3A88-4A76-AD0B-32C12EBA1B8B}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -293,6 +301,54 @@ Global
|
|||||||
{3BF059B0-51C0-44A8-8297-9B7464DC5BA3}.Release|x64.Build.0 = Release|Any CPU
|
{3BF059B0-51C0-44A8-8297-9B7464DC5BA3}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{3BF059B0-51C0-44A8-8297-9B7464DC5BA3}.Release|x86.ActiveCfg = Release|Any CPU
|
{3BF059B0-51C0-44A8-8297-9B7464DC5BA3}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{3BF059B0-51C0-44A8-8297-9B7464DC5BA3}.Release|x86.Build.0 = Release|Any CPU
|
{3BF059B0-51C0-44A8-8297-9B7464DC5BA3}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{ADBEBCB3-5367-431B-AFC8-F57CAF9F029D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{ADBEBCB3-5367-431B-AFC8-F57CAF9F029D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{ADBEBCB3-5367-431B-AFC8-F57CAF9F029D}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{ADBEBCB3-5367-431B-AFC8-F57CAF9F029D}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{ADBEBCB3-5367-431B-AFC8-F57CAF9F029D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{ADBEBCB3-5367-431B-AFC8-F57CAF9F029D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{ADBEBCB3-5367-431B-AFC8-F57CAF9F029D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{ADBEBCB3-5367-431B-AFC8-F57CAF9F029D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{ADBEBCB3-5367-431B-AFC8-F57CAF9F029D}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{ADBEBCB3-5367-431B-AFC8-F57CAF9F029D}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{ADBEBCB3-5367-431B-AFC8-F57CAF9F029D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{ADBEBCB3-5367-431B-AFC8-F57CAF9F029D}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{4E3D817D-9A0A-40F4-A1A1-4865375F40DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{4E3D817D-9A0A-40F4-A1A1-4865375F40DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{4E3D817D-9A0A-40F4-A1A1-4865375F40DD}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{4E3D817D-9A0A-40F4-A1A1-4865375F40DD}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{4E3D817D-9A0A-40F4-A1A1-4865375F40DD}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{4E3D817D-9A0A-40F4-A1A1-4865375F40DD}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{4E3D817D-9A0A-40F4-A1A1-4865375F40DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{4E3D817D-9A0A-40F4-A1A1-4865375F40DD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{4E3D817D-9A0A-40F4-A1A1-4865375F40DD}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{4E3D817D-9A0A-40F4-A1A1-4865375F40DD}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{4E3D817D-9A0A-40F4-A1A1-4865375F40DD}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{4E3D817D-9A0A-40F4-A1A1-4865375F40DD}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{ED034E82-07F4-473D-9C3A-F5EF9C961CFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{ED034E82-07F4-473D-9C3A-F5EF9C961CFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{ED034E82-07F4-473D-9C3A-F5EF9C961CFD}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{ED034E82-07F4-473D-9C3A-F5EF9C961CFD}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{ED034E82-07F4-473D-9C3A-F5EF9C961CFD}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{ED034E82-07F4-473D-9C3A-F5EF9C961CFD}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{ED034E82-07F4-473D-9C3A-F5EF9C961CFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{ED034E82-07F4-473D-9C3A-F5EF9C961CFD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{ED034E82-07F4-473D-9C3A-F5EF9C961CFD}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{ED034E82-07F4-473D-9C3A-F5EF9C961CFD}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{ED034E82-07F4-473D-9C3A-F5EF9C961CFD}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{ED034E82-07F4-473D-9C3A-F5EF9C961CFD}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{9A3E289A-3A88-4A76-AD0B-32C12EBA1B8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{9A3E289A-3A88-4A76-AD0B-32C12EBA1B8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{9A3E289A-3A88-4A76-AD0B-32C12EBA1B8B}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{9A3E289A-3A88-4A76-AD0B-32C12EBA1B8B}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{9A3E289A-3A88-4A76-AD0B-32C12EBA1B8B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{9A3E289A-3A88-4A76-AD0B-32C12EBA1B8B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{9A3E289A-3A88-4A76-AD0B-32C12EBA1B8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{9A3E289A-3A88-4A76-AD0B-32C12EBA1B8B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{9A3E289A-3A88-4A76-AD0B-32C12EBA1B8B}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{9A3E289A-3A88-4A76-AD0B-32C12EBA1B8B}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{9A3E289A-3A88-4A76-AD0B-32C12EBA1B8B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{9A3E289A-3A88-4A76-AD0B-32C12EBA1B8B}.Release|x86.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ namespace BCG {
|
|||||||
/// with PubSub, as some clients are still using ManagedSubcribers)
|
/// with PubSub, as some clients are still using ManagedSubcribers)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ManagedSubscriber : IManagedSubscriber, IWorker, IDisposable {
|
public class ManagedSubscriber : IManagedSubscriber, IWorker, IDisposable {
|
||||||
private static ManagedSubscriber? _self;
|
|
||||||
private ISubscriberCore _subcore;
|
private ISubscriberCore _subcore;
|
||||||
// private IDictionary myTypedDispatchTable = new Hashtable(),
|
// private IDictionary myTypedDispatchTable = new Hashtable(),
|
||||||
// myRawDispatchTable = new Hashtable();
|
// myRawDispatchTable = new Hashtable();
|
||||||
@@ -34,7 +33,6 @@ namespace BCG {
|
|||||||
ManagedSubscriber(ISubscriberCore subsCore) { _subcore = subsCore; }
|
ManagedSubscriber(ISubscriberCore subsCore) { _subcore = subsCore; }
|
||||||
|
|
||||||
public void doWork() {
|
public void doWork() {
|
||||||
var msg_map = new Dictionary<string, List<bts.PubSubServerMessage>>();
|
|
||||||
var updates = _subcore.get_updates(TimeSpan.Zero);
|
var updates = _subcore.get_updates(TimeSpan.Zero);
|
||||||
if (updates.Count() == 0)
|
if (updates.Count() == 0)
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -45,11 +45,7 @@ namespace BCG
|
|||||||
get { return myConnInfo; }
|
get { return myConnInfo; }
|
||||||
}
|
}
|
||||||
|
|
||||||
override public string ToString()
|
public override string ToString() =>
|
||||||
{
|
$"type: {myMsgType} conn: {myConnInfo} msg: {myMsg?.Length ?? 0}";
|
||||||
Func<byte[], int> len = (byte[] m) => { return m == null ? 0 : m.Length; };
|
|
||||||
return $"type: {myMsgType} conn: {myConnInfo} msg: {len(myMsg)}";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -46,7 +46,7 @@ namespace bts {
|
|||||||
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(5));
|
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(5));
|
||||||
_accept_socket.BeginAccept(new AsyncCallback(_on_accept), new object[] { });
|
_accept_socket.BeginAccept(new AsyncCallback(_on_accept), new object[] { });
|
||||||
if (ex is OutOfMemoryException)
|
if (ex is OutOfMemoryException)
|
||||||
throw ex;
|
throw;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
new_sock.LingerState = new LingerOption(false, 0);
|
new_sock.LingerState = new LingerOption(false, 0);
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
|
using bts;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Collections;
|
using System.Text;
|
||||||
using bts;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Reflection;
|
|
||||||
|
|
||||||
namespace BCG {
|
namespace BCG {
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -69,7 +68,8 @@ namespace BCG {
|
|||||||
|
|
||||||
public static byte[] getBytesFromStream(params Stream[] streams) {
|
public static byte[] getBytesFromStream(params Stream[] streams) {
|
||||||
long totalSize = 0;
|
long totalSize = 0;
|
||||||
BinaryWriter bw = new BinaryWriter(new MemoryStream());
|
using var ms = new MemoryStream();
|
||||||
|
using var bw = new BinaryWriter(ms, Encoding.UTF8, true);
|
||||||
foreach (Stream s in streams)
|
foreach (Stream s in streams)
|
||||||
totalSize += s.Length - s.Position;
|
totalSize += s.Length - s.Position;
|
||||||
bw.Write(Convert.ToInt32(totalSize));
|
bw.Write(Convert.ToInt32(totalSize));
|
||||||
@@ -78,7 +78,8 @@ namespace BCG {
|
|||||||
int lengthToReadForThisStream = Convert.ToInt32(s.Length - s.Position);
|
int lengthToReadForThisStream = Convert.ToInt32(s.Length - s.Position);
|
||||||
bw.Write(br.ReadBytes(lengthToReadForThisStream));
|
bw.Write(br.ReadBytes(lengthToReadForThisStream));
|
||||||
}
|
}
|
||||||
return (bw.BaseStream as MemoryStream).ToArray();
|
bw.Flush();
|
||||||
|
return ms.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static byte[] read_bytes(Stream str) {
|
public static byte[] read_bytes(Stream str) {
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ namespace BCG {
|
|||||||
|
|
||||||
public void publish(PubSubClientMessage msg) {
|
public void publish(PubSubClientMessage msg) {
|
||||||
Log.assert(msg.msg_type == PubSubMessageType.PUBLISH);
|
Log.assert(msg.msg_type == PubSubMessageType.PUBLISH);
|
||||||
Log.assert(!String.IsNullOrEmpty(msg.pub_msg.tag_type));
|
Log.assert(!string.IsNullOrEmpty(msg.pub_msg?.tag_type));
|
||||||
bts.Log.Gen.info($"PublisherCore.publish msg: {msg}");
|
bts.Log.Gen.info($"PublisherCore.publish msg: {msg}");
|
||||||
_main_queue.enqueue(msg);
|
_main_queue.enqueue(msg);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ namespace BCG {
|
|||||||
public void doWork() {
|
public void doWork() {
|
||||||
if (_connection_cb != null) {
|
if (_connection_cb != null) {
|
||||||
var conns = _conn_callback_queue.dequeueAll();
|
var conns = _conn_callback_queue.dequeueAll();
|
||||||
foreach (var ci in conns) {
|
foreach (var ci in conns.ExceptNull()) {
|
||||||
_connection_cb(ci.client_url, ci.status);
|
_connection_cb(ci.client_url, ci.status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -175,7 +175,7 @@ namespace BCG {
|
|||||||
case RemoteMessageType.Data:
|
case RemoteMessageType.Data:
|
||||||
// if callback is registered fire it right away, else enqueue it
|
// if callback is registered fire it right away, else enqueue it
|
||||||
if (_data_cb != null)
|
if (_data_cb != null)
|
||||||
_data_cb(sender_rci.ToString(), message.message);
|
_data_cb(sender_rci.ToString(), message.message ?? Array.Empty<byte>());
|
||||||
else
|
else
|
||||||
_received_data_queue.enqueue(new Pair<string, byte[]>(sender_rci.ToString(), message.message));
|
_received_data_queue.enqueue(new Pair<string, byte[]>(sender_rci.ToString(), message.message));
|
||||||
break;
|
break;
|
||||||
@@ -258,7 +258,7 @@ namespace BCG {
|
|||||||
// (which gets called in another thread)
|
// (which gets called in another thread)
|
||||||
private void _handle_new_connections() {
|
private void _handle_new_connections() {
|
||||||
var new_conns = _new_connections.dequeueAll();
|
var new_conns = _new_connections.dequeueAll();
|
||||||
foreach (ITCPConnection conn in new_conns) {
|
foreach (var conn in new_conns.ExceptNull()) {
|
||||||
var peer_rci = conn.get_peer_address();
|
var peer_rci = conn.get_peer_address();
|
||||||
bts.Log.Gen.info($"ManagedTCPMessageHub._handle_new_connections conn: {conn}");
|
bts.Log.Gen.info($"ManagedTCPMessageHub._handle_new_connections conn: {conn}");
|
||||||
///to stop it from being garbabge collected immediatly
|
///to stop it from being garbabge collected immediatly
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ public interface IPubSubState {
|
|||||||
|
|
||||||
ICollection<string> all_tags { get; }
|
ICollection<string> all_tags { get; }
|
||||||
|
|
||||||
byte[] get_content(string tag);
|
byte[]? get_content(string tag);
|
||||||
string getTagType(string tag);
|
string? getTagType(string tag);
|
||||||
void get_all_connections(
|
void get_all_connections(
|
||||||
string tag,
|
string tag,
|
||||||
out Dictionary<string, string> subscribers,
|
out Dictionary<string, string> subscribers,
|
||||||
|
|||||||
@@ -188,11 +188,11 @@ namespace BCG {
|
|||||||
_state.handle_sub(sub_msg); // state keeps the list of all subscribers
|
_state.handle_sub(sub_msg); // state keeps the list of all subscribers
|
||||||
///to all these new subscriber s, send the existing data
|
///to all these new subscriber s, send the existing data
|
||||||
foreach (string tag in sub_msg.tags.empty_if_null()) {
|
foreach (string tag in sub_msg.tags.empty_if_null()) {
|
||||||
byte[] data = _state.get_content(tag);
|
byte[]? data = _state.get_content(tag);
|
||||||
//ie data has been published once
|
//ie data has been published once
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
bts.Log.Gen.info($"ManagedTCPMessgeHub._handle_sub get_content tag: {tag} data len: {data.Length}");
|
bts.Log.Gen.info($"ManagedTCPMessgeHub._handle_sub get_content tag: {tag} data len: {data.Length}");
|
||||||
string tag_type_ = _state.getTagType(tag);
|
string? tag_type_ = _state.getTagType(tag);
|
||||||
var msg_to_send = new PubSubServerMessage() {
|
var msg_to_send = new PubSubServerMessage() {
|
||||||
tag = tag,
|
tag = tag,
|
||||||
tag_type = tag_type_,
|
tag_type = tag_type_,
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ namespace BCG {
|
|||||||
return new string[] { };
|
return new string[] { };
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] get_content(string tag) {
|
public byte[]? get_content(string tag) {
|
||||||
if (!_tag_to_data_map.ContainsKey(tag))
|
if (!_tag_to_data_map.ContainsKey(tag))
|
||||||
return null;
|
return null;
|
||||||
var rv = _tag_to_data_map[tag].get_current_content();
|
var rv = _tag_to_data_map[tag].get_current_content();
|
||||||
@@ -157,7 +157,7 @@ namespace BCG {
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string getTagType(string tag) {
|
public string? getTagType(string tag) {
|
||||||
if (!_tag_to_data_map.ContainsKey(tag))
|
if (!_tag_to_data_map.ContainsKey(tag))
|
||||||
return null;
|
return null;
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace bts {
|
|||||||
public class SingleTagData {
|
public class SingleTagData {
|
||||||
private readonly IPubSubServerTagHandler? _tag_handler;
|
private readonly IPubSubServerTagHandler? _tag_handler;
|
||||||
|
|
||||||
public SingleTagData(string tag, string tag_type, IPubSubServerTagHandler tag_handler) {
|
public SingleTagData(string tag, string tag_type, IPubSubServerTagHandler? tag_handler) {
|
||||||
bts.Log.Gen.info($"SingleTagData constructed for tag: {tag} tag_type: {tag_type}");
|
bts.Log.Gen.info($"SingleTagData constructed for tag: {tag} tag_type: {tag_type}");
|
||||||
this.tag = tag;
|
this.tag = tag;
|
||||||
this.tag_type = tag_type;
|
this.tag_type = tag_type;
|
||||||
|
|||||||
@@ -46,7 +46,6 @@ namespace BCG {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onConnection(ITCPConnection connection) {
|
public void onConnection(ITCPConnection connection) {
|
||||||
string ip; int port;
|
|
||||||
var peer_rci = connection.get_peer_address();
|
var peer_rci = connection.get_peer_address();
|
||||||
bts.Log.Gen.info($"SimpleTCPClient.onConnection connected to server: {peer_rci}, starting task to send data in a loop");
|
bts.Log.Gen.info($"SimpleTCPClient.onConnection connected to server: {peer_rci}, starting task to send data in a loop");
|
||||||
if (_listener != null) {
|
if (_listener != null) {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using bts.config;
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
|
||||||
namespace BCG {
|
namespace BCG {
|
||||||
|
|
||||||
@@ -21,7 +22,9 @@ namespace BCG {
|
|||||||
}
|
}
|
||||||
public class RenkoCalculator {
|
public class RenkoCalculator {
|
||||||
public readonly double brick_size;
|
public readonly double brick_size;
|
||||||
public RenkoBrick current_brick = null;
|
public RenkoBrick? current_brick;
|
||||||
|
|
||||||
|
[MemberNotNull(nameof(current_brick))]
|
||||||
private bool _add_price(double price) {
|
private bool _add_price(double price) {
|
||||||
if (current_brick == null) {
|
if (current_brick == null) {
|
||||||
current_brick = new RenkoBrick {
|
current_brick = new RenkoBrick {
|
||||||
@@ -309,4 +312,4 @@ namespace BCG {
|
|||||||
return wma_values;
|
return wma_values;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
[DataStreamUserRespresentation("nl")]
|
[DataStreamUserRespresentation("nl")]
|
||||||
public class BlueOrbNLStream : ViewStream {
|
public class BlueOrbNLStream : ViewStream {
|
||||||
private readonly string _nl_prompt;
|
private readonly string _nl_prompt;
|
||||||
private ViewStream _nl_to_dsl_stream, _dsl_stream;
|
private ViewStream? _nl_to_dsl_stream, _dsl_stream;
|
||||||
private IDictionary<string, object> _dp_metadata = new Dictionary<string, object>();
|
private IDictionary<string, object> _dp_metadata = new Dictionary<string, object>();
|
||||||
public BlueOrbNLStream(string nl_prompt) {
|
public BlueOrbNLStream(string nl_prompt) {
|
||||||
_nl_prompt = nl_prompt;
|
_nl_prompt = nl_prompt;
|
||||||
|
|||||||
@@ -85,7 +85,8 @@ namespace bts.BlueOrb {
|
|||||||
.GetProperty("choices")[0]
|
.GetProperty("choices")[0]
|
||||||
.GetProperty("message")
|
.GetProperty("message")
|
||||||
.GetProperty("content")
|
.GetProperty("content")
|
||||||
.GetString();
|
.GetString()
|
||||||
|
?? string.Empty;
|
||||||
|
|
||||||
//return gpt_response;
|
//return gpt_response;
|
||||||
DateTime t1 = DateTime.Now;
|
DateTime t1 = DateTime.Now;
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ using BCG.Utilities.General;
|
|||||||
using Bts.PubSub;
|
using Bts.PubSub;
|
||||||
using Bts.SharedStreams.Tables;
|
using Bts.SharedStreams.Tables;
|
||||||
|
|
||||||
|
using Spark.Core.Diagnostics;
|
||||||
|
|
||||||
namespace bts {
|
namespace bts {
|
||||||
// TODO: Use dependency injection to instantiate this stream, and others like it that depend on
|
// TODO: Use dependency injection to instantiate this stream, and others like it that depend on
|
||||||
// ISubscriberCore(Factory). Until then, hide it from DSQA.
|
// ISubscriberCore(Factory). Until then, hide it from DSQA.
|
||||||
@@ -40,7 +42,7 @@ namespace bts {
|
|||||||
foreach (var u in updates) {
|
foreach (var u in updates) {
|
||||||
if (u.tag != "System_AllStatistics")
|
if (u.tag != "System_AllStatistics")
|
||||||
continue;
|
continue;
|
||||||
var tag_infos = TagStatsInfo.deserialize(u.data);
|
var tag_infos = TagStatsInfo.deserialize(ExceptionAssert.NotNull(u.data));
|
||||||
foreach (var ti in tag_infos) {
|
foreach (var ti in tag_infos) {
|
||||||
_tag_map[ti.tag] = ti;
|
_tag_map[ti.tag] = ti;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<ShowMissingItemTypes>false</ShowMissingItemTypes>
|
<ShowMissingItemTypes>false</ShowMissingItemTypes>
|
||||||
<Configuration Condition="'$(configuration)'==''">Debug</Configuration>
|
<Configuration Condition="'$(configuration)'==''">Debug</Configuration>
|
||||||
<EnablePreviewFeatures>true</EnablePreviewFeatures>
|
<EnablePreviewFeatures>true</EnablePreviewFeatures>
|
||||||
<LangVersion>11</LangVersion>
|
<LangVersion>12</LangVersion>
|
||||||
<UseProjectRefs Condition="'$(UseProjectRefs)' == ''">true</UseProjectRefs>
|
<UseProjectRefs Condition="'$(UseProjectRefs)' == ''">true</UseProjectRefs>
|
||||||
<SparkVersion Condition="'$(SparkVersion)' == ''">3.2.0-preview</SparkVersion>
|
<SparkVersion Condition="'$(SparkVersion)' == ''">3.2.0-preview</SparkVersion>
|
||||||
<Version>$(SparkVersion)</Version>
|
<Version>$(SparkVersion)</Version>
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ ARG IMAGE="sparkd"
|
|||||||
ARG CONFIG_DIR="src/app_sparkd/configurations/dev"
|
ARG CONFIG_DIR="src/app_sparkd/configurations/dev"
|
||||||
ARG SOURCE_DIR="install/sparkd-release-gcc"
|
ARG SOURCE_DIR="install/sparkd-release-gcc"
|
||||||
ARG PYTHON_REQUIREMENTS="requirements.txt"
|
ARG PYTHON_REQUIREMENTS="requirements.txt"
|
||||||
|
ARG ENTRYPOINT_SCRIPT="src/app_sparkd/sparkd-entrypoint.sh"
|
||||||
|
|
||||||
# sparkd_base
|
# sparkd_base
|
||||||
FROM bluetradingsystems/linux_dotnet8 AS sparkd_base
|
FROM bluetradingsystems/linux_dotnet8 AS sparkd_base
|
||||||
ARG CONFIG_DIR
|
ARG CONFIG_DIR
|
||||||
ARG SOURCE_DIR
|
ARG SOURCE_DIR
|
||||||
ARG PYTHON_REQUIREMENTS
|
ARG PYTHON_REQUIREMENTS
|
||||||
|
ARG ENTRYPOINT_SCRIPT
|
||||||
|
|
||||||
USER "root"
|
USER "root"
|
||||||
RUN apt-get update && apt-get install -y liblttng-ust-dev
|
RUN apt-get update && apt-get install -y liblttng-ust-dev
|
||||||
@@ -21,6 +23,7 @@ RUN pip3 install -r "/home/bts/bin/requirements.txt"
|
|||||||
USER "bts"
|
USER "bts"
|
||||||
COPY --chown=bts:bts "${SOURCE_DIR}" "."
|
COPY --chown=bts:bts "${SOURCE_DIR}" "."
|
||||||
COPY --chown=bts:bts "${CONFIG_DIR}" "/home/bts/.local/share/bts/sparkd/conf"
|
COPY --chown=bts:bts "${CONFIG_DIR}" "/home/bts/.local/share/bts/sparkd/conf"
|
||||||
|
COPY --chown=bts:bts "${ENTRYPOINT_SCRIPT}" "/home/bts/bin/sparkd-entrypoint.sh"
|
||||||
WORKDIR "/home/bts/bin"
|
WORKDIR "/home/bts/bin"
|
||||||
|
|
||||||
# sparkd
|
# sparkd
|
||||||
@@ -35,6 +38,7 @@ COPY --chown=bts:bts "${MD_RECORDING_DIR}" "/home/bts/.local/share/bts/sparkd/da
|
|||||||
FROM bluetradingsystems/linux_dotnet8 AS sparkd_symbols
|
FROM bluetradingsystems/linux_dotnet8 AS sparkd_symbols
|
||||||
ARG SOURCE_DIR
|
ARG SOURCE_DIR
|
||||||
ARG PYTHON_REQUIREMENTS="requirements.txt"
|
ARG PYTHON_REQUIREMENTS="requirements.txt"
|
||||||
|
ARG ENTRYPOINT_SCRIPT
|
||||||
|
|
||||||
USER "root"
|
USER "root"
|
||||||
RUN apt-get update && apt-get install -y liblttng-ust-dev
|
RUN apt-get update && apt-get install -y liblttng-ust-dev
|
||||||
@@ -47,7 +51,9 @@ RUN pip3 install -r "/home/bts/bin/requirements.txt"
|
|||||||
|
|
||||||
USER "bts"
|
USER "bts"
|
||||||
COPY --chown=bts:bts "${SOURCE_DIR}" "."
|
COPY --chown=bts:bts "${SOURCE_DIR}" "."
|
||||||
|
COPY --chown=bts:bts "${ENTRYPOINT_SCRIPT}" "/home/bts/bin/sparkd-entrypoint.sh"
|
||||||
WORKDIR "/home/bts/bin"
|
WORKDIR "/home/bts/bin"
|
||||||
|
|
||||||
# selected image
|
# selected image
|
||||||
FROM ${IMAGE}
|
FROM ${IMAGE}
|
||||||
|
ENTRYPOINT "./sparkd-entrypoint.sh"
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
SPARKD__CONFIG_DIR=src/app_sparkd/configurations/cme_replay
|
||||||
|
SPARKD__PYTHON_REQUIREMENTS=src/app_sparkd/configurations/cme_replay/requirements.txt
|
||||||
|
SPARKD__ENTRYPOINT=src/app_sparkd/sparkd-entrypoint.sh
|
||||||
|
TZ=America/Chicago
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
requests==2.31.0
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
PublisherOptions {
|
||||||
|
value {
|
||||||
|
network_interface: "0.0.0.0"
|
||||||
|
heartbeat_ms: 5000
|
||||||
|
heartbeat_boot_seconds: 60
|
||||||
|
skip_options: true
|
||||||
|
hot_initial: 1024
|
||||||
|
hot_growth: 1024
|
||||||
|
cold_initial: 8192
|
||||||
|
cold_growth: 2048
|
||||||
|
channel_prefix: ""
|
||||||
|
disable_heartbeat: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MarketDataConfig {
|
||||||
|
value {
|
||||||
|
# glbx{
|
||||||
|
# use_databento: true
|
||||||
|
# databento_settings {
|
||||||
|
# read_from_file: true
|
||||||
|
# key: "db-DgxpuTXneNgVvd7sJCAEKYDhyCApW"
|
||||||
|
# bbo_file_name: "glbx-mdp3-20251103.mbp-1.dbn.zst"
|
||||||
|
# contracts_file_name: "glbx-mdp3-20251103.definition.dbn.zst"
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
# recording{
|
||||||
|
# venue: VENUE_GLBX
|
||||||
|
# num_of_seconds_to_run_file_writer: 240
|
||||||
|
# num_of_seconds_to_run_db_writer : 0
|
||||||
|
# n_book_levels: 10
|
||||||
|
# batch_size: 100 #for the db writer
|
||||||
|
# }
|
||||||
|
replay {
|
||||||
|
venue: VENUE_GLBX
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
Symbols {
|
||||||
|
value {
|
||||||
|
venues {
|
||||||
|
name: "VENUE_GLBX"
|
||||||
|
future: "ES"
|
||||||
|
# option: "E1A"
|
||||||
|
# option: "E1B"
|
||||||
|
# option: "E1C"
|
||||||
|
# option: "E1D"
|
||||||
|
# option: "E2A"
|
||||||
|
# option: "E2B"
|
||||||
|
# option: "E2C"
|
||||||
|
# option: "E2D"
|
||||||
|
# option: "E3A"
|
||||||
|
# option: "E3B"
|
||||||
|
# option: "E3C"
|
||||||
|
# option: "E3D"
|
||||||
|
# option: "E4A"
|
||||||
|
# option: "E4B"
|
||||||
|
# option: "E4C"
|
||||||
|
# option: "E4D"
|
||||||
|
# option: "E5A"
|
||||||
|
# option: "E5B"
|
||||||
|
# option: "E5C"
|
||||||
|
# option: "E5D"
|
||||||
|
# option: "EW1"
|
||||||
|
# option: "EW2"
|
||||||
|
# option: "EW3"
|
||||||
|
# option: "EW4"
|
||||||
|
# option: "ESH9"
|
||||||
|
# option: "ESZ6"
|
||||||
|
# option: "ESH0"
|
||||||
|
# option: "ESM6"
|
||||||
|
# option: "ESZ7"
|
||||||
|
# option: "ESH6"
|
||||||
|
# option: "ESM7"
|
||||||
|
# option: "ESZ8"
|
||||||
|
# option: "ESH7"
|
||||||
|
# option: "ESH8"
|
||||||
|
# option: "ESU6"
|
||||||
|
# option: "ESZ5"
|
||||||
|
# option: "ESZ9"
|
||||||
|
# option: "E1D"
|
||||||
|
# option: "ESZ5"
|
||||||
|
# option: "ES"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Executable
+45
@@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
init_timezone() {
|
||||||
|
tz="${1:-$TZ}"
|
||||||
|
zoneinfo_dir=/usr/share/zoneinfo
|
||||||
|
if [ -f "$zoneinfo_dir/$tz" -a "$(readlink -f /etc/localtime)" != "$zoneinfo_dir/$tz" ]; then
|
||||||
|
echo "Initializing locales and timezone"
|
||||||
|
ln -snf "$zoneinfo_dir/$tz" /etc/localtime
|
||||||
|
sudo echo $tz > /etc/timezone
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
load_env() {
|
||||||
|
f="$1"
|
||||||
|
if [ -e "$f" ]; then
|
||||||
|
echo "Sourcing $f"
|
||||||
|
set -a
|
||||||
|
. "$f"
|
||||||
|
set +a
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
symlink() {
|
||||||
|
src="$1"
|
||||||
|
dst="$2"
|
||||||
|
if [ -L "$dst" ]; then
|
||||||
|
rm "$dst"
|
||||||
|
fi
|
||||||
|
ln -s "$src" "$dst"
|
||||||
|
}
|
||||||
|
|
||||||
|
roll_log() {
|
||||||
|
f="$1"
|
||||||
|
if [ -e "$f" ]; then
|
||||||
|
mv "$f" "${f}_$(date '+%Y%m%d-%H%M')"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
data_root="${HOME:-/home/bts}/.local/share/bts/sparkd"
|
||||||
|
echo bts | sudo -S chown -R bts:bts "$data_root"
|
||||||
|
load_env "$data_root/conf/.env.local"
|
||||||
|
init_timezone "$TZ"
|
||||||
|
roll_log "$data_root/data/logging.sparkd/log"
|
||||||
|
symlink "$data_root/conf/plugins" /home/bts/bin/plugins
|
||||||
|
bash -c "${@:-./sparkd run}"
|
||||||
@@ -10,14 +10,13 @@
|
|||||||
#include "spark/md/MBOServiceServer.h"
|
#include "spark/md/MBOServiceServer.h"
|
||||||
#include "spark/md/MDClient.h"
|
#include "spark/md/MDClient.h"
|
||||||
#include "spark/md/SyntheticSecurityService.h"
|
#include "spark/md/SyntheticSecurityService.h"
|
||||||
#include "spark/md/relay/QueryServer.h"
|
#include "spark/md/relay/query_server.h"
|
||||||
#include "spark/md/service/MarketDataServiceServer.h"
|
#include "spark/md/service/MarketDataServiceServer.h"
|
||||||
#include "spark/metrics/metrics.h"
|
#include "spark/metrics/metrics.h"
|
||||||
#include "spark/metrics/system_metrics.h"
|
#include "spark/metrics/system_metrics.h"
|
||||||
#include "spark/orderman/OrderServiceServer.h"
|
#include "spark/orderman/OrderServiceServer.h"
|
||||||
#include "spark/orderman/events/TradeSummarySignalDispatcher.h"
|
#include "spark/orderman/events/TradeSummarySignalDispatcher.h"
|
||||||
#include "spark/orderman/order_factory/DynamicOrderRegistry.h"
|
#include "spark/orderman/order_factory/DynamicOrderRegistry.h"
|
||||||
#include "spark/os/os.h"
|
|
||||||
#include "spark/os/spark_data_directory.h"
|
#include "spark/os/spark_data_directory.h"
|
||||||
#include "spark/persistence/PersistenceServiceServer.h"
|
#include "spark/persistence/PersistenceServiceServer.h"
|
||||||
#include "spark/plugin/SparkServices.h"
|
#include "spark/plugin/SparkServices.h"
|
||||||
@@ -32,6 +31,7 @@
|
|||||||
#include "sparkd/execution/execution_gateway_provider.h"
|
#include "sparkd/execution/execution_gateway_provider.h"
|
||||||
#include "sparkd/http/WebServer.h"
|
#include "sparkd/http/WebServer.h"
|
||||||
#include "sparkd/md/MarketDataAuxiliaryServiceServer.h"
|
#include "sparkd/md/MarketDataAuxiliaryServiceServer.h"
|
||||||
|
#include "sparkd/md/market_data_session.h"
|
||||||
#include "sparkd/md/recording/MDRecorder.h"
|
#include "sparkd/md/recording/MDRecorder.h"
|
||||||
#include "sparkd/position/MarginServiceServer.h"
|
#include "sparkd/position/MarginServiceServer.h"
|
||||||
#include "sparkd/position/PositionServiceServer.h"
|
#include "sparkd/position/PositionServiceServer.h"
|
||||||
@@ -46,6 +46,7 @@
|
|||||||
namespace bts::cmds {
|
namespace bts::cmds {
|
||||||
|
|
||||||
using bts::api::ServiceContext;
|
using bts::api::ServiceContext;
|
||||||
|
using bts::md::MarketDataSession;
|
||||||
using bts::md::MDClient;
|
using bts::md::MDClient;
|
||||||
using bts::md::TradeSummarySignalDispatcher;
|
using bts::md::TradeSummarySignalDispatcher;
|
||||||
using bts::metrics::MetricsContainer;
|
using bts::metrics::MetricsContainer;
|
||||||
@@ -107,7 +108,7 @@ static void execute() {
|
|||||||
auto py_plugin_man = std::make_shared<python_interop::PluginManager>();
|
auto py_plugin_man = std::make_shared<python_interop::PluginManager>();
|
||||||
// start work loop in background
|
// start work loop in background
|
||||||
py_plugin_man->start_work_thread();
|
py_plugin_man->start_work_thread();
|
||||||
md::cmds::Run::run(py_plugin_man);
|
MarketDataSession md_session{py_plugin_man};
|
||||||
|
|
||||||
api::synthetic::SyntheticSecurityService synthetic_service(sc);
|
api::synthetic::SyntheticSecurityService synthetic_service(sc);
|
||||||
bts::md::MDClient mdclient(
|
bts::md::MDClient mdclient(
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
#include "spark/config/protos/quickbus_cfg.pb.h"
|
#include "spark/config/protos/quickbus_cfg.pb.h"
|
||||||
#include "spark/md/MDClient.h"
|
#include "spark/md/MDClient.h"
|
||||||
#include "spark/md/SyntheticSecurityService.h"
|
#include "spark/md/SyntheticSecurityService.h"
|
||||||
#include "spark/md/relay/QueryServer.h"
|
#include "spark/md/relay/query_server.h"
|
||||||
#include "spark/metrics/metrics.h"
|
#include "spark/metrics/metrics.h"
|
||||||
#include "spark/metrics/system_metrics.h"
|
#include "spark/metrics/system_metrics.h"
|
||||||
#include "spark/quickbus/core/Quickbus.h"
|
#include "spark/quickbus/core/Quickbus.h"
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#include "DumpSecurity.h"
|
#include "DumpSecurity.h"
|
||||||
#include "spark/api/domain/SecurityType.h"
|
#include "spark/api/domain/SecurityType.h"
|
||||||
#include "spark/config/protos/market_data.pb.h"
|
#include "spark/config/protos/market_data.pb.h"
|
||||||
#include "spark/core/TableFormatter.h"
|
|
||||||
#include "spark/domain_model/Security.h"
|
#include "spark/domain_model/Security.h"
|
||||||
#include "spark/domain_model/Security.pb.h"
|
#include "spark/domain_model/Security.pb.h"
|
||||||
#include "spark/domain_model/SecurityType.h"
|
#include "spark/domain_model/SecurityType.h"
|
||||||
#include "spark/domain_model/Venue.h"
|
#include "spark/domain_model/Venue.h"
|
||||||
|
#include "spark/format/table.h"
|
||||||
#include "spark/md/Diag/ShmDumper.h"
|
#include "spark/md/Diag/ShmDumper.h"
|
||||||
#include "spark/md/SecurityDB.h"
|
#include "spark/md/SecurityDB.h"
|
||||||
#include "spark/md/SymbolLoader.h"
|
#include "spark/md/SymbolLoader.h"
|
||||||
@@ -23,7 +23,8 @@ using bts::api::SecurityType;
|
|||||||
using bts::api::SecurityType_Name;
|
using bts::api::SecurityType_Name;
|
||||||
using bts::api::Venue;
|
using bts::api::Venue;
|
||||||
using bts::api::venue_parse_smart;
|
using bts::api::venue_parse_smart;
|
||||||
using bts::core::TableFormatter;
|
using bts::format::format_table;
|
||||||
|
using bts::format::detail::TableSchema;
|
||||||
using bts::md::securitytype_of;
|
using bts::md::securitytype_of;
|
||||||
using bts::md::SymbolLoader;
|
using bts::md::SymbolLoader;
|
||||||
using bts::md::db::load_metadata;
|
using bts::md::db::load_metadata;
|
||||||
@@ -69,7 +70,7 @@ void print_securities(function<bool(const Security &)> predicate) {
|
|||||||
|
|
||||||
void print_db_securities(function<bool(const Security &)> predicate) {
|
void print_db_securities(function<bool(const Security &)> predicate) {
|
||||||
vector<Security> secs;
|
vector<Security> secs;
|
||||||
const TableFormatter::Schema<Security> schema{
|
const TableSchema<Security> schema{
|
||||||
make_tuple(
|
make_tuple(
|
||||||
"id", 12, [](const Security &s) { return std::to_string(s.id()); }),
|
"id", 12, [](const Security &s) { return std::to_string(s.id()); }),
|
||||||
make_tuple(
|
make_tuple(
|
||||||
@@ -93,7 +94,7 @@ void print_db_securities(function<bool(const Security &)> predicate) {
|
|||||||
secs.push_back(sec);
|
secs.push_back(sec);
|
||||||
};
|
};
|
||||||
load_securities([](auto) { return true; }, on_sec);
|
load_securities([](auto) { return true; }, on_sec);
|
||||||
TableFormatter::format(std::cout, secs, schema);
|
format_table(std::cout, secs, schema);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T, class ParseT = function<bool(const string &, T *)>>
|
template <class T, class ParseT = function<bool(const string &, T *)>>
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
#include "spark/api/services/native_order_type.h"
|
#include "spark/api/services/native_order_type.h"
|
||||||
#include "spark/api/services/time_in_force.h"
|
#include "spark/api/services/time_in_force.h"
|
||||||
#include "spark/config/protos/jetfix.pb.h"
|
#include "spark/config/protos/jetfix.pb.h"
|
||||||
#include "spark/core/TimeStamp.h"
|
#include "spark/core/time_stamp.h"
|
||||||
#include "spark/core/start_stop_state_machine.h"
|
#include "spark/core/start_stop_state_machine.h"
|
||||||
#include "spark/domain/tick_utils.h"
|
#include "spark/domain/tick_utils.h"
|
||||||
#include "spark/domain_model/Security.h"
|
#include "spark/domain_model/Security.h"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#include "spark/api/md/MarketDataConfig.pb.h"
|
#include "spark/api/md/MarketDataConfig.pb.h"
|
||||||
#include "spark/api/md/MarketDataConfigUtils.h"
|
#include "spark/api/md/MarketDataConfigUtils.h"
|
||||||
#include "spark/core/FMT.h"
|
#include "spark/core/FMT.h"
|
||||||
#include "spark/core/TimeSpan.h"
|
#include "spark/core/time_span.h"
|
||||||
#include "spark/domain/DomainSecurityUtils.h"
|
#include "spark/domain/DomainSecurityUtils.h"
|
||||||
#include "spark/domain/SecurityID.h"
|
#include "spark/domain/SecurityID.h"
|
||||||
#include "spark/domain_model/Venue.h"
|
#include "spark/domain_model/Venue.h"
|
||||||
@@ -141,5 +141,6 @@ MarketDataGateway::MarketDataGateway(
|
|||||||
MarketDataGateway::~MarketDataGateway() = default;
|
MarketDataGateway::~MarketDataGateway() = default;
|
||||||
|
|
||||||
void MarketDataGateway::start() { me_->start(); }
|
void MarketDataGateway::start() { me_->start(); }
|
||||||
|
void MarketDataGateway::stop() { me_->stop(); }
|
||||||
|
|
||||||
} // namespace bts::md
|
} // namespace bts::md
|
||||||
@@ -29,6 +29,7 @@ class MarketDataGateway {
|
|||||||
~MarketDataGateway();
|
~MarketDataGateway();
|
||||||
|
|
||||||
void start();
|
void start();
|
||||||
|
void stop();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct PImpl;
|
struct PImpl;
|
||||||
|
|||||||
@@ -15,8 +15,8 @@
|
|||||||
#include "spark/api/domain/SecurityType.h"
|
#include "spark/api/domain/SecurityType.h"
|
||||||
#include "spark/api/domain/Venue.h"
|
#include "spark/api/domain/Venue.h"
|
||||||
#include "spark/api/md/PyMarketDataProviderConfig.pb.h"
|
#include "spark/api/md/PyMarketDataProviderConfig.pb.h"
|
||||||
#include "spark/core/TimeSpan.h"
|
#include "spark/core/time_span.h"
|
||||||
#include "spark/core/TimeStamp.h"
|
#include "spark/core/time_stamp.h"
|
||||||
#include "spark/domain/AggressorSide.h"
|
#include "spark/domain/AggressorSide.h"
|
||||||
#include "spark/domain/FutureSecurity.h"
|
#include "spark/domain/FutureSecurity.h"
|
||||||
#include "spark/domain/Security.h"
|
#include "spark/domain/Security.h"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/core/EnumMacros.h"
|
#include "spark/core/enum_macros.h"
|
||||||
#include "spark/core/FMT_IMPL.h"
|
#include "spark/core/FMT_IMPL.h"
|
||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/core/EnumMacros.h"
|
#include "spark/core/enum_macros.h"
|
||||||
#include "spark/core/FMT_IMPL.h"
|
#include "spark/core/FMT_IMPL.h"
|
||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/core/EnumMacros.h"
|
#include "spark/core/enum_macros.h"
|
||||||
#include "spark/core/FMT_IMPL.h"
|
#include "spark/core/FMT_IMPL.h"
|
||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/core/EnumMacros.h"
|
#include "spark/core/enum_macros.h"
|
||||||
#include "spark/core/FMT_IMPL.h"
|
#include "spark/core/FMT_IMPL.h"
|
||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ namespace bts::md::binance {
|
|||||||
*/
|
*/
|
||||||
class BinanceMiniTickerEventType {
|
class BinanceMiniTickerEventType {
|
||||||
// Unlike most binance-related enums, this one isn't defined via macros (in
|
// Unlike most binance-related enums, this one isn't defined via macros (in
|
||||||
// EnumMacros.h). The macros assume the enum value names are identical to
|
// enum_macros.h). The macros assume the enum value names are identical to
|
||||||
// their json field counter-parts. Unfortunately, one of the json fields for
|
// their json field counter-parts. Unfortunately, one of the json fields for
|
||||||
// this enum, '24hrMiniTicker', isn't a legal name in cpp.
|
// this enum, '24hrMiniTicker', isn't a legal name in cpp.
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#ifdef SPARK_ENABLE_CCAPI
|
#ifdef SPARK_ENABLE_CCAPI
|
||||||
#include "BinanceMiniTickerUpdate.h"
|
#include "BinanceMiniTickerUpdate.h"
|
||||||
#include "spark/core/TimeStamp.h"
|
#include "spark/core/time_stamp.h"
|
||||||
#include "spark/domain/Price.h"
|
#include "spark/domain/Price.h"
|
||||||
#include "spark/domain/Quantity.h"
|
#include "spark/domain/Quantity.h"
|
||||||
#include "spark/domain/SecurityMarketDataStatistics.h"
|
#include "spark/domain/SecurityMarketDataStatistics.h"
|
||||||
@@ -21,10 +21,11 @@ using bts::domain::SecurityMarketDataStatistics;
|
|||||||
using bts::io::JsonReader;
|
using bts::io::JsonReader;
|
||||||
using std::map;
|
using std::map;
|
||||||
using std::string;
|
using std::string;
|
||||||
|
using std::string_view;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
|
|
||||||
static bool parse(
|
static bool parse(
|
||||||
const map<string, string> &name_values,
|
const map<string_view, string> &name_values,
|
||||||
vector<BinanceMiniTickerUpdate> &ticker_upds) {
|
vector<BinanceMiniTickerUpdate> &ticker_upds) {
|
||||||
auto it = name_values.find(CCAPI_HTTP_BODY);
|
auto it = name_values.find(CCAPI_HTTP_BODY);
|
||||||
if (it == name_values.end()) {
|
if (it == name_values.end()) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/core/TimeStamp.h"
|
#include "spark/core/time_stamp.h"
|
||||||
#include "spark/domain/SecurityMarketDataStatistics.h"
|
#include "spark/domain/SecurityMarketDataStatistics.h"
|
||||||
#include "sparkd/md/binance/BinanceMiniTickerEventType.h"
|
#include "sparkd/md/binance/BinanceMiniTickerEventType.h"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/core/EnumMacros.h"
|
#include "spark/core/enum_macros.h"
|
||||||
#include "spark/core/FMT_IMPL.h"
|
#include "spark/core/FMT_IMPL.h"
|
||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/core/EnumMacros.h"
|
#include "spark/core/enum_macros.h"
|
||||||
#include "spark/core/FMT_IMPL.h"
|
#include "spark/core/FMT_IMPL.h"
|
||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include "BinancePriceStatistics.h"
|
#include "BinancePriceStatistics.h"
|
||||||
#include "spark/core/TimeStamp.h"
|
#include "spark/core/time_stamp.h"
|
||||||
#include "spark/domain/Price.h"
|
#include "spark/domain/Price.h"
|
||||||
#include "spark/domain/Quantity.h"
|
#include "spark/domain/Quantity.h"
|
||||||
#include "spark/domain/SecurityMarketDataStatistics.h"
|
#include "spark/domain/SecurityMarketDataStatistics.h"
|
||||||
@@ -21,10 +21,11 @@ using bts::domain::SecurityMarketDataStatistics;
|
|||||||
using bts::io::JsonReader;
|
using bts::io::JsonReader;
|
||||||
using std::map;
|
using std::map;
|
||||||
using std::string;
|
using std::string;
|
||||||
|
using std::string_view;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
|
|
||||||
static bool parse(
|
static bool parse(
|
||||||
const map<string, string> &name_values,
|
const map<string_view, string> &name_values,
|
||||||
vector<BinancePriceStatistics> &result) {
|
vector<BinancePriceStatistics> &result) {
|
||||||
CCApiReader ccapi_reader{&name_values};
|
CCApiReader ccapi_reader{&name_values};
|
||||||
nlohmann::json js;
|
nlohmann::json js;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/core/TimeStamp.h"
|
#include "spark/core/time_stamp.h"
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/api/domain/Currency.pb.h"
|
#include "spark/api/domain/Currency.pb.h"
|
||||||
#include "spark/core/EnumMacros.h"
|
#include "spark/core/enum_macros.h"
|
||||||
#include "spark/core/FMT_IMPL.h"
|
#include "spark/core/FMT_IMPL.h"
|
||||||
|
|
||||||
#include <boost/algorithm/string/case_conv.hpp>
|
#include <boost/algorithm/string/case_conv.hpp>
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ struct BinanceSecurityRequestor::PImpl {
|
|||||||
for (const auto *msg : msgs) {
|
for (const auto *msg : msgs) {
|
||||||
bts_assert_msgf(
|
bts_assert_msgf(
|
||||||
msg->getType() == ccapi::Message::Type::GENERIC_PUBLIC_REQUEST,
|
msg->getType() == ccapi::Message::Type::GENERIC_PUBLIC_REQUEST,
|
||||||
"Received msg w/ unexpected type:\n{}", msg->toStringPretty());
|
"Received msg w/ unexpected type:\n{}", msg->toPrettyString());
|
||||||
parse_secs(*msg, types, added_secs);
|
parse_secs(*msg, types, added_secs);
|
||||||
}
|
}
|
||||||
auto added_sec_descs = get_sec_descs(added_secs);
|
auto added_sec_descs = get_sec_descs(added_secs);
|
||||||
@@ -214,7 +214,7 @@ struct BinanceSecurityRequestor::PImpl {
|
|||||||
_FATAL_MSGF(
|
_FATAL_MSGF(
|
||||||
"on_exchange_info. {} event was unexpected:\n{}",
|
"on_exchange_info. {} event was unexpected:\n{}",
|
||||||
ccapi::Event::typeToString(event.getType()),
|
ccapi::Event::typeToString(event.getType()),
|
||||||
event.toStringPretty());
|
event.toPrettyString());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/core/EnumMacros.h"
|
#include "spark/core/enum_macros.h"
|
||||||
#include "spark/core/FMT_IMPL.h"
|
#include "spark/core/FMT_IMPL.h"
|
||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/core/EnumMacros.h"
|
#include "spark/core/enum_macros.h"
|
||||||
#include "spark/core/FMT_IMPL.h"
|
#include "spark/core/FMT_IMPL.h"
|
||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|||||||
+2
-1
@@ -21,10 +21,11 @@ using std::map;
|
|||||||
using std::pair;
|
using std::pair;
|
||||||
using std::size_t;
|
using std::size_t;
|
||||||
using std::string;
|
using std::string;
|
||||||
|
using std::string_view;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
|
|
||||||
static bool parse(
|
static bool parse(
|
||||||
const map<string, string> &name_values,
|
const map<string_view, string> &name_values,
|
||||||
vector<BinanceCoinFuturesPriceStatistics> &result) {
|
vector<BinanceCoinFuturesPriceStatistics> &result) {
|
||||||
CCApiReader ccapi_reader{&name_values};
|
CCApiReader ccapi_reader{&name_values};
|
||||||
nlohmann::json js;
|
nlohmann::json js;
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@ void BinanceCoinFuturesPriceStatisticsAdaptor::on_messages(
|
|||||||
const auto n_total = n_hits + n_misses;
|
const auto n_total = n_hits + n_misses;
|
||||||
_ERROR(
|
_ERROR(
|
||||||
"on_messages. Parse failed on {}/{} elements:\n{}", n_misses,
|
"on_messages. Parse failed on {}/{} elements:\n{}", n_misses,
|
||||||
n_total, event.toStringPretty());
|
n_total, event.toPrettyString());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for (const auto &bsr : binance_stats_recs) {
|
for (const auto &bsr : binance_stats_recs) {
|
||||||
|
|||||||
+2
-2
@@ -177,7 +177,7 @@ struct BinanceCoinFuturesSecurityRequestor::PImpl {
|
|||||||
for (const auto *msg : msgs) {
|
for (const auto *msg : msgs) {
|
||||||
bts_assert_msgf(
|
bts_assert_msgf(
|
||||||
msg->getType() == ccapi::Message::Type::GENERIC_PUBLIC_REQUEST,
|
msg->getType() == ccapi::Message::Type::GENERIC_PUBLIC_REQUEST,
|
||||||
"Received msg w/ unexpected type:\n{}", msg->toStringPretty());
|
"Received msg w/ unexpected type:\n{}", msg->toPrettyString());
|
||||||
parse_secs(*msg, added_secs);
|
parse_secs(*msg, added_secs);
|
||||||
}
|
}
|
||||||
auto added_sec_descs = get_sec_descs(added_secs);
|
auto added_sec_descs = get_sec_descs(added_secs);
|
||||||
@@ -211,7 +211,7 @@ struct BinanceCoinFuturesSecurityRequestor::PImpl {
|
|||||||
_FATAL_MSGF(
|
_FATAL_MSGF(
|
||||||
"on_exchange_info. {} event was unexpected:\n{}",
|
"on_exchange_info. {} event was unexpected:\n{}",
|
||||||
ccapi::Event::typeToString(event.getType()),
|
ccapi::Event::typeToString(event.getType()),
|
||||||
event.toStringPretty());
|
event.toPrettyString());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/core/EnumMacros.h"
|
#include "spark/core/enum_macros.h"
|
||||||
#include "spark/core/FMT_IMPL.h"
|
#include "spark/core/FMT_IMPL.h"
|
||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include "BinanceUsPriceStatistics.h"
|
#include "BinanceUsPriceStatistics.h"
|
||||||
#include "spark/core/TimeStamp.h"
|
#include "spark/core/time_stamp.h"
|
||||||
#include "spark/domain/Price.h"
|
#include "spark/domain/Price.h"
|
||||||
#include "spark/domain/Quantity.h"
|
#include "spark/domain/Quantity.h"
|
||||||
#include "spark/domain/SecurityMarketDataStatistics.h"
|
#include "spark/domain/SecurityMarketDataStatistics.h"
|
||||||
@@ -23,10 +23,11 @@ using std::int64_t;
|
|||||||
using std::map;
|
using std::map;
|
||||||
using std::ostream;
|
using std::ostream;
|
||||||
using std::string;
|
using std::string;
|
||||||
|
using std::string_view;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
|
|
||||||
static bool parse(
|
static bool parse(
|
||||||
const map<string, string> &name_values,
|
const map<string_view, string> &name_values,
|
||||||
vector<BinanceUsPriceStatistics> &result) {
|
vector<BinanceUsPriceStatistics> &result) {
|
||||||
CCApiReader ccapi_reader{&name_values};
|
CCApiReader ccapi_reader{&name_values};
|
||||||
nlohmann::json js;
|
nlohmann::json js;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/core/TimeStamp.h"
|
#include "spark/core/time_stamp.h"
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
|
|||||||
@@ -69,10 +69,10 @@ static vector<string> get_sec_descs(const vector<Security> &sec_ptrs) {
|
|||||||
static void validate_response(const ccapi::Event &event, bool is_expected) {
|
static void validate_response(const ccapi::Event &event, bool is_expected) {
|
||||||
bts_assert_msgf(
|
bts_assert_msgf(
|
||||||
event.getType() == ccapi::Event::Type::RESPONSE,
|
event.getType() == ccapi::Event::Type::RESPONSE,
|
||||||
"Received event w/ unexpected type:\n{}", event.toStringPretty());
|
"Received event w/ unexpected type:\n{}", event.toPrettyString());
|
||||||
bts_assert_msgf(
|
bts_assert_msgf(
|
||||||
is_expected, "Received unexpected response from Binance US:\n{}",
|
is_expected, "Received unexpected response from Binance US:\n{}",
|
||||||
event.toStringPretty());
|
event.toPrettyString());
|
||||||
}
|
}
|
||||||
|
|
||||||
struct BinanceUsSecurityRequestor::PImpl {
|
struct BinanceUsSecurityRequestor::PImpl {
|
||||||
@@ -181,7 +181,7 @@ struct BinanceUsSecurityRequestor::PImpl {
|
|||||||
for (const auto *msg : msgs) {
|
for (const auto *msg : msgs) {
|
||||||
bts_assert_msgf(
|
bts_assert_msgf(
|
||||||
msg->getType() == ccapi::Message::Type::GENERIC_PUBLIC_REQUEST,
|
msg->getType() == ccapi::Message::Type::GENERIC_PUBLIC_REQUEST,
|
||||||
"Received msg w/ unexpected type:\n{}", msg->toStringPretty());
|
"Received msg w/ unexpected type:\n{}", msg->toPrettyString());
|
||||||
parse_secs<T>(*msg, types, added_secs);
|
parse_secs<T>(*msg, types, added_secs);
|
||||||
}
|
}
|
||||||
auto added_sec_descs = get_sec_descs(added_secs);
|
auto added_sec_descs = get_sec_descs(added_secs);
|
||||||
@@ -200,7 +200,7 @@ struct BinanceUsSecurityRequestor::PImpl {
|
|||||||
const CCApiCorrelationID & /*corr_id*/) {
|
const CCApiCorrelationID & /*corr_id*/) {
|
||||||
validate_response(event, exch_info_req_pending);
|
validate_response(event, exch_info_req_pending);
|
||||||
LOG(md, Diag, "Received Binance US exchange info (spots):\n{}",
|
LOG(md, Diag, "Received Binance US exchange info (spots):\n{}",
|
||||||
event.toStringPretty());
|
event.toPrettyString());
|
||||||
update_securities<BinanceUsSpot>(msgs, {SEC_TYPE(SPOT)});
|
update_securities<BinanceUsSpot>(msgs, {SEC_TYPE(SPOT)});
|
||||||
exch_info_req_pending = false;
|
exch_info_req_pending = false;
|
||||||
if (external_req_pending && !is_busy()) {
|
if (external_req_pending && !is_busy()) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/core/EnumMacros.h"
|
#include "spark/core/enum_macros.h"
|
||||||
#include "spark/core/FMT_IMPL.h"
|
#include "spark/core/FMT_IMPL.h"
|
||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "spark/core/EnumMacros.h"
|
#include "spark/core/enum_macros.h"
|
||||||
#include "spark/core/FMT_IMPL.h"
|
#include "spark/core/FMT_IMPL.h"
|
||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|||||||
@@ -21,10 +21,11 @@ using std::map;
|
|||||||
using std::pair;
|
using std::pair;
|
||||||
using std::size_t;
|
using std::size_t;
|
||||||
using std::string;
|
using std::string;
|
||||||
|
using std::string_view;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
|
|
||||||
static bool parse(
|
static bool parse(
|
||||||
const map<string, string> &name_values,
|
const map<string_view, string> &name_values,
|
||||||
vector<BinanceUsdsFuturesPriceStatistics> &result) {
|
vector<BinanceUsdsFuturesPriceStatistics> &result) {
|
||||||
CCApiReader ccapi_reader{&name_values};
|
CCApiReader ccapi_reader{&name_values};
|
||||||
nlohmann::json js;
|
nlohmann::json js;
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@ void BinanceUsdsFuturesPriceStatisticsAdaptor::on_messages(
|
|||||||
const auto n_total = n_hits + n_misses;
|
const auto n_total = n_hits + n_misses;
|
||||||
_ERROR(
|
_ERROR(
|
||||||
"on_messages. Parse failed on {}/{} elements:\n{}", n_misses,
|
"on_messages. Parse failed on {}/{} elements:\n{}", n_misses,
|
||||||
n_total, event.toStringPretty());
|
n_total, event.toPrettyString());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for (const auto &bsr : binance_stats_recs) {
|
for (const auto &bsr : binance_stats_recs) {
|
||||||
|
|||||||
+2
-2
@@ -178,7 +178,7 @@ struct BinanceUsdsFuturesSecurityRequestor::PImpl {
|
|||||||
for (const auto *msg : msgs) {
|
for (const auto *msg : msgs) {
|
||||||
bts_assert_msgf(
|
bts_assert_msgf(
|
||||||
msg->getType() == ccapi::Message::Type::GENERIC_PUBLIC_REQUEST,
|
msg->getType() == ccapi::Message::Type::GENERIC_PUBLIC_REQUEST,
|
||||||
"Received msg w/ unexpected type:\n{}", msg->toStringPretty());
|
"Received msg w/ unexpected type:\n{}", msg->toPrettyString());
|
||||||
parse_secs(*msg, added_secs);
|
parse_secs(*msg, added_secs);
|
||||||
}
|
}
|
||||||
auto added_sec_descs = get_sec_descs(added_secs);
|
auto added_sec_descs = get_sec_descs(added_secs);
|
||||||
@@ -212,7 +212,7 @@ struct BinanceUsdsFuturesSecurityRequestor::PImpl {
|
|||||||
_FATAL_MSGF(
|
_FATAL_MSGF(
|
||||||
"on_exchange_info. {} event was unexpected:\n{}",
|
"on_exchange_info. {} event was unexpected:\n{}",
|
||||||
ccapi::Event::typeToString(event.getType()),
|
ccapi::Event::typeToString(event.getType()),
|
||||||
event.toStringPretty());
|
event.toPrettyString());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "spark/algorithm/string/find.h"
|
||||||
|
#include "spark/algorithm/string/join.h"
|
||||||
#include "spark/core/FMT_IMPL.h"
|
#include "spark/core/FMT_IMPL.h"
|
||||||
#include "spark/core/StringFinder.h"
|
|
||||||
#include "spark/core/StringJoiner.h"
|
|
||||||
#include "spark/utils/bts_assert.h"
|
#include "spark/utils/bts_assert.h"
|
||||||
|
|
||||||
#include <boost/algorithm/string/split.hpp>
|
#include <boost/algorithm/string/split.hpp>
|
||||||
@@ -119,7 +119,7 @@ inline CCApiCorrelationID CCApiCorrelationID::from_string(
|
|||||||
template <class... Parts>
|
template <class... Parts>
|
||||||
inline CCApiCorrelationID CCApiCorrelationID::from_parts(Parts... parts) {
|
inline CCApiCorrelationID CCApiCorrelationID::from_parts(Parts... parts) {
|
||||||
// TODO: create the parts vector/string simultaneously (more efficient)
|
// TODO: create the parts vector/string simultaneously (more efficient)
|
||||||
auto parts_str = core::StringJoiner::join(delimiter(), parts...);
|
auto parts_str = bts::algorithm::join(delimiter(), parts...);
|
||||||
return from_string(parts_str);
|
return from_string(parts_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,7 +231,7 @@ inline void CCApiCorrelationID::advance_(std::size_t len) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cursor_ += len;
|
cursor_ += len;
|
||||||
auto idx = core::StringFinder::find(str_, '.', len);
|
auto idx = bts::algorithm::find_nth(str_, '.', len);
|
||||||
str_ = str_.substr(idx);
|
str_ = str_.substr(idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace bts::md {
|
|||||||
using bts::domain::Quantity;
|
using bts::domain::Quantity;
|
||||||
|
|
||||||
bool CCApiDepthWalker::parse_field(
|
bool CCApiDepthWalker::parse_field(
|
||||||
const std::string &name, const std::string &value) {
|
const std::string_view &name, const std::string &value) {
|
||||||
bts_assert(depth_ptr);
|
bts_assert(depth_ptr);
|
||||||
auto &depth = *depth_ptr;
|
auto &depth = *depth_ptr;
|
||||||
if (name == price_key) {
|
if (name == price_key) {
|
||||||
|
|||||||
Loaded 100 of 531 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user