Browse Source

Smaller names for test benchmark applications resulting in smaller context path urls (#6917)

Updated ffead-cpp to latest master
Sumeet Chhetri 3 years ago
parent
commit
78ab9202bb
100 changed files with 1272 additions and 649 deletions
  1. 127 63
      frameworks/C++/ffead-cpp/benchmark_config.json
  2. 44 44
      frameworks/C++/ffead-cpp/benchmark_config_c1.json
  3. 16 16
      frameworks/C++/ffead-cpp/benchmark_config_c2.json
  4. 32 32
      frameworks/C++/ffead-cpp/benchmark_config_c3.json
  5. 100 100
      frameworks/C++/ffead-cpp/benchmark_config_orig.json
  6. 90 90
      frameworks/C++/ffead-cpp/config.toml
  7. 5 4
      frameworks/C++/ffead-cpp/ffead-cpp-base-debug.dockerfile
  8. 5 4
      frameworks/C++/ffead-cpp/ffead-cpp-base.dockerfile
  9. 4 2
      frameworks/C++/ffead-cpp/ffead-cpp-p10-b.dockerfile
  10. 4 2
      frameworks/C++/ffead-cpp/ffead-cpp-p10.dockerfile
  11. 4 2
      frameworks/C++/ffead-cpp/ffead-cpp-p2-b.dockerfile
  12. 4 2
      frameworks/C++/ffead-cpp/ffead-cpp-p2.dockerfile
  13. 4 2
      frameworks/C++/ffead-cpp/ffead-cpp-p3-b.dockerfile
  14. 4 2
      frameworks/C++/ffead-cpp/ffead-cpp-p3.dockerfile
  15. 4 2
      frameworks/C++/ffead-cpp/ffead-cpp-p4-b.dockerfile
  16. 4 2
      frameworks/C++/ffead-cpp/ffead-cpp-p4.dockerfile
  17. 1 1
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-clibpqb-pool-profiled.dockerfile
  18. 1 1
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-clibpqb-profiled.dockerfile
  19. 5 3
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-clibpqb-twoconn-profiled.dockerfile
  20. 7 0
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-qw-clibpqb-profiled.dockerfile
  21. 7 0
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-qw-pool-profiled-m.dockerfile
  22. 7 0
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-qw-profiled.dockerfile
  23. 1 1
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-clibpqb-profiled.dockerfile
  24. 5 4
      frameworks/C++/ffead-cpp/ffead-cpp-seastar-base.dockerfile
  25. 0 5
      frameworks/C++/ffead-cpp/ffead-cpp-sql-raw-async-clibpqb-pool-profiled-base.dockerfile
  26. 0 5
      frameworks/C++/ffead-cpp/ffead-cpp-sql-raw-async-clibpqb-profiled-base.dockerfile
  27. 1 1
      frameworks/C++/ffead-cpp/ffead-cpp-v-base.dockerfile
  28. 1 1
      frameworks/C++/ffead-cpp/ffead-cpp-v-picov-raw-clibpqb-profiled-base.dockerfile
  29. 1 1
      frameworks/C++/ffead-cpp/ffead-cpp-v-picov-raw-clibpqb-profiled.dockerfile
  30. 1 1
      frameworks/C++/ffead-cpp/ffead-cpp-v-picov-raw-profiled-base.dockerfile
  31. 31 22
      frameworks/C++/ffead-cpp/install_ffead-cpp-framework.sh
  32. 27 11
      frameworks/C++/ffead-cpp/install_ffead-cpp-sql-raw-profiled.sh
  33. 10 10
      frameworks/C++/ffead-cpp/install_ffead-cpp-sql-raw-v-picov-profiled.sh
  34. 62 33
      frameworks/C++/ffead-cpp/run_ffead.sh
  35. 3 1
      frameworks/C++/ffead-cpp/sql-async-profiled-install-clang-dbg.sh
  36. 4 1
      frameworks/C++/ffead-cpp/sql-async-profiled-install-clang.sh
  37. 4 1
      frameworks/C++/ffead-cpp/sql-async-profiled-install.sh
  38. 1 1
      frameworks/C++/ffead-cpp/sql-profiled-install-clang.sh
  39. 1 1
      frameworks/C++/ffead-cpp/sql-profiled-install.sh
  40. 19 15
      frameworks/C++/ffead-cpp/sql-profiled-util.sh
  41. 3 3
      frameworks/C++/ffead-cpp/sql-v-picov-profiled-install.sh
  42. 13 0
      frameworks/C++/ffead-cpp/t1/CMakeLists.txt
  43. 0 0
      frameworks/C++/ffead-cpp/t1/config/application.xml
  44. 0 0
      frameworks/C++/ffead-cpp/t1/config/cachememcached.xml
  45. 0 0
      frameworks/C++/ffead-cpp/t1/config/cachememory.xml
  46. 0 0
      frameworks/C++/ffead-cpp/t1/config/cacheredis.xml
  47. 0 0
      frameworks/C++/ffead-cpp/t1/config/sdormmongo.xml
  48. 0 0
      frameworks/C++/ffead-cpp/t1/config/sdormmysql.xml
  49. 0 0
      frameworks/C++/ffead-cpp/t1/config/sdormpostgresql.xml
  50. 4 4
      frameworks/C++/ffead-cpp/t1/include/TeBkUm.h
  51. 0 0
      frameworks/C++/ffead-cpp/t1/include/TeBkUmWorld.h
  52. 1 1
      frameworks/C++/ffead-cpp/t1/meson.build
  53. 0 0
      frameworks/C++/ffead-cpp/t1/sql-src/TeBkUmWorldmongo.cpp
  54. 0 0
      frameworks/C++/ffead-cpp/t1/sql-src/TeBkUmWorldmongo.h
  55. 0 0
      frameworks/C++/ffead-cpp/t1/sql-src/TeBkUmWorldsql.cpp
  56. 0 0
      frameworks/C++/ffead-cpp/t1/sql-src/TeBkUmWorldsql.h
  57. 12 12
      frameworks/C++/ffead-cpp/t1/src/TeBkUm.cpp
  58. 0 0
      frameworks/C++/ffead-cpp/t1/src/TeBkUmWorld.cpp
  59. 4 4
      frameworks/C++/ffead-cpp/t1/src/autotools/Makefile.am
  60. 0 0
      frameworks/C++/ffead-cpp/t1/tpe/fortunes.tpe
  61. 1 1
      frameworks/C++/ffead-cpp/t1/xmake.lua
  62. 13 0
      frameworks/C++/ffead-cpp/t2/CMakeLists.txt
  63. 0 0
      frameworks/C++/ffead-cpp/t2/config/application.xml
  64. 0 0
      frameworks/C++/ffead-cpp/t2/config/cachememcached.xml
  65. 0 0
      frameworks/C++/ffead-cpp/t2/config/cachememory.xml
  66. 0 0
      frameworks/C++/ffead-cpp/t2/config/cacheredis.xml
  67. 0 0
      frameworks/C++/ffead-cpp/t2/config/sdorm.xml
  68. 4 4
      frameworks/C++/ffead-cpp/t2/include/TeBkUmMgr.h
  69. 1 1
      frameworks/C++/ffead-cpp/t2/meson.build
  70. 13 13
      frameworks/C++/ffead-cpp/t2/src/TeBkUmMgr.cpp
  71. 4 4
      frameworks/C++/ffead-cpp/t2/src/autotools/Makefile.am
  72. 0 0
      frameworks/C++/ffead-cpp/t2/tpe/fortunes.tpe
  73. 1 1
      frameworks/C++/ffead-cpp/t2/xmake.lua
  74. 14 0
      frameworks/C++/ffead-cpp/t3/CMakeLists.txt
  75. 0 0
      frameworks/C++/ffead-cpp/t3/config/application.xml
  76. 0 0
      frameworks/C++/ffead-cpp/t3/config/cachememcached.xml
  77. 0 0
      frameworks/C++/ffead-cpp/t3/config/cachememory.xml
  78. 0 0
      frameworks/C++/ffead-cpp/t3/config/cacheredis.xml
  79. 0 0
      frameworks/C++/ffead-cpp/t3/config/sdorm.xml
  80. 34 7
      frameworks/C++/ffead-cpp/t3/include/TeBkUmLpq.h
  81. 1 1
      frameworks/C++/ffead-cpp/t3/meson.build
  82. 50 33
      frameworks/C++/ffead-cpp/t3/src/TeBkUmLpq.cpp
  83. 4 4
      frameworks/C++/ffead-cpp/t3/src/autotools/Makefile.am
  84. 0 0
      frameworks/C++/ffead-cpp/t3/tpe/fortunes.tpe
  85. 1 1
      frameworks/C++/ffead-cpp/t3/xmake.lua
  86. 14 0
      frameworks/C++/ffead-cpp/t4/CMakeLists.txt
  87. 0 0
      frameworks/C++/ffead-cpp/t4/config/application.xml
  88. 0 0
      frameworks/C++/ffead-cpp/t4/config/cachememory.xml
  89. 0 0
      frameworks/C++/ffead-cpp/t4/config/sdorm.xml
  90. 41 13
      frameworks/C++/ffead-cpp/t4/include/TeBkUmLpqAsync.h
  91. 1 1
      frameworks/C++/ffead-cpp/t4/meson.build
  92. 122 47
      frameworks/C++/ffead-cpp/t4/src/TeBkUmLpqAsync.cpp
  93. 4 4
      frameworks/C++/ffead-cpp/t4/src/autotools/Makefile.am
  94. 0 0
      frameworks/C++/ffead-cpp/t4/tpe/fortunes.tpe
  95. 1 1
      frameworks/C++/ffead-cpp/t4/xmake.lua
  96. 14 0
      frameworks/C++/ffead-cpp/t5/CMakeLists.txt
  97. 24 0
      frameworks/C++/ffead-cpp/t5/config/application.xml
  98. 15 0
      frameworks/C++/ffead-cpp/t5/config/sdorm.xml
  99. 192 0
      frameworks/C++/ffead-cpp/t5/include/TeBkUmLpqQwAsync.h
  100. 15 0
      frameworks/C++/ffead-cpp/t5/meson.build

+ 127 - 63
frameworks/C++/ffead-cpp/benchmark_config.json

@@ -1,35 +1,38 @@
 {
 {
 	"framework": "ffead-cpp",
 	"framework": "ffead-cpp",
 	"tests": [{
 	"tests": [{
-		"p3-b": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+		"default": {
+			"json_url": "/t1/j",
+			"plaintext_url": "/plaintext",
+			"db_url": "/t1/d",
+			"query_url": "/t1/quer?queries=",
+			"fortune_url": "/t1/fortu",
+			"update_url": "/t1/updt?queries=",
+			"cached_query_url": "/t1/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
-			"database": "postgres",
+			"database": "mongodb",
 			"framework": "ffead-cpp",
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"language": "C++",
-			"orm": "Raw",
+			"orm": "Full",
 			"platform": "None",
 			"platform": "None",
 			"webserver": "ffead-cpp",
 			"webserver": "ffead-cpp",
 			"os": "Linux",
 			"os": "Linux",
 			"database_os": "Linux",
 			"database_os": "Linux",
-			"display_name": "p3-b",
-			"notes": "async memory libpq batch patch profiled",
+			"display_name": "ffead-cpp-mongo",
+			"notes": "mongodb redis",
 			"versus": "",
 			"versus": "",
 			"tags": []
 			"tags": []
 		},
 		},
 		"v-picov": {
 		"v-picov": {
-			"json_url": "/te-benchmark-um-pq/json",
+			"json_url": "/t3/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
-			"cached_query_url": "/te-benchmark-um-pq/cached-worlds?count=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
+			"cached_query_url": "/t3/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -41,19 +44,19 @@
 			"webserver": "picov",
 			"webserver": "picov",
 			"os": "Linux",
 			"os": "Linux",
 			"database_os": "Linux",
 			"database_os": "Linux",
-			"display_name": "v",
+			"display_name": "ffead-cpp [v]",
 			"notes": "",
 			"notes": "",
 			"versus": "",
 			"versus": "",
 			"tags": []
 			"tags": []
 		},
 		},
 		"v-picov-raw-profiled": {
 		"v-picov-raw-profiled": {
-			"json_url": "/te-benchmark-um-pq/json",
+			"json_url": "/t3/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
-			"cached_query_url": "/te-benchmark-um-pq/cached-worlds?count=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
+			"cached_query_url": "/t3/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -65,19 +68,19 @@
 			"webserver": "picov",
 			"webserver": "picov",
 			"os": "Linux",
 			"os": "Linux",
 			"database_os": "Linux",
 			"database_os": "Linux",
-			"display_name": "v-prof",
+			"display_name": "ffead-cpp [v-prof]",
 			"notes": "",
 			"notes": "",
 			"versus": "",
 			"versus": "",
 			"tags": []
 			"tags": []
 		},
 		},
 		"v-picov-raw-clibpqb-profiled": {
 		"v-picov-raw-clibpqb-profiled": {
-			"json_url": "/te-benchmark-um-pq/json",
+			"json_url": "/t3/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
-			"cached_query_url": "/te-benchmark-um-pq/cached-worlds?count=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
+			"cached_query_url": "/t3/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -89,16 +92,16 @@
 			"webserver": "picov",
 			"webserver": "picov",
 			"os": "Linux",
 			"os": "Linux",
 			"database_os": "Linux",
 			"database_os": "Linux",
-			"display_name": "v-prof-b",
+			"display_name": "ffead-cpp [v-prof-b]",
 			"notes": "",
 			"notes": "",
 			"versus": "",
 			"versus": "",
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-profiled": {
 		"postgresql-raw-profiled": {
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -110,16 +113,16 @@
 			"webserver": "ffead-cpp",
 			"webserver": "ffead-cpp",
 			"os": "Linux",
 			"os": "Linux",
 			"database_os": "Linux",
 			"database_os": "Linux",
-			"display_name": "pg-raw-prof",
+			"display_name": "ffead-cpp [pg-raw-prof]",
 			"notes": "memory profiled",
 			"notes": "memory profiled",
 			"versus": "",
 			"versus": "",
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-clibpqb-profiled": {
 		"postgresql-raw-clibpqb-profiled": {
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -131,16 +134,16 @@
 			"webserver": "ffead-cpp",
 			"webserver": "ffead-cpp",
 			"os": "Linux",
 			"os": "Linux",
 			"database_os": "Linux",
 			"database_os": "Linux",
-			"display_name": "pg-raw-prof-b",
+			"display_name": "ffead-cpp [pg-raw-prof-b]",
 			"notes": "memory libpq batch patch profiled",
 			"notes": "memory libpq batch patch profiled",
 			"versus": "",
 			"versus": "",
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-profiled": {
 		"postgresql-raw-async-profiled": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -152,16 +155,16 @@
 			"webserver": "ffead-cpp",
 			"webserver": "ffead-cpp",
 			"os": "Linux",
 			"os": "Linux",
 			"database_os": "Linux",
 			"database_os": "Linux",
-			"display_name": "pg-raw-async-prof",
+			"display_name": "ffead-cpp [pg-raw-async-prof]",
 			"notes": "async memory profiled",
 			"notes": "async memory profiled",
 			"versus": "",
 			"versus": "",
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-pool-profiled": {
 		"postgresql-raw-async-pool-profiled": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -173,14 +176,14 @@
 			"webserver": "ffead-cpp",
 			"webserver": "ffead-cpp",
 			"os": "Linux",
 			"os": "Linux",
 			"database_os": "Linux",
 			"database_os": "Linux",
-			"display_name": "pg-raw-async-prof-pool",
+			"display_name": "ffead-cpp [pg-raw-async-prof-pool]",
 			"notes": "async memory profiled",
 			"notes": "async memory profiled",
 			"versus": "",
 			"versus": "",
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-pool-profiled-m": {
 		"postgresql-raw-async-pool-profiled-m": {
-			"query_url": "/te-benchmark-um-pq-async/queriem?queries=",
-			"update_url": "/te-benchmark-um-pq-async/updatem?queries=",
+			"query_url": "/t4/quem?queries=",
+			"update_url": "/t4/updm?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -192,16 +195,16 @@
 			"webserver": "ffead-cpp",
 			"webserver": "ffead-cpp",
 			"os": "Linux",
 			"os": "Linux",
 			"database_os": "Linux",
 			"database_os": "Linux",
-			"display_name": "pg-raw-async-prof-pool-m",
+			"display_name": "ffead-cpp [pg-raw-async-prof-pool-m]",
 			"notes": "async memory profiled",
 			"notes": "async memory profiled",
 			"versus": "",
 			"versus": "",
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-clibpqb-profiled": {
 		"postgresql-raw-async-clibpqb-profiled": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -213,16 +216,16 @@
 			"webserver": "ffead-cpp",
 			"webserver": "ffead-cpp",
 			"os": "Linux",
 			"os": "Linux",
 			"database_os": "Linux",
 			"database_os": "Linux",
-			"display_name": "pg-raw-async-prof-b",
+			"display_name": "ffead-cpp [pg-raw-async-prof-b]",
 			"notes": "async memory libpq batch patch profiled",
 			"notes": "async memory libpq batch patch profiled",
 			"versus": "",
 			"versus": "",
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-clibpqb-pool-profiled": {
 		"postgresql-raw-async-clibpqb-pool-profiled": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -234,10 +237,71 @@
 			"webserver": "ffead-cpp",
 			"webserver": "ffead-cpp",
 			"os": "Linux",
 			"os": "Linux",
 			"database_os": "Linux",
 			"database_os": "Linux",
-			"display_name": "pg-raw-async-prof-b-pool",
+			"display_name": "ffead-cpp [pg-raw-async-prof-b-pool]",
 			"notes": "async memory libpq batch patch profiled",
 			"notes": "async memory libpq batch patch profiled",
 			"versus": "",
 			"versus": "",
 			"tags": []
 			"tags": []
+		},
+		"postgresql-raw-async-qw-profiled": {
+			"db_url": "/t5/d",
+			"query_url": "/t5/quer?queries=",
+			"fortune_url": "/t5/fortu",
+			"update_url": "/t5/updt?queries=",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "postgres",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Raw",
+			"platform": "None",
+			"webserver": "ffead-cpp",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp [pg-raw-async-qw-prof]",
+			"notes": "async memory profiled",
+			"versus": "",
+			"tags": []
+		},
+		"postgresql-raw-async-qw-clibpqb-profiled": {
+			"db_url": "/t5/d",
+			"query_url": "/t5/quer?queries=",
+			"fortune_url": "/t5/fortu",
+			"update_url": "/t5/updt?queries=",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "postgres",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Raw",
+			"platform": "None",
+			"webserver": "ffead-cpp",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp [pg-raw-async-qw-prof-b]",
+			"notes": "async memory libpq batch patch profiled",
+			"versus": "",
+			"tags": []
+		},
+		"postgresql-raw-async-qw-pool-profiled-m": {
+			"query_url": "/t5/quem?queries=",
+			"update_url": "/t5/updm?queries=",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "postgres",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Raw",
+			"platform": "None",
+			"webserver": "ffead-cpp",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp [pg-raw-async-qw-prof-pool-m]",
+			"notes": "async memory profiled",
+			"versus": "",
+			"tags": []
 		}
 		}
 	}]
 	}]
 }
 }

+ 44 - 44
frameworks/C++/ffead-cpp/benchmark_config_c1.json

@@ -2,10 +2,10 @@
 	"framework": "ffead-cpp",
 	"framework": "ffead-cpp",
 	"tests": [{
 	"tests": [{
 		"v-picov": {
 		"v-picov": {
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -23,10 +23,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"v-picov-raw-profiled": {
 		"v-picov-raw-profiled": {
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -44,10 +44,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"v-picov-raw-clibpqb-profiled": {
 		"v-picov-raw-clibpqb-profiled": {
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -65,10 +65,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw": {
 		"postgresql-raw": {
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -86,10 +86,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-profiled": {
 		"postgresql-raw-profiled": {
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -107,10 +107,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-clibpqb-profiled": {
 		"postgresql-raw-clibpqb-profiled": {
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -128,10 +128,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async": {
 		"postgresql-raw-async": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -149,10 +149,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-profiled": {
 		"postgresql-raw-async-profiled": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -170,10 +170,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-pool-profiled": {
 		"postgresql-raw-async-pool-profiled": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -191,10 +191,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-clibpqb-profiled": {
 		"postgresql-raw-async-clibpqb-profiled": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -212,10 +212,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-clibpqb-pool-profiled": {
 		"postgresql-raw-async-clibpqb-pool-profiled": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",

+ 16 - 16
frameworks/C++/ffead-cpp/benchmark_config_c2.json

@@ -2,8 +2,8 @@
 	"framework": "ffead-cpp",
 	"framework": "ffead-cpp",
 	"tests": [{
 	"tests": [{
 		"postgresql-raw-async": {
 		"postgresql-raw-async": {
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"query_url": "/t4/quer?queries=",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -21,8 +21,8 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-profiled": {
 		"postgresql-raw-async-profiled": {
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"query_url": "/t4/quer?queries=",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -40,8 +40,8 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-pool-profiled": {
 		"postgresql-raw-async-pool-profiled": {
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"query_url": "/t4/quer?queries=",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -59,8 +59,8 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-m": {
 		"postgresql-raw-async-m": {
-			"query_url": "/te-benchmark-um-pq-async/queriem?queries=",
-			"update_url": "/te-benchmark-um-pq-async/updatem?queries=",
+			"query_url": "/t4/quem?queries=",
+			"update_url": "/t4/updm?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -78,8 +78,8 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-profiled-m": {
 		"postgresql-raw-async-profiled-m": {
-			"query_url": "/te-benchmark-um-pq-async/queriem?queries=",
-			"update_url": "/te-benchmark-um-pq-async/updatem?queries=",
+			"query_url": "/t4/quem?queries=",
+			"update_url": "/t4/updm?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -97,8 +97,8 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-pool-profiled-m": {
 		"postgresql-raw-async-pool-profiled-m": {
-			"query_url": "/te-benchmark-um-pq-async/queriem?queries=",
-			"update_url": "/te-benchmark-um-pq-async/updatem?queries=",
+			"query_url": "/t4/quem?queries=",
+			"update_url": "/t4/updm?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -116,8 +116,8 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-clibpqb-profiled": {
 		"postgresql-raw-async-clibpqb-profiled": {
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"query_url": "/t4/quer?queries=",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -135,8 +135,8 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-clibpqb-pool-profiled": {
 		"postgresql-raw-async-clibpqb-pool-profiled": {
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"query_url": "/t4/quer?queries=",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",

+ 32 - 32
frameworks/C++/ffead-cpp/benchmark_config_c3.json

@@ -2,10 +2,10 @@
 	"framework": "ffead-cpp",
 	"framework": "ffead-cpp",
 	"tests": [{
 	"tests": [{
 		"p2": {
 		"p2": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -23,10 +23,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"p3": {
 		"p3": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -44,10 +44,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"p4": {
 		"p4": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -65,10 +65,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"p10": {
 		"p10": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -86,10 +86,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"p2-b": {
 		"p2-b": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -107,10 +107,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"p3-b": {
 		"p3-b": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -128,10 +128,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"p4-b": {
 		"p4-b": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -149,10 +149,10 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"p10-b": {
 		"p10-b": {
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",

+ 100 - 100
frameworks/C++/ffead-cpp/benchmark_config_orig.json

@@ -2,13 +2,13 @@
 	"framework": "ffead-cpp",
 	"framework": "ffead-cpp",
 	"tests": [{
 	"tests": [{
 		"default": {
 		"default": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um/db",
-			"query_url": "/te-benchmark-um/queries?queries=",
-			"fortune_url": "/te-benchmark-um/fortunes",
-			"update_url": "/te-benchmark-um/updates?queries=",
-			"cached_query_url": "/te-benchmark-um/cached-worlds?count=",
+			"db_url": "/t1/d",
+			"query_url": "/t1/quer?queries=",
+			"fortune_url": "/t1/fortu",
+			"update_url": "/t1/updt?queries=",
+			"cached_query_url": "/t1/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -26,7 +26,7 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"libreactor": {
 		"libreactor": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -45,7 +45,7 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"crystal-http": {
 		"crystal-http": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -64,7 +64,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"d-hunt": {
 		"d-hunt": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -83,7 +83,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"go-gnet": {
 		"go-gnet": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -102,7 +102,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"rust-actix": {
 		"rust-actix": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -121,13 +121,13 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"v-picov": {
 		"v-picov": {
-			"json_url": "/te-benchmark-um-pq/json",
+			"json_url": "/t3/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
-			"cached_query_url": "/te-benchmark-um-pq/cached-worlds?count=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
+			"cached_query_url": "/t3/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -145,13 +145,13 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"v-picov-raw-profiled": {
 		"v-picov-raw-profiled": {
-			"json_url": "/te-benchmark-um-pq/json",
+			"json_url": "/t3/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
-			"cached_query_url": "/te-benchmark-um-pq/cached-worlds?count=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
+			"cached_query_url": "/t3/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -169,13 +169,13 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"v-picov-raw-clibpqb-profiled": {
 		"v-picov-raw-clibpqb-profiled": {
-			"json_url": "/te-benchmark-um-pq/json",
+			"json_url": "/t3/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
-			"cached_query_url": "/te-benchmark-um-pq/cached-worlds?count=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
+			"cached_query_url": "/t3/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -193,7 +193,7 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"java-firenio": {
 		"java-firenio": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -212,12 +212,12 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"postgresql": {
 		"postgresql": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um/db",
-			"query_url": "/te-benchmark-um/queries?queries=",
-			"fortune_url": "/te-benchmark-um/fortunes",
-			"update_url": "/te-benchmark-um/updates?queries=",
+			"db_url": "/t1/d",
+			"query_url": "/t1/quer?queries=",
+			"fortune_url": "/t1/fortu",
+			"update_url": "/t1/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -235,13 +235,13 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw": {
 		"postgresql-raw": {
-			"json_url": "/te-benchmark-um-pq/json",
+			"json_url": "/t3/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
-			"cached_query_url": "/te-benchmark-um-pq/cached-worlds?count=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
+			"cached_query_url": "/t3/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -259,13 +259,13 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-profiled": {
 		"postgresql-raw-profiled": {
-			"json_url": "/te-benchmark-um-pq/json",
+			"json_url": "/t3/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
-			"cached_query_url": "/te-benchmark-um-pq/cached-worlds?count=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
+			"cached_query_url": "/t3/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -283,13 +283,13 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-clibpqb-profiled": {
 		"postgresql-raw-clibpqb-profiled": {
-			"json_url": "/te-benchmark-um-pq/json",
+			"json_url": "/t3/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um-pq/db",
-			"query_url": "/te-benchmark-um-pq/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq/fortunes",
-			"update_url": "/te-benchmark-um-pq/updates?queries=",
-			"cached_query_url": "/te-benchmark-um-pq/cached-worlds?count=",
+			"db_url": "/t3/d",
+			"query_url": "/t3/quer?queries=",
+			"fortune_url": "/t3/fortu",
+			"update_url": "/t3/updt?queries=",
+			"cached_query_url": "/t3/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -307,13 +307,13 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async": {
 		"postgresql-raw-async": {
-			"json_url": "/te-benchmark-um-pq-async/json",
+			"json_url": "/t4/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
-			"cached_query_url": "/te-benchmark-um-pq-async/cached-worlds?count=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
+			"cached_query_url": "/t4/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -331,13 +331,13 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-profiled": {
 		"postgresql-raw-async-profiled": {
-			"json_url": "/te-benchmark-um-pq-async/json",
+			"json_url": "/t4/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
-			"cached_query_url": "/te-benchmark-um-pq-async/cached-worlds?count=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
+			"cached_query_url": "/t4/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -355,13 +355,13 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"postgresql-raw-async-clibpqb-profiled": {
 		"postgresql-raw-async-clibpqb-profiled": {
-			"json_url": "/te-benchmark-um-pq-async/json",
+			"json_url": "/t4/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um-pq-async/db",
-			"query_url": "/te-benchmark-um-pq-async/queries?queries=",
-			"fortune_url": "/te-benchmark-um-pq-async/fortunes",
-			"update_url": "/te-benchmark-um-pq-async/updates?queries=",
-			"cached_query_url": "/te-benchmark-um-pq-async/cached-worlds?count=",
+			"db_url": "/t4/d",
+			"query_url": "/t4/quer?queries=",
+			"fortune_url": "/t4/fortu",
+			"update_url": "/t4/updt?queries=",
+			"cached_query_url": "/t4/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -379,7 +379,7 @@
 			"tags": []
 			"tags": []
 		},
 		},
 		"nginx": {
 		"nginx": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -398,7 +398,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"seastar": {
 		"seastar": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -417,7 +417,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"apache": {
 		"apache": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -436,13 +436,13 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"mongo-raw": {
 		"mongo-raw": {
-			"json_url": "/te-benchmark-um-mgr/json",
+			"json_url": "/t2/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um-mgr/db",
-			"query_url": "/te-benchmark-um-mgr/queries?queries=",
-			"fortune_url": "/te-benchmark-um-mgr/fortunes",
-			"update_url": "/te-benchmark-um-mgr/updates?queries=",
-			"cached_query_url": "/te-benchmark-um-mgr/cached-worlds?count=",
+			"db_url": "/t2/d",
+			"query_url": "/t2/quer?queries=",
+			"fortune_url": "/t2/fortu",
+			"update_url": "/t2/updt?queries=",
+			"cached_query_url": "/t2/cached-wld?count=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -460,7 +460,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"lithium": {
 		"lithium": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -479,7 +479,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"cinatra": {
 		"cinatra": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -498,7 +498,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"drogon": {
 		"drogon": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -517,7 +517,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"h2o": {
 		"h2o": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -536,7 +536,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"crystal-h2o": {
 		"crystal-h2o": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -555,12 +555,12 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"mysql": {
 		"mysql": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
-			"db_url": "/te-benchmark-um/db",
-			"query_url": "/te-benchmark-um/queries?queries=",
-			"fortune_url": "/te-benchmark-um/fortunes",
-			"update_url": "/te-benchmark-um/updates?queries=",
+			"db_url": "/t1/d",
+			"query_url": "/t1/quer?queries=",
+			"fortune_url": "/t1/fortu",
+			"update_url": "/t1/updt?queries=",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
 			"classification": "Fullstack",
 			"classification": "Fullstack",
@@ -578,7 +578,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"go-fasthttp": {
 		"go-fasthttp": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -597,7 +597,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"julia-http": {
 		"julia-http": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -616,7 +616,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"swift-nio": {
 		"swift-nio": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -635,7 +635,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"rust-hyper": {
 		"rust-hyper": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -654,7 +654,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"rust-thruster": {
 		"rust-thruster": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -673,7 +673,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"rust-rocket": {
 		"rust-rocket": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -692,7 +692,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"v-vweb": {
 		"v-vweb": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -711,7 +711,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"java-rapidoid": {
 		"java-rapidoid": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -730,7 +730,7 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		},
 		},
 		"java-wizzardo-http": {
 		"java-wizzardo-http": {
-			"json_url": "/te-benchmark-um/json",
+			"json_url": "/t1/j",
 			"plaintext_url": "/plaintext",
 			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"port": 8080,
 			"approach": "Realistic",
 			"approach": "Realistic",
@@ -749,4 +749,4 @@
 			"tags": ["broken"]
 			"tags": ["broken"]
 		}
 		}
 	}]
 	}]
-}
+}

+ 90 - 90
frameworks/C++/ffead-cpp/config.toml

@@ -3,11 +3,11 @@ name = "ffead-cpp"
 
 
 [main]
 [main]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
-urls.db = "/te-benchmark-um/db"
-urls.query = "/te-benchmark-um/queries?queries="
-urls.update = "/te-benchmark-um/updates?queries="
-urls.fortune = "/te-benchmark-um/fortunes"
+urls.json = "/t1/j"
+urls.db = "/t1/d"
+urls.query = "/t1/quer?queries="
+urls.update = "/t1/updt?queries="
+urls.fortune = "/t1/fortu"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "mongodb"
 database = "mongodb"
@@ -20,7 +20,7 @@ versus = ""
 
 
 [libreactor]
 [libreactor]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -33,7 +33,7 @@ versus = ""
 
 
 [crystal-http]
 [crystal-http]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -46,7 +46,7 @@ versus = ""
 
 
 [d-hunt]
 [d-hunt]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -59,7 +59,7 @@ versus = ""
 
 
 [go-gnet]
 [go-gnet]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -72,7 +72,7 @@ versus = ""
 
 
 [rust-actix]
 [rust-actix]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -85,12 +85,12 @@ versus = ""
 
 
 [v-picov]
 [v-picov]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um-pq/json"
-urls.db = "/te-benchmark-um-pq/db"
-urls.query = "/te-benchmark-um-pq/queries?queries="
-urls.update = "/te-benchmark-um-pq/updates?queries="
-urls.fortune = "/te-benchmark-um-pq/fortunes"
-urls.cached_query = "/te-benchmark-um-pq/cached-worlds?count="
+urls.json = "/t3/j"
+urls.db = "/t3/d"
+urls.query = "/t3/quer?queries="
+urls.update = "/t3/updt?queries="
+urls.fortune = "/t3/fortu"
+urls.cached_query = "/t3/cached-wld?count="
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "postgres"
 database = "postgres"
@@ -103,12 +103,12 @@ versus = ""
 
 
 [v-picov-raw-profiled]
 [v-picov-raw-profiled]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um-pq/json"
-urls.db = "/te-benchmark-um-pq/db"
-urls.query = "/te-benchmark-um-pq/queries?queries="
-urls.update = "/te-benchmark-um-pq/updates?queries="
-urls.fortune = "/te-benchmark-um-pq/fortunes"
-urls.cached_query = "/te-benchmark-um-pq/cached-worlds?count="
+urls.json = "/t3/j"
+urls.db = "/t3/d"
+urls.query = "/t3/quer?queries="
+urls.update = "/t3/updt?queries="
+urls.fortune = "/t3/fortu"
+urls.cached_query = "/t3/cached-wld?count="
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "postgres"
 database = "postgres"
@@ -121,12 +121,12 @@ versus = ""
 
 
 [v-picov-raw-clibpqb-profiled]
 [v-picov-raw-clibpqb-profiled]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um-pq/json"
-urls.db = "/te-benchmark-um-pq/db"
-urls.query = "/te-benchmark-um-pq/queries?queries="
-urls.update = "/te-benchmark-um-pq/updates?queries="
-urls.fortune = "/te-benchmark-um-pq/fortunes"
-urls.cached_query = "/te-benchmark-um-pq/cached-worlds?count="
+urls.json = "/t3/j"
+urls.db = "/t3/d"
+urls.query = "/t3/quer?queries="
+urls.update = "/t3/updt?queries="
+urls.fortune = "/t3/fortu"
+urls.cached_query = "/t3/cached-wld?count="
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "postgres"
 database = "postgres"
@@ -139,7 +139,7 @@ versus = ""
 
 
 [java-firenio]
 [java-firenio]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -152,11 +152,11 @@ versus = ""
 
 
 [postgresql]
 [postgresql]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
-urls.db = "/te-benchmark-um/db"
-urls.query = "/te-benchmark-um/queries?queries="
-urls.update = "/te-benchmark-um/updates?queries="
-urls.fortune = "/te-benchmark-um/fortunes"
+urls.json = "/t1/j"
+urls.db = "/t1/d"
+urls.query = "/t1/quer?queries="
+urls.update = "/t1/updt?queries="
+urls.fortune = "/t1/fortu"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "postgres"
 database = "postgres"
@@ -169,12 +169,12 @@ versus = ""
 
 
 [postgresql-raw]
 [postgresql-raw]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um-pq/json"
-urls.db = "/te-benchmark-um-pq/db"
-urls.query = "/te-benchmark-um-pq/queries?queries="
-urls.update = "/te-benchmark-um-pq/updates?queries="
-urls.fortune = "/te-benchmark-um-pq/fortunes"
-urls.cached_query = "/te-benchmark-um-pq/cached-worlds?count="
+urls.json = "/t3/j"
+urls.db = "/t3/d"
+urls.query = "/t3/quer?queries="
+urls.update = "/t3/updt?queries="
+urls.fortune = "/t3/fortu"
+urls.cached_query = "/t3/cached-wld?count="
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "postgres"
 database = "postgres"
@@ -186,10 +186,10 @@ webserver = "ffead-cpp"
 versus = ""
 versus = ""
 
 
 [postgresql-raw-profiled]
 [postgresql-raw-profiled]
-urls.db = "/te-benchmark-um-pq/db"
-urls.query = "/te-benchmark-um-pq/queries?queries="
-urls.update = "/te-benchmark-um-pq/updates?queries="
-urls.fortune = "/te-benchmark-um-pq/fortunes"
+urls.db = "/t3/d"
+urls.query = "/t3/quer?queries="
+urls.update = "/t3/updt?queries="
+urls.fortune = "/t3/fortu"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "postgres"
 database = "postgres"
@@ -201,10 +201,10 @@ webserver = "ffead-cpp"
 versus = ""
 versus = ""
 
 
 [postgresql-raw-clibpqb-profiled]
 [postgresql-raw-clibpqb-profiled]
-urls.db = "/te-benchmark-um-pq/db"
-urls.query = "/te-benchmark-um-pq/queries?queries="
-urls.update = "/te-benchmark-um-pq/updates?queries="
-urls.fortune = "/te-benchmark-um-pq/fortunes"
+urls.db = "/t3/d"
+urls.query = "/t3/quer?queries="
+urls.update = "/t3/updt?queries="
+urls.fortune = "/t3/fortu"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "postgres"
 database = "postgres"
@@ -217,12 +217,12 @@ versus = ""
 
 
 [postgresql-raw-async]
 [postgresql-raw-async]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um-pq-async/json"
-urls.db = "/te-benchmark-um-pq-async/db"
-urls.query = "/te-benchmark-um-pq-async/queries?queries="
-urls.update = "/te-benchmark-um-pq-async/bupdates?queries="
-urls.fortune = "/te-benchmark-um-pq-async/fortunes"
-urls.cached_query = "/te-benchmark-um-pq-async/cached-worlds?count="
+urls.json = "/t4/j"
+urls.db = "/t4/d"
+urls.query = "/t4/quer?queries="
+urls.update = "/t4/bupdt?queries="
+urls.fortune = "/t4/fortu"
+urls.cached_query = "/t4/cached-wld?count="
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "postgres"
 database = "postgres"
@@ -234,10 +234,10 @@ webserver = "ffead-cpp"
 versus = ""
 versus = ""
 
 
 [postgresql-raw-async-profiled]
 [postgresql-raw-async-profiled]
-urls.db = "/te-benchmark-um-pq-async/db"
-urls.query = "/te-benchmark-um-pq-async/queries?queries="
-urls.update = "/te-benchmark-um-pq-async/bupdates?queries="
-urls.fortune = "/te-benchmark-um-pq-async/fortunes"
+urls.db = "/t4/d"
+urls.query = "/t4/quer?queries="
+urls.update = "/t4/bupdt?queries="
+urls.fortune = "/t4/fortu"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "postgres"
 database = "postgres"
@@ -249,10 +249,10 @@ webserver = "ffead-cpp"
 versus = ""
 versus = ""
 
 
 [postgresql-raw-async-clibpqb-profiled]
 [postgresql-raw-async-clibpqb-profiled]
-urls.db = "/te-benchmark-um-pq-async/db"
-urls.query = "/te-benchmark-um-pq-async/queries?queries="
-urls.update = "/te-benchmark-um-pq-async/bupdates?queries="
-urls.fortune = "/te-benchmark-um-pq-async/fortunes"
+urls.db = "/t4/d"
+urls.query = "/t4/quer?queries="
+urls.update = "/t4/bupdt?queries="
+urls.fortune = "/t4/fortu"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "postgres"
 database = "postgres"
@@ -265,7 +265,7 @@ versus = ""
 
 
 [nginx]
 [nginx]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "mongodb"
 database = "mongodb"
@@ -278,7 +278,7 @@ versus = ""
 
 
 [seastar]
 [seastar]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "mongodb"
 database = "mongodb"
@@ -291,7 +291,7 @@ versus = ""
 
 
 [apache]
 [apache]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -304,12 +304,12 @@ versus = ""
 
 
 [mongo-raw]
 [mongo-raw]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um-mgr/json"
-urls.db = "/te-benchmark-um-mgr/db"
-urls.query = "/te-benchmark-um-mgr/queries?queries="
-urls.update = "/te-benchmark-um-mgr/updates?queries="
-urls.fortune = "/te-benchmark-um-mgr/fortunes"
-urls.cached_query = "/te-benchmark-um-mgr/cached-worlds?count="
+urls.json = "/t2/j"
+urls.db = "/t2/d"
+urls.query = "/t2/quer?queries="
+urls.update = "/t2/updt?queries="
+urls.fortune = "/t2/fortu"
+urls.cached_query = "/t2/cached-wld?count="
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "mongodb"
 database = "mongodb"
@@ -322,7 +322,7 @@ versus = ""
 
 
 [lithium]
 [lithium]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -335,7 +335,7 @@ versus = ""
 
 
 [cinatra]
 [cinatra]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -348,7 +348,7 @@ versus = ""
 
 
 [drogon]
 [drogon]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -361,7 +361,7 @@ versus = ""
 
 
 [h2o]
 [h2o]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -374,7 +374,7 @@ versus = ""
 
 
 [crystal-h2o]
 [crystal-h2o]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -387,11 +387,11 @@ versus = ""
 
 
 [mysql]
 [mysql]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
-urls.db = "/te-benchmark-um/db"
-urls.query = "/te-benchmark-um/queries?queries="
-urls.update = "/te-benchmark-um/updates?queries="
-urls.fortune = "/te-benchmark-um/fortunes"
+urls.json = "/t1/j"
+urls.db = "/t1/d"
+urls.query = "/t1/quer?queries="
+urls.update = "/t1/updt?queries="
+urls.fortune = "/t1/fortu"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "mysql"
 database = "mysql"
@@ -404,7 +404,7 @@ versus = ""
 
 
 [go-fasthttp]
 [go-fasthttp]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -417,7 +417,7 @@ versus = ""
 
 
 [julia-http]
 [julia-http]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -430,7 +430,7 @@ versus = ""
 
 
 [swift-nio]
 [swift-nio]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -443,7 +443,7 @@ versus = ""
 
 
 [rust-hyper]
 [rust-hyper]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -456,7 +456,7 @@ versus = ""
 
 
 [rust-thruster]
 [rust-thruster]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -469,7 +469,7 @@ versus = ""
 
 
 [rust-rocket]
 [rust-rocket]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -482,7 +482,7 @@ versus = ""
 
 
 [v-vweb]
 [v-vweb]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -495,7 +495,7 @@ versus = ""
 
 
 [java-rapidoid]
 [java-rapidoid]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"
@@ -508,7 +508,7 @@ versus = ""
 
 
 [java-wizzardo-http]
 [java-wizzardo-http]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/t1/j"
 approach = "Realistic"
 approach = "Realistic"
 classification = "Fullstack"
 classification = "Fullstack"
 database = "None"
 database = "None"

+ 5 - 4
frameworks/C++/ffead-cpp/ffead-cpp-base-debug.dockerfile

@@ -9,10 +9,11 @@ ENV DEBUG=on
 ENV DEBIAN_FRONTEND noninteractive
 ENV DEBIAN_FRONTEND noninteractive
 RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
 RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
 
 
-COPY te-benchmark-um/ /installs/te-benchmark-um/
-COPY te-benchmark-um-pq/ /installs/te-benchmark-um-pq/
-COPY te-benchmark-um-mgr/ /installs/te-benchmark-um-mgr/
-COPY te-benchmark-um-mgr/ /installs/te-benchmark-um-pq-async/
+#COPY t1/ /installs/t1/
+#COPY t3/ /installs/t3/
+#COPY t2/ /installs/t2/
+#COPY t4/ /installs/t4/
+#COPY t5/ /installs/t5/
 
 
 WORKDIR ${IROOT}
 WORKDIR ${IROOT}
 
 

+ 5 - 4
frameworks/C++/ffead-cpp/ffead-cpp-base.dockerfile

@@ -9,10 +9,11 @@ ENV DEBUG=off
 ENV DEBIAN_FRONTEND noninteractive
 ENV DEBIAN_FRONTEND noninteractive
 RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
 RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
 
 
-COPY te-benchmark-um/ /installs/te-benchmark-um/
-COPY te-benchmark-um-pq/ /installs/te-benchmark-um-pq/
-COPY te-benchmark-um-mgr/ /installs/te-benchmark-um-mgr/
-COPY te-benchmark-um-pq-async/ /installs/te-benchmark-um-pq-async/
+#COPY t1/ /installs/t1/
+#COPY t3/ /installs/t3/
+#COPY t2/ /installs/t2/
+#COPY t4/ /installs/t4/
+#COPY t5/ /installs/t5/
 
 
 WORKDIR ${IROOT}
 WORKDIR ${IROOT}
 
 

+ 4 - 2
frameworks/C++/ffead-cpp/ffead-cpp-p10-b.dockerfile

@@ -4,7 +4,9 @@ ENV IROOT=/installs
 
 
 WORKDIR /
 WORKDIR /
 
 
-RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/application.xml
-RUN echo "dbpoolsize=10" > ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/application.xml
+RUN echo "dbpoolsize=10" > ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqQwAsyncRouter"|router="TeBkUmLpqQwAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/application.xml
+RUN echo "dbpoolsize=10" > ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/app.prop
 
 
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory

+ 4 - 2
frameworks/C++/ffead-cpp/ffead-cpp-p10.dockerfile

@@ -4,7 +4,9 @@ ENV IROOT=/installs
 
 
 WORKDIR /
 WORKDIR /
 
 
-RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/application.xml
-RUN echo "dbpoolsize=10" > ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/application.xml
+RUN echo "dbpoolsize=10" > ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqQwAsyncRouter"|router="TeBkUmLpqQwAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/application.xml
+RUN echo "dbpoolsize=10" > ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/app.prop
 
 
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory

+ 4 - 2
frameworks/C++/ffead-cpp/ffead-cpp-p2-b.dockerfile

@@ -4,7 +4,9 @@ ENV IROOT=/installs
 
 
 WORKDIR /
 WORKDIR /
 
 
-RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/application.xml
-RUN echo "dbpoolsize=2" > ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/application.xml
+RUN echo "dbpoolsize=2" > ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqQwAsyncRouter"|router="TeBkUmLpqQwAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/application.xml
+RUN echo "dbpoolsize=2" > ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/app.prop
 
 
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory

+ 4 - 2
frameworks/C++/ffead-cpp/ffead-cpp-p2.dockerfile

@@ -4,7 +4,9 @@ ENV IROOT=/installs
 
 
 WORKDIR /
 WORKDIR /
 
 
-RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/application.xml
-RUN echo "dbpoolsize=2" > ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/application.xml
+RUN echo "dbpoolsize=2" > ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqQwAsyncRouter"|router="TeBkUmLpqQwAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/application.xml
+RUN echo "dbpoolsize=2" > ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/app.prop
 
 
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory

+ 4 - 2
frameworks/C++/ffead-cpp/ffead-cpp-p3-b.dockerfile

@@ -4,7 +4,9 @@ ENV IROOT=/installs
 
 
 WORKDIR /
 WORKDIR /
 
 
-RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/application.xml
-RUN echo "dbpoolsize=3" > ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/application.xml
+RUN echo "dbpoolsize=3" > ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqQwAsyncRouter"|router="TeBkUmLpqQwAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/application.xml
+RUN echo "dbpoolsize=3" > ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/app.prop
 
 
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory

+ 4 - 2
frameworks/C++/ffead-cpp/ffead-cpp-p3.dockerfile

@@ -4,7 +4,9 @@ ENV IROOT=/installs
 
 
 WORKDIR /
 WORKDIR /
 
 
-RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/application.xml
-RUN echo "dbpoolsize=3" > ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/application.xml
+RUN echo "dbpoolsize=3" > ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqQwAsyncRouter"|router="TeBkUmLpqQwAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/application.xml
+RUN echo "dbpoolsize=3" > ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/app.prop
 
 
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory

+ 4 - 2
frameworks/C++/ffead-cpp/ffead-cpp-p4-b.dockerfile

@@ -4,7 +4,9 @@ ENV IROOT=/installs
 
 
 WORKDIR /
 WORKDIR /
 
 
-RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/application.xml
-RUN echo "dbpoolsize=4" > ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/application.xml
+RUN echo "dbpoolsize=4" > ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqQwAsyncRouter"|router="TeBkUmLpqQwAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/application.xml
+RUN echo "dbpoolsize=4" > ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/app.prop
 
 
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory

+ 4 - 2
frameworks/C++/ffead-cpp/ffead-cpp-p4.dockerfile

@@ -4,7 +4,9 @@ ENV IROOT=/installs
 
 
 WORKDIR /
 WORKDIR /
 
 
-RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/application.xml
-RUN echo "dbpoolsize=4" > ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/application.xml
+RUN echo "dbpoolsize=4" > ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqQwAsyncRouter"|router="TeBkUmLpqQwAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/application.xml
+RUN echo "dbpoolsize=4" > ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/app.prop
 
 
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory
 CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory

+ 1 - 1
frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-clibpqb-pool-profiled.dockerfile

@@ -4,4 +4,4 @@ ENV IROOT=/installs
 
 
 WORKDIR /
 WORKDIR /
 
 
-CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory
+CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory batch

+ 1 - 1
frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-clibpqb-profiled.dockerfile

@@ -4,4 +4,4 @@ ENV IROOT=/installs
 
 
 WORKDIR /
 WORKDIR /
 
 
-CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory
+CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory batch

+ 5 - 3
frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-clibpqb-twoconn-profiled.dockerfile

@@ -4,7 +4,9 @@ ENV IROOT=/installs
 
 
 WORKDIR /
 WORKDIR /
 
 
-RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/application.xml
-RUNN echo "dbpoolsize=2" > ${IROOT}/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqAsyncRouter"|router="TeBkUmLpqAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/application.xml
+RUN echo "dbpoolsize=2" > ${IROOT}/ffead-cpp-6.0-sql/web/t4/config/app.prop
+RUN sed -i 's|router="TeBkUmLpqQwAsyncRouter"|router="TeBkUmLpqQwAsyncRouter" properties="app.prop"|g' ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/application.xml
+RUN echo "dbpoolsize=2" > ${IROOT}/ffead-cpp-6.0-sql/web/t5/config/app.prop
 
 
-CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory
+CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async memory batch

+ 7 - 0
frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-qw-clibpqb-profiled.dockerfile

@@ -0,0 +1,7 @@
+FROM sumeetchhetri/ffead-cpp-sql-raw-async-clibpqb-profiled-base:6.0
+
+ENV IROOT=/installs
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async-qw memory batch

+ 7 - 0
frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-qw-pool-profiled-m.dockerfile

@@ -0,0 +1,7 @@
+FROM sumeetchhetri/ffead-cpp-sql-raw-async-pool-profiled-base:6.0
+
+ENV IROOT=/installs
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async-qw memory

+ 7 - 0
frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-qw-profiled.dockerfile

@@ -0,0 +1,7 @@
+FROM sumeetchhetri/ffead-cpp-sql-raw-async-profiled-base:6.0
+
+ENV IROOT=/installs
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw-async-qw memory

+ 1 - 1
frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-clibpqb-profiled.dockerfile

@@ -4,4 +4,4 @@ ENV IROOT=/installs
 
 
 WORKDIR /
 WORKDIR /
 
 
-CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw memory
+CMD ./run_ffead.sh ffead-cpp-6.0-sql emb postgresql-raw memory batch

+ 5 - 4
frameworks/C++/ffead-cpp/ffead-cpp-seastar-base.dockerfile

@@ -6,10 +6,11 @@ WORKDIR ${IROOT}
 ENV DEBIAN_FRONTEND noninteractive
 ENV DEBIAN_FRONTEND noninteractive
 
 
 RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
 RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
-	ln -s ${IROOT}/ffead-cpp-6.0/lib/libte-benchmark-um.so /usr/local/lib/libte-benchmark-um.so && \
-	ln -s ${IROOT}/ffead-cpp-6.0/lib/libte-benchmark-um-pq.so /usr/local/lib/libte-benchmark-um-pq.so && \
-	ln -s ${IROOT}/ffead-cpp-6.0/lib/libte-benchmark-um-mgr.so /usr/local/lib/libte-benchmark-um-mgr.so && \
-	ln -s ${IROOT}/ffead-cpp-6.0/lib/libte-benchmark-um-pq-async.so /usr/local/lib/libte-benchmark-um-pq-async.so && \
+	ln -s ${IROOT}/ffead-cpp-6.0/lib/libt1.so /usr/local/lib/libt1.so && \
+	ln -s ${IROOT}/ffead-cpp-6.0/lib/libt3.so /usr/local/lib/libt3.so && \
+	ln -s ${IROOT}/ffead-cpp-6.0/lib/libt2.so /usr/local/lib/libt2.so && \
+	ln -s ${IROOT}/ffead-cpp-6.0/lib/libt4.so /usr/local/lib/libt4.so && \
+	ln -s ${IROOT}/ffead-cpp-6.0/lib/libt5.so /usr/local/lib/libt5.so && \
 	ln -s ${IROOT}/ffead-cpp-6.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
 	ln -s ${IROOT}/ffead-cpp-6.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
 	ln -s ${IROOT}/ffead-cpp-6.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
 	ln -s ${IROOT}/ffead-cpp-6.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
 	ln -s ${IROOT}/ffead-cpp-6.0/lib/libinter.so /usr/local/lib/libinter.so && \
 	ln -s ${IROOT}/ffead-cpp-6.0/lib/libinter.so /usr/local/lib/libinter.so && \

+ 0 - 5
frameworks/C++/ffead-cpp/ffead-cpp-sql-raw-async-clibpqb-pool-profiled-base.dockerfile

@@ -83,11 +83,6 @@ COPY sql-profiled-util.sh ${IROOT}/
 RUN chmod 755 ${IROOT}/sql-profiled-util.sh
 RUN chmod 755 ${IROOT}/sql-profiled-util.sh
 RUN ./sql-profiled-util.sh batch clang async pool
 RUN ./sql-profiled-util.sh batch clang async pool
 
 
-#COPY TeBkUmLpqAsync.cpp ${IROOT}/ffead-cpp-src/web/te-benchmark-um-pq-async/src/
-#COPY TeBkUmLpqAsync.h ${IROOT}/ffead-cpp-src/web/te-benchmark-um-pq-async/include/
-#COPY LibpqDataSourceImpl.cpp ${IROOT}/ffead-cpp-src/src/modules/sdorm/sql/libpq/
-#COPY LibpqDataSourceImpl.h ${IROOT}/ffead-cpp-src/src/modules/sdorm/sql/libpq/
-
 COPY sql-async-profiled-install-clang.sh install_ffead-cpp-sql-raw-profiled.sh ${IROOT}/
 COPY sql-async-profiled-install-clang.sh install_ffead-cpp-sql-raw-profiled.sh ${IROOT}/
 RUN chmod 755 ${IROOT}/sql-async-profiled-install-clang.sh ${IROOT}/install_ffead-cpp-sql-raw-profiled.sh
 RUN chmod 755 ${IROOT}/sql-async-profiled-install-clang.sh ${IROOT}/install_ffead-cpp-sql-raw-profiled.sh
 RUN ./sql-async-profiled-install-clang.sh batch
 RUN ./sql-async-profiled-install-clang.sh batch

+ 0 - 5
frameworks/C++/ffead-cpp/ffead-cpp-sql-raw-async-clibpqb-profiled-base.dockerfile

@@ -83,11 +83,6 @@ COPY sql-profiled-util.sh ${IROOT}/
 RUN chmod 755 ${IROOT}/sql-profiled-util.sh
 RUN chmod 755 ${IROOT}/sql-profiled-util.sh
 RUN ./sql-profiled-util.sh batch clang async
 RUN ./sql-profiled-util.sh batch clang async
 
 
-#COPY TeBkUmLpqAsync.cpp ${IROOT}/ffead-cpp-src/web/te-benchmark-um-pq-async/src/
-#COPY TeBkUmLpqAsync.h ${IROOT}/ffead-cpp-src/web/te-benchmark-um-pq-async/include/
-#COPY LibpqDataSourceImpl.cpp ${IROOT}/ffead-cpp-src/src/modules/sdorm/sql/libpq/
-#COPY LibpqDataSourceImpl.h ${IROOT}/ffead-cpp-src/src/modules/sdorm/sql/libpq/
-
 COPY sql-async-profiled-install-clang.sh install_ffead-cpp-sql-raw-profiled.sh ${IROOT}/
 COPY sql-async-profiled-install-clang.sh install_ffead-cpp-sql-raw-profiled.sh ${IROOT}/
 RUN chmod 755 ${IROOT}/sql-async-profiled-install-clang.sh ${IROOT}/install_ffead-cpp-sql-raw-profiled.sh
 RUN chmod 755 ${IROOT}/sql-async-profiled-install-clang.sh ${IROOT}/install_ffead-cpp-sql-raw-profiled.sh
 RUN ./sql-async-profiled-install-clang.sh batch
 RUN ./sql-async-profiled-install-clang.sh batch

+ 1 - 1
frameworks/C++/ffead-cpp/ffead-cpp-v-base.dockerfile

@@ -6,7 +6,7 @@ LABEL description="Base v docker image with ffead-cpp v4.0 commit id - master"
 ENV IROOT=/installs
 ENV IROOT=/installs
 
 
 RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
 RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
-	ln -s ${IROOT}/ffead-cpp-6.0/lib/libte-benchmark-um-pq.so /usr/local/lib/libte-benchmark-um-pq.so && \
+	ln -s ${IROOT}/ffead-cpp-6.0/lib/libt3.so /usr/local/lib/libt3.so && \
 	ln -s ${IROOT}/ffead-cpp-6.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
 	ln -s ${IROOT}/ffead-cpp-6.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
 	ln -s ${IROOT}/ffead-cpp-6.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
 	ln -s ${IROOT}/ffead-cpp-6.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
 	ln -s ${IROOT}/ffead-cpp-6.0/lib/libinter.so /usr/local/lib/libinter.so && \
 	ln -s ${IROOT}/ffead-cpp-6.0/lib/libinter.so /usr/local/lib/libinter.so && \

+ 1 - 1
frameworks/C++/ffead-cpp/ffead-cpp-v-picov-raw-clibpqb-profiled-base.dockerfile

@@ -79,7 +79,7 @@ ENV accept accept
 
 
 WORKDIR ${IROOT}
 WORKDIR ${IROOT}
 
 
-RUN sed -i 's|"TeBkUmLpqRouter"|"TeBkUmLpqRouterPicoV"|g' $IROOT/ffead-cpp-src/web/te-benchmark-um-pq/config/application.xml
+RUN sed -i 's|"TeBkUmLpqRouter"|"TeBkUmLpqRouterPicoV"|g' $IROOT/ffead-cpp-src/web/t3/config/application.xml
 
 
 COPY sql-profiled-util.sh ${IROOT}/
 COPY sql-profiled-util.sh ${IROOT}/
 RUN chmod 755 ${IROOT}/sql-profiled-util.sh
 RUN chmod 755 ${IROOT}/sql-profiled-util.sh

+ 1 - 1
frameworks/C++/ffead-cpp/ffead-cpp-v-picov-raw-clibpqb-profiled.dockerfile

@@ -4,4 +4,4 @@ ENV IROOT=/installs
 
 
 WORKDIR /
 WORKDIR /
 
 
-CMD ./run_ffead.sh ffead-cpp-6.0-sql v-picov postgresql-raw memory
+CMD ./run_ffead.sh ffead-cpp-6.0-sql v-picov postgresql-raw memory batch

+ 1 - 1
frameworks/C++/ffead-cpp/ffead-cpp-v-picov-raw-profiled-base.dockerfile

@@ -79,7 +79,7 @@ ENV accept accept
 
 
 WORKDIR ${IROOT}
 WORKDIR ${IROOT}
 
 
-RUN sed -i 's|"TeBkUmLpqRouter"|"TeBkUmLpqRouterPicoV"|g' $IROOT/ffead-cpp-src/web/te-benchmark-um-pq/config/application.xml
+RUN sed -i 's|"TeBkUmLpqRouter"|"TeBkUmLpqRouterPicoV"|g' $IROOT/ffead-cpp-src/web/t3/config/application.xml
 
 
 COPY sql-profiled-util.sh ${IROOT}/
 COPY sql-profiled-util.sh ${IROOT}/
 RUN chmod 755 ${IROOT}/sql-profiled-util.sh
 RUN chmod 755 ${IROOT}/sql-profiled-util.sh

+ 31 - 22
frameworks/C++/ffead-cpp/install_ffead-cpp-framework.sh

@@ -1,14 +1,16 @@
 #!/bin/bash
 #!/bin/bash
 
 
+apt update -yqq && apt install --no-install-recommends -yqq rapidjson-dev libpugixml-dev
+
 #From https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/C%2B%2B/ulib/setup_json.sh
 #From https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/C%2B%2B/ulib/setup_json.sh
 MAX_THREADS=$(( 3 * `nproc` / 2 ))
 MAX_THREADS=$(( 3 * `nproc` / 2 ))
 
 
 WRIT_THREADS=$(( $MAX_THREADS / 3 ))
 WRIT_THREADS=$(( $MAX_THREADS / 3 ))
 SERV_THREADS=$(( $MAX_THREADS - $WRIT_THREADS ))
 SERV_THREADS=$(( $MAX_THREADS - $WRIT_THREADS ))
 
 
-git clone https://github.com/sumeetchhetri/ffead-cpp
+git checkout 92c3a9e3d5ec1de4a909fe688d649d7f31e050c0 -b 6.0
+#git clone https://github.com/sumeetchhetri/ffead-cpp
 cd ffead-cpp
 cd ffead-cpp
-git checkout 1d892ae2c6155aa2d36c5f125ebd36433d9eb5aa -b 6.0
 rm -rf .git
 rm -rf .git
 cd ..
 cd ..
 mv ffead-cpp ffead-cpp-src
 mv ffead-cpp ffead-cpp-src
@@ -17,15 +19,17 @@ mv ffead-cpp-src/lang-server-backends ${IROOT}/
 cd $IROOT/ffead-cpp-src/
 cd $IROOT/ffead-cpp-src/
 
 
 chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
 chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
-#rm -rf web/te-benchmark-um
-#rm -rf web/te-benchmark-um-pq
-#rm -rf web/te-benchmark-um-mgr
-#rm -rf web/te-benchmark-um-pq-async
+#rm -rf web/t1
+#rm -rf web/t3
+#rm -rf web/t2
+#rm -rf web/t4
+#rm -rf web/t5
 mv ${IROOT}/server.sh script/
 mv ${IROOT}/server.sh script/
-#mv ${IROOT}/te-benchmark-um web/
-#mv ${IROOT}/te-benchmark-um-pq web/
-#mv ${IROOT}/te-benchmark-um-mgr web/
-#mv ${IROOT}/te-benchmark-um-pq-async web/
+#mv ${IROOT}/t1 web/
+#mv ${IROOT}/t3 web/
+#mv ${IROOT}/t2 web/
+#mv ${IROOT}/t4 web/
+#mv ${IROOT}/t5 web/
 sed -i 's|THRD_PSIZ=6|THRD_PSIZ='${SERV_THREADS}'|g' resources/server.prop
 sed -i 's|THRD_PSIZ=6|THRD_PSIZ='${SERV_THREADS}'|g' resources/server.prop
 sed -i 's|W_THRD_PSIZ=2|W_THRD_PSIZ='${WRIT_THREADS}'|g' resources/server.prop
 sed -i 's|W_THRD_PSIZ=2|W_THRD_PSIZ='${WRIT_THREADS}'|g' resources/server.prop
 sed -i 's|ENABLE_CRS=true|ENABLE_CRS=false|g' resources/server.prop
 sed -i 's|ENABLE_CRS=true|ENABLE_CRS=false|g' resources/server.prop
@@ -46,12 +50,13 @@ sed -i 's|EVH_SINGLE=true|EVH_SINGLE=false|g' resources/server.prop
 
 
 rm -rf web/default web/oauthApp web/flexApp web/markers web/te-benchmark web/peer-server
 rm -rf web/default web/oauthApp web/flexApp web/markers web/te-benchmark web/peer-server
 
 
-sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdormmongo.xml
-sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdormmysql.xml
-sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdormpostgresql.xml
-sed -i 's|localhost|tfb-database|g' web/te-benchmark-um-pq/config/sdorm.xml
-sed -i 's|localhost|tfb-database|g' web/te-benchmark-um-mgr/config/sdorm.xml
-sed -i 's|localhost|tfb-database|g' web/te-benchmark-um-pq-async/config/sdorm.xml
+sed -i 's|localhost|tfb-database|g' web/t1/config/sdormmongo.xml
+sed -i 's|localhost|tfb-database|g' web/t1/config/sdormmysql.xml
+sed -i 's|localhost|tfb-database|g' web/t1/config/sdormpostgresql.xml
+sed -i 's|localhost|tfb-database|g' web/t3/config/sdorm.xml
+sed -i 's|localhost|tfb-database|g' web/t2/config/sdorm.xml
+sed -i 's|localhost|tfb-database|g' web/t4/config/sdorm.xml
+sed -i 's|localhost|tfb-database|g' web/t5/config/sdorm.xml
 sed -i 's|127.0.0.1|tfb-database|g' resources/sample-odbcinst.ini
 sed -i 's|127.0.0.1|tfb-database|g' resources/sample-odbcinst.ini
 sed -i 's|127.0.0.1|tfb-database|g' resources/sample-odbc.ini
 sed -i 's|127.0.0.1|tfb-database|g' resources/sample-odbc.ini
 sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/default)||g' CMakeLists.txt
 sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/default)||g' CMakeLists.txt
@@ -75,19 +80,23 @@ sed -i 's|web/peer-server/src/autotools/Makefile||g' configure.ac
 
 
 #./autogen.sh
 #./autogen.sh
 #./configure --enable-debug=no --enable-apachemod=yes --enable-nginxmod=yes --enable-mod_sdormmongo=yes --enable-mod_sdormsql=yes --enable-mod_rediscache=yes --enable-mod_memcached=yes CPPFLAGS="$CPPFLAGS -I${IROOT}/include/libmongoc-1.0 -I${IROOT}/include/libbson-1.0 -I${IROOT}/include/" LDFLAGS="$LDFLAGS -L${IROOT} -L${IROOT}/lib"
 #./configure --enable-debug=no --enable-apachemod=yes --enable-nginxmod=yes --enable-mod_sdormmongo=yes --enable-mod_sdormsql=yes --enable-mod_rediscache=yes --enable-mod_memcached=yes CPPFLAGS="$CPPFLAGS -I${IROOT}/include/libmongoc-1.0 -I${IROOT}/include/libbson-1.0 -I${IROOT}/include/" LDFLAGS="$LDFLAGS -L${IROOT} -L${IROOT}/lib"
-cmake -DSRV_ALL=on -DCINATRA_INCLUDES=${IROOT}/cinatra/include -DMOD_APACHE=on -DMOD_NGINX=on -DMOD_MEMCACHED=on -DMOD_REDIS=on -DMOD_SDORM_MONGO=on  -DDEBUG=${DEBUG} .
+cmake -DSRV_ALL=on -DCINATRA_INCLUDES=${IROOT}/cinatra/include -DMOD_APACHE=on -DMOD_NGINX=on -DMOD_MEMCACHED=on -DMOD_REDIS=on -DMOD_SDORM_MONGO=on  -DDEBUG=${DEBUG} -DWITH_RAPIDJSON=on -DWITH_PUGIXML=on .
 
 
 cp resources/sample-odbcinst.ini ${IROOT}/odbcinst.ini
 cp resources/sample-odbcinst.ini ${IROOT}/odbcinst.ini
 cp resources/sample-odbc.ini ${IROOT}/odbc.ini
 cp resources/sample-odbc.ini ${IROOT}/odbc.ini
 
 
 #Start building for mongodb as the World model is different for SQL use case
 #Start building for mongodb as the World model is different for SQL use case
 cd ${IROOT}/ffead-cpp-src/
 cd ${IROOT}/ffead-cpp-src/
-cp -f web/te-benchmark-um/sql-src/TeBkUmWorldmongo.h web/te-benchmark-um/include/TeBkUmWorld.h
-cp -f web/te-benchmark-um/sql-src/TeBkUmWorldmongo.cpp web/te-benchmark-um/src/TeBkUmWorld.cpp
+cp -f web/t1/sql-src/TeBkUmWorldmongo.h web/t1/include/TeBkUmWorld.h
+cp -f web/t1/sql-src/TeBkUmWorldmongo.cpp web/t1/src/TeBkUmWorld.cpp
 make install -j${MAX_THREADS}
 make install -j${MAX_THREADS}
 
 
 rm -f /usr/local/lib/libffead-*
 rm -f /usr/local/lib/libffead-*
-rm -f /usr/local/lib/libte_benc*
+rm -f /usr/local/lib/libt1.so*
+rm -f /usr/local/lib/libt2.so*
+rm -f /usr/local/lib/libt3.so*
+rm -f /usr/local/lib/libt4.so*
+rm -f /usr/local/lib/libt5.so*
 rm -f /usr/local/lib/libinter.so
 rm -f /usr/local/lib/libinter.so
 rm -f /usr/local/lib/libdinter.so
 rm -f /usr/local/lib/libdinter.so
 
 
@@ -146,8 +155,8 @@ rm -f tmp/*.sess
 
 
 #Start building for sql as the World model is different for mongodb use case
 #Start building for sql as the World model is different for mongodb use case
 cd ${IROOT}/ffead-cpp-src/
 cd ${IROOT}/ffead-cpp-src/
-cp -f web/te-benchmark-um/sql-src/TeBkUmWorldsql.h web/te-benchmark-um/include/TeBkUmWorld.h
-cp -f web/te-benchmark-um/sql-src/TeBkUmWorldsql.cpp web/te-benchmark-um/src/TeBkUmWorld.cpp
+cp -f web/t1/sql-src/TeBkUmWorldsql.h web/t1/include/TeBkUmWorld.h
+cp -f web/t1/sql-src/TeBkUmWorldsql.cpp web/t1/src/TeBkUmWorld.cpp
 make install -j${MAX_THREADS}
 make install -j${MAX_THREADS}
 
 
 if [ ! -d "ffead-cpp-6.0-bin" ]
 if [ ! -d "ffead-cpp-6.0-bin" ]

+ 27 - 11
frameworks/C++/ffead-cpp/install_ffead-cpp-sql-raw-profiled.sh

@@ -2,10 +2,13 @@
 
 
 chmod +x $IROOT/ffead-cpp-sql-raw/*.sh
 chmod +x $IROOT/ffead-cpp-sql-raw/*.sh
 
 
-SUFFIX=""
+APP_CTXT="t3"
 if [ "$1" = "async" ]
 if [ "$1" = "async" ]
 then
 then
-	SUFFIX="-async"
+	APP_CTXT="t4"
+elif [ "$1" = "async-qw" ]
+then
+	APP_CTXT="t5"
 fi
 fi
 
 
 cp $IROOT/ffead-cpp-sql-raw/server.sh /server_orig.sh
 cp $IROOT/ffead-cpp-sql-raw/server.sh /server_orig.sh
@@ -53,29 +56,42 @@ service postgresql start
 
 
 sed -i 's|EVH_SINGLE=false|EVH_SINGLE=true|g' resources/server.prop
 sed -i 's|EVH_SINGLE=false|EVH_SINGLE=true|g' resources/server.prop
 #sed -i 's|LOGGING_ENABLED=false|LOGGING_ENABLED=true|g' resources/server.prop
 #sed -i 's|LOGGING_ENABLED=false|LOGGING_ENABLED=true|g' resources/server.prop
+
+if [ "$1" = "async" ]
+then
+	sed -i 's|REQUEST_HANDLER=RequestReaderHandler|REQUEST_HANDLER=RequestHandler2|g' resources/server.prop
+fi
+
+if [ "$1" = "async-qw" ]
+then
+	sed -i 's|REQUEST_HANDLER=RequestReaderHandler|REQUEST_HANDLER=RequestHandler2|g' resources/server.prop
+	sed -i 's|QUEUED_WRITES=false|QUEUED_WRITES=true|g' resources/server.prop
+fi
+
 nohup bash -c "./server.sh > ffead.log &"
 nohup bash -c "./server.sh > ffead.log &"
 sleep 10
 sleep 10
 echo "ffead-cpp with sql-raw support launched"
 echo "ffead-cpp with sql-raw support launched"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 	-H 'Connection: keep-alive' --latency -d 5 -c 256 --timeout 8 -t 2 "http://localhost:8080/plaintext"
 	-H 'Connection: keep-alive' --latency -d 5 -c 256 --timeout 8 -t 2 "http://localhost:8080/plaintext"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 256 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq${SUFFIX}/json"
+	-H 'Connection: keep-alive' --latency -d 5 -c 256 --timeout 8 -t 2 "http://localhost:8080/${APP_CTXT}/j"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 256 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq${SUFFIX}/fortunes"
+	-H 'Connection: keep-alive' --latency -d 5 -c 256 --timeout 8 -t 2 "http://localhost:8080/${APP_CTXT}/fortu"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq${SUFFIX}/db"
+	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/${APP_CTXT}/d"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq${SUFFIX}/queries?queries=20"
+	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/${APP_CTXT}/quer?queries=20"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq${SUFFIX}/queriem?queries=20"
+	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/${APP_CTXT}/quem?queries=20"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq${SUFFIX}/querie_?queries=20"
+	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/${APP_CTXT}/que_?queries=20"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq${SUFFIX}/updates?queries=20"
+	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/${APP_CTXT}/updt?queries=20"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq${SUFFIX}/updatem?queries=20"
+	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/${APP_CTXT}/updm?queries=20"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq${SUFFIX}/update_?queries=20"
+	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/${APP_CTXT}/upd_?queries=20"
+
 echo "normal shutdown"
 echo "normal shutdown"
 rm -f serv.ctrl
 rm -f serv.ctrl
 pkill ffead-cpp
 pkill ffead-cpp

+ 10 - 10
frameworks/C++/ffead-cpp/install_ffead-cpp-sql-raw-v-picov-profiled.sh

@@ -5,8 +5,8 @@ export LD_LIBRARY_PATH=${IROOT}/:${IROOT}/lib:${FFEAD_CPP_PATH}/lib:/usr/local/l
 
 
 cd $IROOT/lang-server-backends/v/pico.v
 cd $IROOT/lang-server-backends/v/pico.v
 
 
-cp -f ${FFEAD_CPP_PATH}/web/te-benchmark-um-pq/config/cachememory.xml ${FFEAD_CPP_PATH}/web/te-benchmark-um-pq/config/cache.xml
-sed -i 's|"TeBkUmLpqRouter"|"TeBkUmLpqRouterPicoV"|g' ${FFEAD_CPP_PATH}/web/te-benchmark-um-pq/config/application.xml
+cp -f ${FFEAD_CPP_PATH}/web/t3/config/cachememory.xml ${FFEAD_CPP_PATH}/web/t3/config/cache.xml
+sed -i 's|"TeBkUmLpqRouter"|"TeBkUmLpqRouterPicoV"|g' ${FFEAD_CPP_PATH}/web/t3/config/application.xml
 sed -i 's|EVH_SINGLE=false|EVH_SINGLE=true|g' ${FFEAD_CPP_PATH}/resources/server.prop
 sed -i 's|EVH_SINGLE=false|EVH_SINGLE=true|g' ${FFEAD_CPP_PATH}/resources/server.prop
 #sed -i 's|LOGGING_ENABLED=false|LOGGING_ENABLED=true|g' ${FFEAD_CPP_PATH}/resources/server.prop
 #sed -i 's|LOGGING_ENABLED=false|LOGGING_ENABLED=true|g' ${FFEAD_CPP_PATH}/resources/server.prop
 nohup bash -c "./main --server_dir=$FFEAD_CPP_PATH --server_port=8080 > ffead.log &"
 nohup bash -c "./main --server_dir=$FFEAD_CPP_PATH --server_port=8080 > ffead.log &"
@@ -15,21 +15,21 @@ echo "ffead-cpp-v-picov with sql-raw support launched"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 	-H 'Connection: keep-alive' --latency -d 5 -c 256 --timeout 8 -t 2 "http://localhost:8080/plaintext"
 	-H 'Connection: keep-alive' --latency -d 5 -c 256 --timeout 8 -t 2 "http://localhost:8080/plaintext"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 256 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq/json"
+	-H 'Connection: keep-alive' --latency -d 5 -c 256 --timeout 8 -t 2 "http://localhost:8080/t3/j"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 256 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq/fortunes"
+	-H 'Connection: keep-alive' --latency -d 5 -c 256 --timeout 8 -t 2 "http://localhost:8080/t3/fortu"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq/db"
+	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/t3/d"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq/queries?queries=20"
+	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/t3/quer?queries=20"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq/querie_?queries=20"
+	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/t3/que_?queries=20"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq/updates?queries=20"
+	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/t3/updt?queries=20"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq/update_?queries=20"
+	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/t3/upd_?queries=20"
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
 wrk -H 'Host: localhost' -H 'Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7' \
-	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/te-benchmark-um-pq/cached-worlds?count=20"
+	-H 'Connection: keep-alive' --latency -d 5 -c 512 --timeout 8 -t 2 "http://localhost:8080/t3/cached-wld?count=20"
 echo "normal shutdown"
 echo "normal shutdown"
 pkill main
 pkill main
 
 

+ 62 - 33
frameworks/C++/ffead-cpp/run_ffead.sh

@@ -1,16 +1,21 @@
 #!/bin/sh
 #!/bin/sh
 
 
 rm -f /usr/local/lib/libffead-*
 rm -f /usr/local/lib/libffead-*
-rm -f /usr/local/lib/libte_benc*
+rm -f /usr/local/lib/libt1.so*
+rm -f /usr/local/lib/libt2.so*
+rm -f /usr/local/lib/libt3.so*
+rm -f /usr/local/lib/libt4.so*
+rm -f /usr/local/lib/libt5.so*
 rm -f /usr/local/lib/libinter.so
 rm -f /usr/local/lib/libinter.so
 rm -f /usr/local/lib/libdinter.so
 rm -f /usr/local/lib/libdinter.so
 
 
 export FFEAD_CPP_PATH=${IROOT}/$1
 export FFEAD_CPP_PATH=${IROOT}/$1
 
 
-ln -s ${FFEAD_CPP_PATH}/lib/libte-benchmark-um.so /usr/local/lib/libte-benchmark-um.so
-ln -s ${FFEAD_CPP_PATH}/lib/libte-benchmark-um-pq.so /usr/local/lib/libte-benchmark-um-pq.so
-ln -s ${FFEAD_CPP_PATH}/lib/libte-benchmark-um-mgr.so /usr/local/lib/libte-benchmark-um-mgr.so
-ln -s ${FFEAD_CPP_PATH}/lib/libte-benchmark-um-pq-async.so /usr/local/lib/libte-benchmark-um-pq-async.so
+ln -s ${FFEAD_CPP_PATH}/lib/libt1.so /usr/local/lib/libt1.so
+ln -s ${FFEAD_CPP_PATH}/lib/libt2.so /usr/local/lib/libt2.so
+ln -s ${FFEAD_CPP_PATH}/lib/libt3.so /usr/local/lib/libt3.so
+ln -s ${FFEAD_CPP_PATH}/lib/libt4.so /usr/local/lib/libt4.so
+ln -s ${FFEAD_CPP_PATH}/lib/libt5.so /usr/local/lib/libt5.so
 ln -s ${FFEAD_CPP_PATH}/lib/libffead-modules.so /usr/local/lib/libffead-modules.so
 ln -s ${FFEAD_CPP_PATH}/lib/libffead-modules.so /usr/local/lib/libffead-modules.so
 ln -s ${FFEAD_CPP_PATH}/lib/libffead-framework.so /usr/local/lib/libffead-framework.so
 ln -s ${FFEAD_CPP_PATH}/lib/libffead-framework.so /usr/local/lib/libffead-framework.so
 ln -s ${FFEAD_CPP_PATH}/lib/libinter.so /usr/local/lib/libinter.so
 ln -s ${FFEAD_CPP_PATH}/lib/libinter.so /usr/local/lib/libinter.so
@@ -45,49 +50,62 @@ service memcached stop
 
 
 if [ "$3" = "mongo" ]
 if [ "$3" = "mongo" ]
 then
 then
-	WEB_DIR=$FFEAD_CPP_PATH/web/te-benchmark-um
-	rm -rf web/te-benchmark-um-mgr web/te-benchmark-um-pq web/te-benchmark-um-pq-async
+	WEB_DIR=$FFEAD_CPP_PATH/web/t1
+	rm -rf web/t2 web/t3 web/t4 web/t5
 	cp -f ${WEB_DIR}/config/sdormmongo.xml ${WEB_DIR}/config/sdorm.xml
 	cp -f ${WEB_DIR}/config/sdormmongo.xml ${WEB_DIR}/config/sdorm.xml
 elif [ "$3" = "mongo-raw" ]
 elif [ "$3" = "mongo-raw" ]
 then
 then
-	WEB_DIR=$FFEAD_CPP_PATH/web/te-benchmark-um-mgr
-	rm -rf web/te-benchmark-um web/te-benchmark-um-pq web/te-benchmark-um-pq-async
+	WEB_DIR=$FFEAD_CPP_PATH/web/t2
+	rm -rf web/t1 web/t3 web/t4 web/t5
 elif [ "$3" = "mysql" ]
 elif [ "$3" = "mysql" ]
 then
 then
-	WEB_DIR=$FFEAD_CPP_PATH/web/te-benchmark-um
-	rm -rf web/te-benchmark-um-mgr web/te-benchmark-um-pq web/te-benchmark-um-pq-async
+	WEB_DIR=$FFEAD_CPP_PATH/web/t1
+	rm -rf web/t2 web/t3 web/t4 web/t5
 	cp -f ${WEB_DIR}/config/sdormmysql.xml ${WEB_DIR}/config/sdorm.xml
 	cp -f ${WEB_DIR}/config/sdormmysql.xml ${WEB_DIR}/config/sdorm.xml
 elif [ "$3" = "postgresql" ]
 elif [ "$3" = "postgresql" ]
 then
 then
-	WEB_DIR=$FFEAD_CPP_PATH/web/te-benchmark-um
-	rm -rf web/te-benchmark-um-mgr web/te-benchmark-um-pq web/te-benchmark-um-pq-async
-	cp -f web/te-benchmark-um/config/sdormpostgresql.xml web/te-benchmark-um/config/sdorm.xml
+	WEB_DIR=$FFEAD_CPP_PATH/web/t1
+	rm -rf web/t2 web/t3 web/t4 web/t5
+	cp -f web/t1/config/sdormpostgresql.xml web/t1/config/sdorm.xml
 elif [ "$3" = "postgresql-raw" ]
 elif [ "$3" = "postgresql-raw" ]
 then
 then
-	WEB_DIR=$FFEAD_CPP_PATH/web/te-benchmark-um-pq
-	rm -rf web/te-benchmark-um web/te-benchmark-um-mgr web/te-benchmark-um-pq-async
+	WEB_DIR=$FFEAD_CPP_PATH/web/t3
+	rm -rf web/t1 web/t2 web/t4 web/t5
 	sed -i 's|<async>true</async>|<async>false</async>|g' ${WEB_DIR}/config/sdorm.xml
 	sed -i 's|<async>true</async>|<async>false</async>|g' ${WEB_DIR}/config/sdorm.xml
 elif [ "$3" = "postgresql-raw-async" ]
 elif [ "$3" = "postgresql-raw-async" ]
 then
 then
-	WEB_DIR=$FFEAD_CPP_PATH/web/te-benchmark-um-pq-async
-	rm -rf web/te-benchmark-um web/te-benchmark-um-mgr web/te-benchmark-um-pq
+	WEB_DIR=$FFEAD_CPP_PATH/web/t4
+	rm -rf web/t1 web/t2 web/t3 web/t5
+	sed -i 's|<async>false</async>|<async>true</async>|g' ${WEB_DIR}/config/sdorm.xml
+elif [ "$3" = "postgresql-raw-async-qw" ]
+then
+	WEB_DIR=$FFEAD_CPP_PATH/web/t5
+	rm -rf web/t1 web/t2 web/t3 web/t4
 	sed -i 's|<async>false</async>|<async>true</async>|g' ${WEB_DIR}/config/sdorm.xml
 	sed -i 's|<async>false</async>|<async>true</async>|g' ${WEB_DIR}/config/sdorm.xml
 else
 else
-	WEB_DIR=$FFEAD_CPP_PATH/web/te-benchmark-um
-	rm -rf web/te-benchmark-um-mgr web/te-benchmark-um-pq web/te-benchmark-um-pq-async
+	WEB_DIR=$FFEAD_CPP_PATH/web/t1
+	rm -rf web/t2 web/t3 web/t4 web/t5
 fi
 fi
 
 
-if [ "$4" = "memory" ]
+if [ "$5" = "batch" ]
 then
 then
-	cp -f ${WEB_DIR}/config/cachememory.xml ${WEB_DIR}/config/cache.xml
-elif [ "$4" = "redis" ]
-then
-	service redis-server start
-	cp -f ${WEB_DIR}/config/cacheredis.xml ${WEB_DIR}/config/cache.xml
-elif [ "$4" = "memcached" ]
+	sed -i 's|<batch>false</batch>|<batch>true</batch>|g' ${WEB_DIR}/config/sdorm.xml
+fi
+
+if [ "$3" != "postgresql-raw-async-qw" ]
 then
 then
-	service memcached start
-	cp -f ${WEB_DIR}/config/cachememcached.xml ${WEB_DIR}/config/cache.xml
+	if [ "$4" = "memory" ]
+	then
+		cp -f ${WEB_DIR}/config/cachememory.xml ${WEB_DIR}/config/cache.xml
+	elif [ "$4" = "redis" ]
+	then
+		service redis-server start
+		cp -f ${WEB_DIR}/config/cacheredis.xml ${WEB_DIR}/config/cache.xml
+	elif [ "$4" = "memcached" ]
+	then
+		service memcached start
+		cp -f ${WEB_DIR}/config/cachememcached.xml ${WEB_DIR}/config/cache.xml
+	fi
 fi
 fi
 
 
 rm -f rtdcf/*.d rtdcf/*.o 
 rm -f rtdcf/*.d rtdcf/*.o 
@@ -101,9 +119,24 @@ chmod 700 resources/*.sh
 chmod 700 tests/*
 chmod 700 tests/*
 chmod 700 rtdcf/*
 chmod 700 rtdcf/*
 
 
+if [ "$2" = "apache" ]
+then
+	sed -i 's|<pool-size>30</pool-size>|<pool-size>3</pool-size>|g' ${WEB_DIR}/config/sdorm.xml
+	sed -i 's|<pool-size>10</pool-size>|<pool-size>2</pool-size>|g' ${WEB_DIR}/config/cache.xml
+elif [ "$2" = "nginx" ]
+then
+	sed -i 's|<pool-size>30</pool-size>|<pool-size>3</pool-size>|g' ${WEB_DIR}/config/sdorm.xml
+	sed -i 's|<pool-size>10</pool-size>|<pool-size>2</pool-size>|g' ${WEB_DIR}/config/cache.xml
+fi
+
 if [ "$2" = "emb" ]
 if [ "$2" = "emb" ]
 then
 then
 	sed -i 's|EVH_SINGLE=false|EVH_SINGLE=true|g' resources/server.prop
 	sed -i 's|EVH_SINGLE=false|EVH_SINGLE=true|g' resources/server.prop
+	sed -i 's|REQUEST_HANDLER=RequestReaderHandler|REQUEST_HANDLER=RequestHandler2|g' $FFEAD_CPP_PATH/resources/server.prop
+	if [ "$3" = "postgresql-raw-async-qw" ]
+	then
+		sed -i 's|QUEUED_WRITES=false|QUEUED_WRITES=true|g' $FFEAD_CPP_PATH/resources/server.prop
+	fi
 	for i in $(seq 0 $(($(nproc --all)-1))); do
 	for i in $(seq 0 $(($(nproc --all)-1))); do
 		taskset -c $i ./ffead-cpp $FFEAD_CPP_PATH &
 		taskset -c $i ./ffead-cpp $FFEAD_CPP_PATH &
 	done
 	done
@@ -123,14 +156,10 @@ then
 		sed -i 's|/installs/ffead-cpp-6.0|'/installs/ffead-cpp-6.0-sql'|g' /etc/apache2/apache2.conf
 		sed -i 's|/installs/ffead-cpp-6.0|'/installs/ffead-cpp-6.0-sql'|g' /etc/apache2/apache2.conf
 		sed -i 's|/installs/ffead-cpp-6.0|'/installs/ffead-cpp-6.0-sql'|g' /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/ffead-site.conf
 		sed -i 's|/installs/ffead-cpp-6.0|'/installs/ffead-cpp-6.0-sql'|g' /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/ffead-site.conf
 	fi
 	fi
-	sed -i 's|<pool-size>30</pool-size>|<pool-size>3</pool-size>|g' web/te-benchmark-um/config/sdorm.xml
-	sed -i 's|<pool-size>10</pool-size>|<pool-size>2</pool-size>|g' web/te-benchmark-um/config/cache.xml
 	apachectl -D FOREGROUND
 	apachectl -D FOREGROUND
 elif [ "$2" = "nginx" ]
 elif [ "$2" = "nginx" ]
 then
 then
 	mkdir -p ${IROOT}/nginxfc/logs
 	mkdir -p ${IROOT}/nginxfc/logs
-	sed -i 's|<pool-size>30</pool-size>|<pool-size>3</pool-size>|g' web/te-benchmark-um/config/sdorm.xml
-	sed -i 's|<pool-size>10</pool-size>|<pool-size>2</pool-size>|g' web/te-benchmark-um/config/cache.xml
 	if [ "$3" = "mysql" ] || [ "$3" = "postgresql" ]
 	if [ "$3" = "mysql" ] || [ "$3" = "postgresql" ]
 	then
 	then
 		nginx -g 'daemon off;' -c ${IROOT}/nginx-ffead-sql/conf/nginx.conf
 		nginx -g 'daemon off;' -c ${IROOT}/nginx-ffead-sql/conf/nginx.conf

+ 3 - 1
frameworks/C++/ffead-cpp/sql-async-profiled-install-clang-dbg.sh

@@ -15,7 +15,9 @@ sed -i 's|cmake |CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake |g' $IROOT/ffead-c
 #sed -i 's|-fprofile-instr-generate=/tmp/cprof.prof|-fprofile-instr-generate=/tmp/cprofdi.prof|g' $IROOT/ffead-cpp-sql-raw/rtdcf/CMakeLists.txt.template
 #sed -i 's|-fprofile-instr-generate=/tmp/cprof.prof|-fprofile-instr-generate=/tmp/cprofdi.prof|g' $IROOT/ffead-cpp-sql-raw/rtdcf/CMakeLists.txt.template
 apt update -yqq && apt install -yqq vim gdb net-tools telnet iputils-ping
 apt update -yqq && apt install -yqq vim gdb net-tools telnet iputils-ping
 ./install_ffead-cpp-sql-raw-profiled.sh async
 ./install_ffead-cpp-sql-raw-profiled.sh async
+./install_ffead-cpp-sql-raw-profiled.sh async-qw
 
 
 #mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-6.0-sql
 #mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-6.0-sql
-#sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/sdorm.xml
+#sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/t4/config/sdorm.xml
+#sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/t5/config/sdorm.xml
 
 

+ 4 - 1
frameworks/C++/ffead-cpp/sql-async-profiled-install-clang.sh

@@ -14,6 +14,7 @@ cd $IROOT/
 sed -i 's|cmake |CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 sed -i 's|cmake |CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 #sed -i 's|-fprofile-instr-generate=/tmp/cprof.prof|-fprofile-instr-generate=/tmp/cprofdi.prof|g' $IROOT/ffead-cpp-sql-raw/rtdcf/CMakeLists.txt.template
 #sed -i 's|-fprofile-instr-generate=/tmp/cprof.prof|-fprofile-instr-generate=/tmp/cprofdi.prof|g' $IROOT/ffead-cpp-sql-raw/rtdcf/CMakeLists.txt.template
 ./install_ffead-cpp-sql-raw-profiled.sh async
 ./install_ffead-cpp-sql-raw-profiled.sh async
+./install_ffead-cpp-sql-raw-profiled.sh async-qw
 rm -rf $IROOT/ffead-cpp-sql-raw
 rm -rf $IROOT/ffead-cpp-sql-raw
 
 
 cd $IROOT/ffead-cpp-src
 cd $IROOT/ffead-cpp-src
@@ -34,9 +35,11 @@ cd $IROOT/
 sed -i 's|cmake |CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 sed -i 's|cmake |CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 #sed -i 's|-fprofile-instr-use=/tmp/cprof.pgo|-fprofile-instr-use=/tmp/cprofdi.pgo|g' $IROOT/ffead-cpp-sql-raw/rtdcf/CMakeLists.txt.template
 #sed -i 's|-fprofile-instr-use=/tmp/cprof.pgo|-fprofile-instr-use=/tmp/cprofdi.pgo|g' $IROOT/ffead-cpp-sql-raw/rtdcf/CMakeLists.txt.template
 ./install_ffead-cpp-sql-raw-profiled.sh async
 ./install_ffead-cpp-sql-raw-profiled.sh async
+./install_ffead-cpp-sql-raw-profiled.sh async-qw
 mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-6.0-sql
 mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-6.0-sql
 
 
-sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/sdorm.xml
+sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/t4/config/sdorm.xml
+sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/t5/config/sdorm.xml
 
 
 apt remove -yqq postgresql-13 postgresql-contrib-13 gnupg lsb-release
 apt remove -yqq postgresql-13 postgresql-contrib-13 gnupg lsb-release
 apt autoremove -yqq
 apt autoremove -yqq

+ 4 - 1
frameworks/C++/ffead-cpp/sql-async-profiled-install.sh

@@ -13,6 +13,7 @@ service postgresql stop
 cd $IROOT/
 cd $IROOT/
 #sed -i 's|cmake |cmake -DCMAKE_EXE_LINKER_FLAGS="-fprofile-dir=/tmp/profile-data -fprofile-generate" -DCMAKE_CXX_FLAGS="-march=native -fprofile-dir=/tmp/profile-data -fprofile-generate" |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 #sed -i 's|cmake |cmake -DCMAKE_EXE_LINKER_FLAGS="-fprofile-dir=/tmp/profile-data -fprofile-generate" -DCMAKE_CXX_FLAGS="-march=native -fprofile-dir=/tmp/profile-data -fprofile-generate" |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 ./install_ffead-cpp-sql-raw-profiled.sh async
 ./install_ffead-cpp-sql-raw-profiled.sh async
+./install_ffead-cpp-sql-raw-profiled.sh async-qw
 rm -rf $IROOT/ffead-cpp-sql-raw
 rm -rf $IROOT/ffead-cpp-sql-raw
 
 
 cd $IROOT/ffead-cpp-src
 cd $IROOT/ffead-cpp-src
@@ -29,9 +30,11 @@ service postgresql stop
 cd $IROOT/
 cd $IROOT/
 #sed -i 's|cmake |CXXFLAGS="-march=native -fprofile-dir=/tmp/profile-data -fprofile-use -fprofile-correction" cmake |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 #sed -i 's|cmake |CXXFLAGS="-march=native -fprofile-dir=/tmp/profile-data -fprofile-use -fprofile-correction" cmake |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 ./install_ffead-cpp-sql-raw-profiled.sh async
 ./install_ffead-cpp-sql-raw-profiled.sh async
+./install_ffead-cpp-sql-raw-profiled.sh async-qw
 mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-6.0-sql
 mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-6.0-sql
 
 
-sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/te-benchmark-um-pq-async/config/sdorm.xml
+sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/t4/config/sdorm.xml
+sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/t5/config/sdorm.xml
 
 
 apt remove -yqq postgresql-13 postgresql-contrib-13 gnupg lsb-release
 apt remove -yqq postgresql-13 postgresql-contrib-13 gnupg lsb-release
 apt autoremove -yqq
 apt autoremove -yqq

+ 1 - 1
frameworks/C++/ffead-cpp/sql-profiled-install-clang.sh

@@ -36,7 +36,7 @@ sed -i 's|cmake |CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake |g' $IROOT/ffead-c
 ./install_ffead-cpp-sql-raw-profiled.sh
 ./install_ffead-cpp-sql-raw-profiled.sh
 mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-6.0-sql
 mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-6.0-sql
 
 
-sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/te-benchmark-um-pq/config/sdorm.xml
+sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/t3/config/sdorm.xml
 
 
 if [ "$#" = 0 ]
 if [ "$#" = 0 ]
 then
 then

+ 1 - 1
frameworks/C++/ffead-cpp/sql-profiled-install.sh

@@ -31,7 +31,7 @@ cd $IROOT/
 ./install_ffead-cpp-sql-raw-profiled.sh
 ./install_ffead-cpp-sql-raw-profiled.sh
 mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-6.0-sql
 mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-6.0-sql
 
 
-sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/te-benchmark-um-pq/config/sdorm.xml
+sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/t3/config/sdorm.xml
 
 
 if [ "$#" = 0 ]
 if [ "$#" = 0 ]
 then
 then

+ 19 - 15
frameworks/C++/ffead-cpp/sql-profiled-util.sh

@@ -51,27 +51,31 @@ fi
 cd $IROOT/ffead-cpp-src/
 cd $IROOT/ffead-cpp-src/
 rm -rf $IROOT/ffead-cpp-sql-raw
 rm -rf $IROOT/ffead-cpp-sql-raw
 rm -rf CMakeCache.txt CMakeFiles
 rm -rf CMakeCache.txt CMakeFiles
-rm -rf web/te-benchmark-um web/te-benchmark-um-mgr
+rm -rf web/t1 web/t2
 
 
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um)||g' CMakeLists.txt
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um-mgr)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um/libte-benchmark-um${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um-mgr/libte-benchmark-um-mgr${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
+sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/t1)||g' CMakeLists.txt
+sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/t2)||g' CMakeLists.txt
+sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/t1/libt1${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
+sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/t2/libt2${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
 
 
 if [ "$3" = "async" ]
 if [ "$3" = "async" ]
 then
 then
-	sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um-pq)||g' CMakeLists.txt
-	sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um-pq/libte-benchmark-um-pq${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-	sed -i 's|tfb-database|localhost|g' $IROOT/ffead-cpp-src/web/te-benchmark-um-pq-async/config/sdorm.xml
-	rm -rf web/te-benchmark-um-pq
+	sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/t3)||g' CMakeLists.txt
+	sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/t3/libt3${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
+	sed -i 's|tfb-database|localhost|g' $IROOT/ffead-cpp-src/web/t4/config/sdorm.xml
+	sed -i 's|tfb-database|localhost|g' $IROOT/ffead-cpp-src/web/t5/config/sdorm.xml
+	rm -rf web/t3
 	if [ "$4" = "pool" ]
 	if [ "$4" = "pool" ]
 	then
 	then
-		sed -i 's|"TeBkUmLpqAsyncRouter"|"TeBkUmLpqAsyncRouterPooled"|g' $IROOT/ffead-cpp-src/web/te-benchmark-um-pq-async/config/application.xml
-		sed -i 's|TeBkUmLpqAsyncRouter|TeBkUmLpqAsyncRouterPooled|g' $IROOT/ffead-cpp-src/web/te-benchmark-um-pq-async/config/cachememory.xml
+		sed -i 's|"TeBkUmLpqAsyncRouter"|"TeBkUmLpqAsyncRouterPooled"|g' $IROOT/ffead-cpp-src/web/t4/config/application.xml
+		sed -i 's|TeBkUmLpqAsyncRouter|TeBkUmLpqAsyncRouterPooled|g' $IROOT/ffead-cpp-src/web/t4/config/cachememory.xml
+		sed -i 's|"TeBkUmLpqQwAsyncRouter"|"TeBkUmLpqQwAsyncRouterPooled"|g' $IROOT/ffead-cpp-src/web/t5/config/application.xml
 	fi
 	fi
 else
 else
-	sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um-pq-async)||g' CMakeLists.txt
-	sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um-pq-async/libte-benchmark-um-pq-async${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-	sed -i 's|tfb-database|localhost|g' $IROOT/ffead-cpp-src/web/te-benchmark-um-pq/config/sdorm.xml
-	rm -rf web/te-benchmark-um-pq-async
+	sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/t4)||g' CMakeLists.txt
+	sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/t4/libt4${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
+	sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/t5)||g' CMakeLists.txt
+	sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/t5/libt5${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
+	sed -i 's|tfb-database|localhost|g' $IROOT/ffead-cpp-src/web/t3/config/sdorm.xml
+	rm -rf web/t4 web/t5
 fi
 fi

+ 3 - 3
frameworks/C++/ffead-cpp/sql-v-picov-profiled-install.sh

@@ -1,8 +1,8 @@
 export FFEAD_CPP_PATH=${IROOT}/ffead-cpp-6.0-sql
 export FFEAD_CPP_PATH=${IROOT}/ffead-cpp-6.0-sql
 export LD_LIBRARY_PATH=${IROOT}/:${IROOT}/lib:${FFEAD_CPP_PATH}/lib:/usr/local/lib:$LD_LIBRARY_PATH
 export LD_LIBRARY_PATH=${IROOT}/:${IROOT}/lib:${FFEAD_CPP_PATH}/lib:/usr/local/lib:$LD_LIBRARY_PATH
 
 
-sed -i 's|tfb-database|localhost|g' ${FFEAD_CPP_PATH}/web/te-benchmark-um-pq/config/sdorm.xml
-sed -i 's|"TeBkUmLpqRouter"|"TeBkUmLpqRouterPicoV"|g' ${FFEAD_CPP_PATH}/web/te-benchmark-um-pq/config/application.xml
+sed -i 's|tfb-database|localhost|g' ${FFEAD_CPP_PATH}/web/t3/config/sdorm.xml
+sed -i 's|"TeBkUmLpqRouter"|"TeBkUmLpqRouterPicoV"|g' ${FFEAD_CPP_PATH}/web/t3/config/application.xml
 
 
 cd $IROOT/lang-server-backends/v/pico.v
 cd $IROOT/lang-server-backends/v/pico.v
 v -prod -cflags '-std=gnu11 -Wall -O3 -march=native -mtune=native -no-pie -flto -fprofile-dir=/tmp/profile-data -fprofile-generate -lgcov --coverage' main.v
 v -prod -cflags '-std=gnu11 -Wall -O3 -march=native -mtune=native -no-pie -flto -fprofile-dir=/tmp/profile-data -fprofile-generate -lgcov --coverage' main.v
@@ -22,7 +22,7 @@ cd $IROOT/
 
 
 mv $IROOT/lang-server-backends/v/pico.v/main $IROOT/
 mv $IROOT/lang-server-backends/v/pico.v/main $IROOT/
 
 
-sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/te-benchmark-um-pq/config/sdorm.xml
+sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-6.0-sql/web/t3/config/sdorm.xml
 
 
 apt remove -yqq postgresql-13 postgresql-contrib-13 gnupg lsb-release
 apt remove -yqq postgresql-13 postgresql-contrib-13 gnupg lsb-release
 apt autoremove -yqq
 apt autoremove -yqq

+ 13 - 0
frameworks/C++/ffead-cpp/t1/CMakeLists.txt

@@ -0,0 +1,13 @@
+
+file(GLOB sources
+    "include/*.h"
+    "src/*.cpp"
+)
+
+include_directories("${CMAKE_SOURCE_DIR}/web/t1/include")
+if(BUILD_STATIC_LIBS OR EMSCRIPTEN)
+	add_library(t1 STATIC ${sources})
+else()
+	add_library(t1 ${sources})
+endif()
+target_link_libraries(t1 ffead-modules ffead-framework ${HAVE_CURLLIB} ${HAVE_SSLLIB} ${HAVE_MEMCACHEDLIB} ${HAVE_ODBCLIB} ${HAVE_MONGOCLIB} ${HAVE_BSONLIB} ${HAVE_ZLIB} ${HAVE_CRYPTOLIB})

+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/config/application.xml → frameworks/C++/ffead-cpp/t1/config/application.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/config/cachememcached.xml → frameworks/C++/ffead-cpp/t1/config/cachememcached.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/config/cachememory.xml → frameworks/C++/ffead-cpp/t1/config/cachememory.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/config/cacheredis.xml → frameworks/C++/ffead-cpp/t1/config/cacheredis.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/config/sdormmongo.xml → frameworks/C++/ffead-cpp/t1/config/sdormmongo.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/config/sdormmysql.xml → frameworks/C++/ffead-cpp/t1/config/sdormmysql.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/config/sdormpostgresql.xml → frameworks/C++/ffead-cpp/t1/config/sdormpostgresql.xml


+ 4 - 4
frameworks/C++/ffead-cpp/te-benchmark-um/include/TeBkUm.h → frameworks/C++/ffead-cpp/t1/include/TeBkUm.h

@@ -20,8 +20,8 @@
  *      Author: sumeetc
  *      Author: sumeetc
  */
  */
 
 
-#ifndef WEB_TE_BENCHMARK_UM_INCLUDE_TeBkUm_H_
-#define WEB_TE_BENCHMARK_UM_INCLUDE_TeBkUm_H_
+#ifndef WEB_t1_INCLUDE_TeBkUm_H_
+#define WEB_t1_INCLUDE_TeBkUm_H_
 #include "TemplateHandler.h"
 #include "TemplateHandler.h"
 #include "vector"
 #include "vector"
 #include "DataSourceManager.h"
 #include "DataSourceManager.h"
@@ -85,7 +85,7 @@ public:
 	TeBkUmRouter();
 	TeBkUmRouter();
 	virtual ~TeBkUmRouter();
 	virtual ~TeBkUmRouter();
 	void updateCache();
 	void updateCache();
-	bool route(HttpRequest* req, HttpResponse* res, SocketInterface* sif);
+	bool route(HttpRequest* req, HttpResponse* res, BaseSocket* sif);
 };
 };
 
 
-#endif /* WEB_TE_BENCHMARK_UM_INCLUDE_TeBkUm_H_ */
+#endif /* WEB_t1_INCLUDE_TeBkUm_H_ */

+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/include/TeBkUmWorld.h → frameworks/C++/ffead-cpp/t1/include/TeBkUmWorld.h


+ 1 - 1
frameworks/C++/ffead-cpp/te-benchmark-um/meson.build → frameworks/C++/ffead-cpp/t1/meson.build

@@ -11,5 +11,5 @@ module_libs = [global_libs]
 c = run_command(meson_grabber, 'src/')
 c = run_command(meson_grabber, 'src/')
 module_sources = c.stdout().strip().split('\n')
 module_sources = c.stdout().strip().split('\n')
 
 
-shared_library('te-benchmark-um', module_sources, include_directories: module_includes, dependencies: module_libs, link_with: [libffeadmodules, libffeadframework],
+shared_library('t1', module_sources, include_directories: module_includes, dependencies: module_libs, link_with: [libffeadmodules, libffeadframework],
 	install: true, install_dir: bin_dir+'/lib')
 	install: true, install_dir: bin_dir+'/lib')

+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/sql-src/TeBkUmWorldmongo.cpp → frameworks/C++/ffead-cpp/t1/sql-src/TeBkUmWorldmongo.cpp


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/sql-src/TeBkUmWorldmongo.h → frameworks/C++/ffead-cpp/t1/sql-src/TeBkUmWorldmongo.h


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/sql-src/TeBkUmWorldsql.cpp → frameworks/C++/ffead-cpp/t1/sql-src/TeBkUmWorldsql.cpp


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/sql-src/TeBkUmWorldsql.h → frameworks/C++/ffead-cpp/t1/sql-src/TeBkUmWorldsql.h


+ 12 - 12
frameworks/C++/ffead-cpp/te-benchmark-um/src/TeBkUm.cpp → frameworks/C++/ffead-cpp/t1/src/TeBkUm.cpp

@@ -225,25 +225,25 @@ bool TeBkUmRouter::strToNum(const char* str, int len, int& ret) {
     return true;
     return true;
 }
 }
 
 
-bool TeBkUmRouter::route(HttpRequest* req, HttpResponse* res, SocketInterface* sif) {
+bool TeBkUmRouter::route(HttpRequest* req, HttpResponse* res, BaseSocket* sif) {
 	std::string_view path = req->getPath();
 	std::string_view path = req->getPath();
-	if(StringUtil::endsWith(path, "/plaintext")) {
+	if(StringUtil::endsWith(path, "/plaint")) {
 		res->setContent(HELLO_WORLD);
 		res->setContent(HELLO_WORLD);
 		res->setContentType(ContentTypes::CONTENT_TYPE_TEXT_PLAIN);
 		res->setContentType(ContentTypes::CONTENT_TYPE_TEXT_PLAIN);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-	} else if(StringUtil::endsWith(path, "/json")) {
+	} else if(StringUtil::endsWith(path, "/j")) {
 		TeBkUmMessage msg;
 		TeBkUmMessage msg;
 		msg.setMessage(HELLO_WORLD);
 		msg.setMessage(HELLO_WORLD);
 		JSONSerialize::serializeObject(&msg, m_ser, res->getContentP());
 		JSONSerialize::serializeObject(&msg, m_ser, res->getContentP());
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-	} else if(StringUtil::endsWith(path, "/db")) {
+	} else if(StringUtil::endsWith(path, "/d")) {
 		TeBkUmWorld msg;
 		TeBkUmWorld msg;
 		db(msg);
 		db(msg);
 		JSONSerialize::serializeObject(&msg, w_ser, res->getContentP());
 		JSONSerialize::serializeObject(&msg, w_ser, res->getContentP());
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-	} else if(StringUtil::endsWith(path, "/queries")) {
+	} else if(StringUtil::endsWith(path, "/quer")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmWorld> msg;
 		std::vector<TeBkUmWorld> msg;
@@ -251,7 +251,7 @@ bool TeBkUmRouter::route(HttpRequest* req, HttpResponse* res, SocketInterface* s
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-	} else if(StringUtil::endsWith(path, "/fortunes")) {
+	} else if(StringUtil::endsWith(path, "/fortu")) {
 		Context ctx;
 		Context ctx;
 		getContext(req, &ctx);
 		getContext(req, &ctx);
 
 
@@ -263,7 +263,7 @@ bool TeBkUmRouter::route(HttpRequest* req, HttpResponse* res, SocketInterface* s
 			res->setContentType(ContentTypes::CONTENT_TYPE_TEXT_HTML);
 			res->setContentType(ContentTypes::CONTENT_TYPE_TEXT_HTML);
 			res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 			res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 		}
 		}
-	} else if(StringUtil::endsWith(path, "/updates")) {
+	} else if(StringUtil::endsWith(path, "/updt")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmWorld> msg;
 		std::vector<TeBkUmWorld> msg;
@@ -271,7 +271,7 @@ bool TeBkUmRouter::route(HttpRequest* req, HttpResponse* res, SocketInterface* s
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-	} else if(StringUtil::endsWith(path, "/cached-worlds")) {
+	} else if(StringUtil::endsWith(path, "/cached-wld")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmWorld> msg;
 		std::vector<TeBkUmWorld> msg;
@@ -292,10 +292,10 @@ Ser TeBkUmRouter::w_ser;
 SerCont TeBkUmRouter::wcont_ser;
 SerCont TeBkUmRouter::wcont_ser;
 
 
 TeBkUmRouter::TeBkUmRouter() {
 TeBkUmRouter::TeBkUmRouter() {
-	tmplFunc = TemplateUtil::getTemplateFunc("te-benchmark-um", "tpe/fortunes.tpe");
-	m_ser = Serializer::getSerFuncForObject("te-benchmark-um", "TeBkUmMessage");
-	w_ser = Serializer::getSerFuncForObject("te-benchmark-um", "TeBkUmWorld");
-	wcont_ser = Serializer::getSerFuncForObjectCont("te-benchmark-um", "TeBkUmWorld", "std::vector");
+	tmplFunc = TemplateUtil::getTemplateFunc("t1", "tpe/fortunes.tpe");
+	m_ser = Serializer::getSerFuncForObject("t1", "TeBkUmMessage");
+	w_ser = Serializer::getSerFuncForObject("t1", "TeBkUmWorld");
+	wcont_ser = Serializer::getSerFuncForObjectCont("t1", "TeBkUmWorld", "std::vector");
 }
 }
 
 
 TeBkUmRouter::~TeBkUmRouter() {
 TeBkUmRouter::~TeBkUmRouter() {

+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/src/TeBkUmWorld.cpp → frameworks/C++/ffead-cpp/t1/src/TeBkUmWorld.cpp


+ 4 - 4
frameworks/C++/ffead-cpp/te-benchmark-um/src/autotools/Makefile.am → frameworks/C++/ffead-cpp/t1/src/autotools/Makefile.am

@@ -8,11 +8,11 @@ distdir=${PACKAGE_NAME}-${PACKAGE_VERSION}-src
 fprefix=../../../../${packageIdentifier}
 fprefix=../../../../${packageIdentifier}
 prefix=${abs_builddir}
 prefix=${abs_builddir}
 
 
-lib_LTLIBRARIES = libte-benchmark-um.la
-libte_benchmark_um_la_SOURCES = ../TeBkUmWorld.cpp \
+lib_LTLIBRARIES = libt1.la
+libt1_la_SOURCES = ../TeBkUmWorld.cpp \
 				../TeBkUm.cpp
 				../TeBkUm.cpp
 
 
-libte_benchmark_um_la_LDFLAGS = -no-undefined 
-libte_benchmark_um_la_LIBADD = -L"${fprefix}/lib" -lffead-modules -lffead-framework
+libt1_la_LDFLAGS = -no-undefined 
+libt1_la_LIBADD = -L"${fprefix}/lib" -lffead-modules -lffead-framework
 
 
 #dist_noinst_SCRIPTS = autogen.sh
 #dist_noinst_SCRIPTS = autogen.sh

+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/tpe/fortunes.tpe → frameworks/C++/ffead-cpp/t1/tpe/fortunes.tpe


+ 1 - 1
frameworks/C++/ffead-cpp/te-benchmark-um/xmake.lua → frameworks/C++/ffead-cpp/t1/xmake.lua

@@ -2,7 +2,7 @@ add_includedirs("include/")
 
 
 local bindir = "$(projectdir)/ffead-cpp-6.0-bin"
 local bindir = "$(projectdir)/ffead-cpp-6.0-bin"
 
 
-target("te-benchmark-um")
+target("t1")
 	set_languages("c++17")
 	set_languages("c++17")
 	add_deps("ffead-framework")
 	add_deps("ffead-framework")
 	add_options(getOptions())
 	add_options(getOptions())

+ 13 - 0
frameworks/C++/ffead-cpp/t2/CMakeLists.txt

@@ -0,0 +1,13 @@
+
+file(GLOB sources
+    "include/*.h"
+    "src/*.cpp"
+)
+
+include_directories("${CMAKE_SOURCE_DIR}/web/t2/include")
+if(BUILD_STATIC_LIBS OR EMSCRIPTEN)
+	add_library(t2 STATIC ${sources})
+else()
+	add_library(t2 ${sources})
+endif()
+target_link_libraries(t2 ffead-modules ffead-framework ${HAVE_PQLIB} ${HAVE_CURLLIB} ${HAVE_SSLLIB} ${HAVE_MEMCACHEDLIB} ${HAVE_ODBCLIB} ${HAVE_MONGOCLIB} ${HAVE_BSONLIB} ${HAVE_ZLIB} ${HAVE_CRYPTOLIB})

+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-mgr/config/application.xml → frameworks/C++/ffead-cpp/t2/config/application.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-mgr/config/cachememcached.xml → frameworks/C++/ffead-cpp/t2/config/cachememcached.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-mgr/config/cachememory.xml → frameworks/C++/ffead-cpp/t2/config/cachememory.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-mgr/config/cacheredis.xml → frameworks/C++/ffead-cpp/t2/config/cacheredis.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-mgr/config/sdorm.xml → frameworks/C++/ffead-cpp/t2/config/sdorm.xml


+ 4 - 4
frameworks/C++/ffead-cpp/te-benchmark-um-mgr/include/TeBkUmMgr.h → frameworks/C++/ffead-cpp/t2/include/TeBkUmMgr.h

@@ -20,8 +20,8 @@
  *      Author: sumeetc
  *      Author: sumeetc
  */
  */
 
 
-#ifndef WEB_TE_BENCHMARK_UM_INCLUDE_TeBkUmMgr_H_
-#define WEB_TE_BENCHMARK_UM_INCLUDE_TeBkUmMgr_H_
+#ifndef WEB_t1_INCLUDE_TeBkUmMgr_H_
+#define WEB_t1_INCLUDE_TeBkUmMgr_H_
 #include "TemplateHandler.h"
 #include "TemplateHandler.h"
 #include "vector"
 #include "vector"
 #ifndef OS_MINGW
 #ifndef OS_MINGW
@@ -114,7 +114,7 @@ public:
 	TeBkUmMgrRouter();
 	TeBkUmMgrRouter();
 	virtual ~TeBkUmMgrRouter();
 	virtual ~TeBkUmMgrRouter();
 	void updateCache();
 	void updateCache();
-	bool route(HttpRequest* req, HttpResponse* res, SocketInterface* sif);
+	bool route(HttpRequest* req, HttpResponse* res, BaseSocket* sif);
 };
 };
 
 
-#endif /* WEB_TE_BENCHMARK_UM_INCLUDE_TeBkUmMgr_H_ */
+#endif /* WEB_t1_INCLUDE_TeBkUmMgr_H_ */

+ 1 - 1
frameworks/C++/ffead-cpp/te-benchmark-um-mgr/meson.build → frameworks/C++/ffead-cpp/t2/meson.build

@@ -11,5 +11,5 @@ module_libs = [global_libs, libbson, libmongoc]
 c = run_command(meson_grabber, 'src/')
 c = run_command(meson_grabber, 'src/')
 module_sources = c.stdout().strip().split('\n')
 module_sources = c.stdout().strip().split('\n')
 
 
-shared_library('te-benchmark-um-mgr', module_sources, include_directories: module_includes, dependencies: module_libs, link_with: [libffeadmodules, libffeadframework],
+shared_library('t2', module_sources, include_directories: module_includes, dependencies: module_libs, link_with: [libffeadmodules, libffeadframework],
 	install: true, install_dir: bin_dir+'/lib')
 	install: true, install_dir: bin_dir+'/lib')

+ 13 - 13
frameworks/C++/ffead-cpp/te-benchmark-um-mgr/src/TeBkUmMgr.cpp → frameworks/C++/ffead-cpp/t2/src/TeBkUmMgr.cpp

@@ -338,25 +338,25 @@ bool TeBkUmMgrRouter::strToNum(const char* str, int len, int& ret) {
     return true;
     return true;
 }
 }
 
 
-bool TeBkUmMgrRouter::route(HttpRequest* req, HttpResponse* res, SocketInterface* sif) {
+bool TeBkUmMgrRouter::route(HttpRequest* req, HttpResponse* res, BaseSocket* sif) {
 	std::string_view path = req->getPath();
 	std::string_view path = req->getPath();
-	if(StringUtil::endsWith(path, "/plaintext")) {
+	if(StringUtil::endsWith(path, "/plaint")) {
 		res->setContent(HELLO_WORLD);
 		res->setContent(HELLO_WORLD);
 		res->setContentType(ContentTypes::CONTENT_TYPE_TEXT_PLAIN);
 		res->setContentType(ContentTypes::CONTENT_TYPE_TEXT_PLAIN);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-	} else if(StringUtil::endsWith(path, "/json")) {
+	} else if(StringUtil::endsWith(path, "/j")) {
 		TeBkUmMgrMessage msg;
 		TeBkUmMgrMessage msg;
 		msg.setMessage(HELLO_WORLD);
 		msg.setMessage(HELLO_WORLD);
 		JSONSerialize::serializeObject(&msg, m_ser, res->getContentP());
 		JSONSerialize::serializeObject(&msg, m_ser, res->getContentP());
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-	} else if(StringUtil::endsWith(path, "/db")) {
+	} else if(StringUtil::endsWith(path, "/d")) {
 		TeBkUmMgrWorld msg;
 		TeBkUmMgrWorld msg;
 		db(msg);
 		db(msg);
 		JSONSerialize::serializeObject(&msg, w_ser, res->getContentP());
 		JSONSerialize::serializeObject(&msg, w_ser, res->getContentP());
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-	} else if(StringUtil::endsWith(path, "/queries")) {
+	} else if(StringUtil::endsWith(path, "/quer")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmMgrWorld> msg;
 		std::vector<TeBkUmMgrWorld> msg;
@@ -364,7 +364,7 @@ bool TeBkUmMgrRouter::route(HttpRequest* req, HttpResponse* res, SocketInterface
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-	} else if(StringUtil::endsWith(path, "/fortunes")) {
+	} else if(StringUtil::endsWith(path, "/fortu")) {
 		Context ctx;
 		Context ctx;
 		getContext(req, &ctx);
 		getContext(req, &ctx);
 
 
@@ -376,7 +376,7 @@ bool TeBkUmMgrRouter::route(HttpRequest* req, HttpResponse* res, SocketInterface
 			res->setContentType(ContentTypes::CONTENT_TYPE_TEXT_HTML);
 			res->setContentType(ContentTypes::CONTENT_TYPE_TEXT_HTML);
 			res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 			res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 		}
 		}
-	} else if(StringUtil::endsWith(path, "/updates")) {
+	} else if(StringUtil::endsWith(path, "/updt")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmMgrWorld> msg;
 		std::vector<TeBkUmMgrWorld> msg;
@@ -384,7 +384,7 @@ bool TeBkUmMgrRouter::route(HttpRequest* req, HttpResponse* res, SocketInterface
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-	} else if(StringUtil::endsWith(path, "/cached-worlds")) {
+	} else if(StringUtil::endsWith(path, "/cached-wld")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmMgrWorld> msg;
 		std::vector<TeBkUmMgrWorld> msg;
@@ -408,10 +408,10 @@ TeBkUmMgrRouter::TeBkUmMgrRouter() {
 #ifdef INC_SDORM_MONGO
 #ifdef INC_SDORM_MONGO
 	sqli = NULL;
 	sqli = NULL;
 #endif
 #endif
-	tmplFunc = TemplateUtil::getTemplateFunc("te-benchmark-um-mgr", "tpe/fortunes.tpe");
-	m_ser = Serializer::getSerFuncForObject("te-benchmark-um-mgr", "TeBkUmMgrMessage");
-	w_ser = Serializer::getSerFuncForObject("te-benchmark-um-mgr", "TeBkUmMgrWorld");
-	wcont_ser = Serializer::getSerFuncForObjectCont("te-benchmark-um-mgr", "TeBkUmMgrWorld", "std::vector");
+	tmplFunc = TemplateUtil::getTemplateFunc("t2", "tpe/fortunes.tpe");
+	m_ser = Serializer::getSerFuncForObject("t2", "TeBkUmMgrMessage");
+	w_ser = Serializer::getSerFuncForObject("t2", "TeBkUmMgrWorld");
+	wcont_ser = Serializer::getSerFuncForObjectCont("t2", "TeBkUmMgrWorld", "std::vector");
 }
 }
 
 
 TeBkUmMgrRouter::~TeBkUmMgrRouter() {
 TeBkUmMgrRouter::~TeBkUmMgrRouter() {
@@ -420,7 +420,7 @@ TeBkUmMgrRouter::~TeBkUmMgrRouter() {
 #ifdef INC_SDORM_MONGO
 #ifdef INC_SDORM_MONGO
 MongoDBRawDataSourceImpl* TeBkUmMgrRouter::getDb() {
 MongoDBRawDataSourceImpl* TeBkUmMgrRouter::getDb() {
 	if(sqli==NULL) {
 	if(sqli==NULL) {
-		sqli = static_cast<MongoDBRawDataSourceImpl*>(DataSourceManager::getRawImpl("MongoDB-DSN", "te-benchmark-um-mgr"));
+		sqli = static_cast<MongoDBRawDataSourceImpl*>(DataSourceManager::getRawImpl("MongoDB-DSN", "t2"));
 	}
 	}
 	return sqli;
 	return sqli;
 }
 }

+ 4 - 4
frameworks/C++/ffead-cpp/te-benchmark-um-pq/src/autotools/Makefile.am → frameworks/C++/ffead-cpp/t2/src/autotools/Makefile.am

@@ -8,10 +8,10 @@ distdir=${PACKAGE_NAME}-${PACKAGE_VERSION}-src
 fprefix=../../../../${packageIdentifier}
 fprefix=../../../../${packageIdentifier}
 prefix=${abs_builddir}
 prefix=${abs_builddir}
 
 
-lib_LTLIBRARIES = libte-benchmark-um-pq.la
-libte_benchmark_um_pq_la_SOURCES = ../TeBkUmLpq.cpp
+lib_LTLIBRARIES = libt2.la
+libt2_la_SOURCES = ../TeBkUmMgr.cpp
 
 
-libte_benchmark_um_pq_la_LDFLAGS = -no-undefined 
-libte_benchmark_um_pq_la_LIBADD = -L"${fprefix}/lib" -lffead-modules -lffead-framework
+libt2_la_LDFLAGS = -no-undefined 
+libt2_la_LIBADD = -L"${fprefix}/lib" -lffead-modules -lffead-framework
 
 
 #dist_noinst_SCRIPTS = autogen.sh
 #dist_noinst_SCRIPTS = autogen.sh

+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-mgr/tpe/fortunes.tpe → frameworks/C++/ffead-cpp/t2/tpe/fortunes.tpe


+ 1 - 1
frameworks/C++/ffead-cpp/te-benchmark-um-pq/xmake.lua → frameworks/C++/ffead-cpp/t2/xmake.lua

@@ -2,7 +2,7 @@ add_includedirs("include/")
 
 
 local bindir = "$(projectdir)/ffead-cpp-6.0-bin"
 local bindir = "$(projectdir)/ffead-cpp-6.0-bin"
 
 
-target("te-benchmark-um-pq")
+target("t2")
 	set_languages("c++17")
 	set_languages("c++17")
 	add_deps("ffead-framework")
 	add_deps("ffead-framework")
 	add_options(getOptions())
 	add_options(getOptions())

+ 14 - 0
frameworks/C++/ffead-cpp/t3/CMakeLists.txt

@@ -0,0 +1,14 @@
+
+file(GLOB sources
+    "include/*.h"
+    "src/*.cpp"
+)
+
+include_directories("${CMAKE_SOURCE_DIR}/web/t3/include")
+if(BUILD_STATIC_LIBS OR EMSCRIPTEN)
+	add_library(t3 STATIC ${sources})
+else()
+	add_library(t3 ${sources})
+endif()
+set_property(TARGET t3 PROPERTY POSITION_INDEPENDENT_CODE ON)
+target_link_libraries(t3 ffead-modules ffead-framework ${HAVE_PQLIB} ${HAVE_CURLLIB} ${HAVE_SSLLIB} ${HAVE_MEMCACHEDLIB} ${HAVE_ODBCLIB} ${HAVE_MONGOCLIB} ${HAVE_BSONLIB} ${HAVE_ZLIB} ${HAVE_CRYPTOLIB})

+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-pq/config/application.xml → frameworks/C++/ffead-cpp/t3/config/application.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-pq/config/cachememcached.xml → frameworks/C++/ffead-cpp/t3/config/cachememcached.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-pq/config/cachememory.xml → frameworks/C++/ffead-cpp/t3/config/cachememory.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-pq/config/cacheredis.xml → frameworks/C++/ffead-cpp/t3/config/cacheredis.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-pq/config/sdorm.xml → frameworks/C++/ffead-cpp/t3/config/sdorm.xml


+ 34 - 7
frameworks/C++/ffead-cpp/te-benchmark-um-pq/include/TeBkUmLpq.h → frameworks/C++/ffead-cpp/t3/include/TeBkUmLpq.h

@@ -20,8 +20,8 @@
  *      Author: sumeetc
  *      Author: sumeetc
  */
  */
 
 
-#ifndef WEB_TE_BENCHMARK_UM_INCLUDE_TeBkUmLpq_H_
-#define WEB_TE_BENCHMARK_UM_INCLUDE_TeBkUmLpq_H_
+#ifndef WEB_t1_INCLUDE_TeBkUmLpq_H_
+#define WEB_t1_INCLUDE_TeBkUmLpq_H_
 #include "TemplateHandler.h"
 #include "TemplateHandler.h"
 #include "vector"
 #include "vector"
 #include "list"
 #include "list"
@@ -58,6 +58,25 @@ public:
 	int getRandomNumber() const;
 	int getRandomNumber() const;
 	void setRandomNumber(int randomNumber);
 	void setRandomNumber(int randomNumber);
 	bool operator < (const TeBkUmLpqWorld& other) const;
 	bool operator < (const TeBkUmLpqWorld& other) const;
+#ifdef HAVE_RAPID_JSON
+	void toJson(rapidjson::Writer<rapidjson::StringBuffer>& w) {
+		w.StartObject();
+		w.String("id", 2);
+	    w.Int(id);
+		w.String("randomNumber", 12);
+	    w.Int(randomNumber);
+		w.EndObject();
+	}
+#endif
+#ifdef HAVE_RAPID_JSON
+	static void toJson(std::vector<TeBkUmLpqWorld>& vec, rapidjson::Writer<rapidjson::StringBuffer>& w) {
+		w.StartArray();
+		for(auto el: vec) {
+			el.toJson(w);
+		}
+		w.EndArray();
+	}
+#endif
 };
 };
 
 
 struct UpdQrData {
 struct UpdQrData {
@@ -92,6 +111,14 @@ public:
 	virtual ~TeBkUmLpqMessage();
 	virtual ~TeBkUmLpqMessage();
 	const std::string& getMessage() const;
 	const std::string& getMessage() const;
 	void setMessage(const std::string& message);
 	void setMessage(const std::string& message);
+#ifdef HAVE_RAPID_JSON
+	void toJson(rapidjson::Writer<rapidjson::StringBuffer>& w) {
+		w.StartObject();
+		w.String("message", 7);
+	    w.String(message.c_str(), static_cast<rapidjson::SizeType>(message.length()));
+		w.EndObject();
+	}
+#endif
 };
 };
 
 
 class TeBkUmLpqRouter : public Router {
 class TeBkUmLpqRouter : public Router {
@@ -114,19 +141,19 @@ class TeBkUmLpqRouter : public Router {
 	void updates(const char*, int, std::vector<TeBkUmLpqWorld>&);
 	void updates(const char*, int, std::vector<TeBkUmLpqWorld>&);
 	void updatesMulti(const char*, int, std::vector<TeBkUmLpqWorld>&);
 	void updatesMulti(const char*, int, std::vector<TeBkUmLpqWorld>&);
 	void cachedWorlds(const char*, int, std::vector<TeBkUmLpqWorld>&);
 	void cachedWorlds(const char*, int, std::vector<TeBkUmLpqWorld>&);
-	void handleTemplate(HttpRequest* req, HttpResponse* res, SocketInterface* sif);
+	void handleTemplate(HttpRequest* req, HttpResponse* res, BaseSocket* sif);
+	std::string& getUpdQuery(int count);
 
 
 	std::unordered_map<int, std::string> _qC;
 	std::unordered_map<int, std::string> _qC;
 	LibpqDataSourceImpl* sqli;
 	LibpqDataSourceImpl* sqli;
 	LibpqDataSourceImpl* getDb();
 	LibpqDataSourceImpl* getDb();
 
 
-	std::string& getUpdQuery(int count);
 	friend class TeBkUmLpqRouterPicoV;
 	friend class TeBkUmLpqRouterPicoV;
 public:
 public:
 	TeBkUmLpqRouter();
 	TeBkUmLpqRouter();
 	virtual ~TeBkUmLpqRouter();
 	virtual ~TeBkUmLpqRouter();
 	void updateCache();
 	void updateCache();
-	bool route(HttpRequest* req, HttpResponse* res, SocketInterface* sif);
+	bool route(HttpRequest* req, HttpResponse* res, BaseSocket* sif);
 };
 };
 
 
 class TeBkUmLpqRouterPicoV : public TeBkUmLpqRouter {
 class TeBkUmLpqRouterPicoV : public TeBkUmLpqRouter {
@@ -134,7 +161,7 @@ class TeBkUmLpqRouterPicoV : public TeBkUmLpqRouter {
 public:
 public:
 	TeBkUmLpqRouterPicoV();
 	TeBkUmLpqRouterPicoV();
 	virtual ~TeBkUmLpqRouterPicoV();
 	virtual ~TeBkUmLpqRouterPicoV();
-	bool route(HttpRequest* req, HttpResponse* res, SocketInterface* sif);
+	bool route(HttpRequest* req, HttpResponse* res, BaseSocket* sif);
 };
 };
 
 
-#endif /* WEB_TE_BENCHMARK_UM_INCLUDE_TeBkUmLpq_H_ */
+#endif /* WEB_t1_INCLUDE_TeBkUmLpq_H_ */

+ 1 - 1
frameworks/C++/ffead-cpp/te-benchmark-um-pq/meson.build → frameworks/C++/ffead-cpp/t3/meson.build

@@ -11,5 +11,5 @@ module_libs = [global_libs]
 c = run_command(meson_grabber, 'src/')
 c = run_command(meson_grabber, 'src/')
 module_sources = c.stdout().strip().split('\n')
 module_sources = c.stdout().strip().split('\n')
 
 
-shared_library('te-benchmark-um-pq', module_sources, include_directories: module_includes, dependencies: module_libs, link_with: [libffeadmodules, libffeadframework],
+shared_library('t3', module_sources, include_directories: module_includes, dependencies: module_libs, link_with: [libffeadmodules, libffeadframework],
 	install: true, install_dir: bin_dir+'/lib')
 	install: true, install_dir: bin_dir+'/lib')

+ 50 - 33
frameworks/C++/ffead-cpp/te-benchmark-um-pq/src/TeBkUmLpq.cpp → frameworks/C++/ffead-cpp/t3/src/TeBkUmLpq.cpp

@@ -125,6 +125,7 @@ void TeBkUmLpqRouter::db(TeBkUmLpqWorld& w) {
 	int rid = CommonUtils::fastrand(g_seed) % 10000 + 1;
 	int rid = CommonUtils::fastrand(g_seed) % 10000 + 1;
 	LibpqQuery q;
 	LibpqQuery q;
 	q.withParamInt4(rid);
 	q.withParamInt4(rid);
+#ifdef HAVE_LIBPQ
 	q.withSelectQuery(WORLD_ONE_QUERY).withContext(&w).withCb0([](void* ctx, PGresult* res) {
 	q.withSelectQuery(WORLD_ONE_QUERY).withContext(&w).withCb0([](void* ctx, PGresult* res) {
 		TeBkUmLpqWorld* w = (TeBkUmLpqWorld*)ctx;
 		TeBkUmLpqWorld* w = (TeBkUmLpqWorld*)ctx;
 		int cols = PQnfields(res);
 		int cols = PQnfields(res);
@@ -133,6 +134,7 @@ void TeBkUmLpqRouter::db(TeBkUmLpqWorld& w) {
 			else w->setRandomNumber(ntohl(*((uint32_t *) PQgetvalue(res, 0, j))));
 			else w->setRandomNumber(ntohl(*((uint32_t *) PQgetvalue(res, 0, j))));
 		}
 		}
 	});
 	});
+#endif
 	sqli->executeQuery(&q);
 	sqli->executeQuery(&q);
 }
 }
 
 
@@ -149,6 +151,7 @@ void TeBkUmLpqRouter::queries(const char* q, int ql, std::vector<TeBkUmLpqWorld>
 		int rid = CommonUtils::fastrand(g_seed) % 10000 + 1;
 		int rid = CommonUtils::fastrand(g_seed) % 10000 + 1;
 		LibpqQuery q;
 		LibpqQuery q;
 		q.withParamInt4(rid);
 		q.withParamInt4(rid);
+#ifdef HAVE_LIBPQ
 		q.withSelectQuery(WORLD_ONE_QUERY).withContext(&wlst).withCb0([](void* ctx, PGresult* res) {
 		q.withSelectQuery(WORLD_ONE_QUERY).withContext(&wlst).withCb0([](void* ctx, PGresult* res) {
 			std::vector<TeBkUmLpqWorld>* wlst = (std::vector<TeBkUmLpqWorld>*)ctx;
 			std::vector<TeBkUmLpqWorld>* wlst = (std::vector<TeBkUmLpqWorld>*)ctx;
 			int cols = PQnfields(res);
 			int cols = PQnfields(res);
@@ -157,6 +160,7 @@ void TeBkUmLpqRouter::queries(const char* q, int ql, std::vector<TeBkUmLpqWorld>
 				else wlst->back().setRandomNumber(ntohl(*((uint32_t *) PQgetvalue(res, 0, j))));
 				else wlst->back().setRandomNumber(ntohl(*((uint32_t *) PQgetvalue(res, 0, j))));
 			}
 			}
 		});
 		});
+#endif
 		sqli->executeQuery(&q);
 		sqli->executeQuery(&q);
 	}
 	}
 }
 }
@@ -240,6 +244,7 @@ void TeBkUmLpqRouter::updates(const char* q, int ql, std::vector<TeBkUmLpqWorld>
 
 
 		LibpqQuery q;
 		LibpqQuery q;
 		q.withParamInt4(rid);
 		q.withParamInt4(rid);
+#ifdef HAVE_LIBPQ
 		q.withSelectQuery(WORLD_ONE_QUERY).withContext(&w).withCb0([](void* ctx, PGresult* res) {
 		q.withSelectQuery(WORLD_ONE_QUERY).withContext(&w).withCb0([](void* ctx, PGresult* res) {
 			TeBkUmLpqWorld* w = (TeBkUmLpqWorld*)ctx;
 			TeBkUmLpqWorld* w = (TeBkUmLpqWorld*)ctx;
 			int cols = PQnfields(res);
 			int cols = PQnfields(res);
@@ -248,6 +253,7 @@ void TeBkUmLpqRouter::updates(const char* q, int ql, std::vector<TeBkUmLpqWorld>
 				else w->setRandomNumber(ntohl(*((uint32_t *) PQgetvalue(res, 0, j))));
 				else w->setRandomNumber(ntohl(*((uint32_t *) PQgetvalue(res, 0, j))));
 			}
 			}
 		});
 		});
+#endif
 		sqli->executeQuery(&q);
 		sqli->executeQuery(&q);
 
 
 		int newRandomNumber = CommonUtils::fastrand(g_seed) % 10000 + 1;
 		int newRandomNumber = CommonUtils::fastrand(g_seed) % 10000 + 1;
@@ -300,6 +306,7 @@ void TeBkUmLpqRouter::updatesMulti(const char* q, int ql, std::vector<TeBkUmLpqW
 	}
 	}
 
 
 	LibpqQuery qu;
 	LibpqQuery qu;
+#ifdef HAVE_LIBPQ
 	qu.withSelectQuery(ssq.str()).withContext(&updt).withCb5([](void* ctx, int rn, int cn, char * d, int l) {
 	qu.withSelectQuery(ssq.str()).withContext(&updt).withCb5([](void* ctx, int rn, int cn, char * d, int l) {
 		UpdQrData* updt = (UpdQrData*)ctx;
 		UpdQrData* updt = (UpdQrData*)ctx;
 		int tmp = 0;
 		int tmp = 0;
@@ -325,6 +332,7 @@ void TeBkUmLpqRouter::updatesMulti(const char* q, int ql, std::vector<TeBkUmLpqW
 		UpdQrData* updt = (UpdQrData*)ctx;
 		UpdQrData* updt = (UpdQrData*)ctx;
 		updt->status = status;
 		updt->status = status;
 	});
 	});
+#endif
 	sqli->executeMultiQuery(&qu);
 	sqli->executeMultiQuery(&qu);
 
 
 	if(!updt.status) {
 	if(!updt.status) {
@@ -398,13 +406,14 @@ void TeBkUmLpqRouter::cachedWorlds(const char* q, int ql, std::vector<TeBkUmLpqW
 	CacheManager::cleanImpl(cchi);
 	CacheManager::cleanImpl(cchi);
 }
 }
 
 
-void TeBkUmLpqRouter::handleTemplate(HttpRequest* req, HttpResponse* res, SocketInterface* sif) {
+void TeBkUmLpqRouter::handleTemplate(HttpRequest* req, HttpResponse* res, BaseSocket* sif) {
 	LibpqDataSourceImpl* sqli = getDb();
 	LibpqDataSourceImpl* sqli = getDb();
 
 
 	Context ctx;
 	Context ctx;
 	std::list<TeBkUmLpqFortune> flst;
 	std::list<TeBkUmLpqFortune> flst;
 
 
 	LibpqQuery q;
 	LibpqQuery q;
+#ifdef HAVE_LIBPQ
 	q.withSelectQuery(FORTUNE_ALL_QUERY).withContext(&flst).withCb0([](void* ctx, PGresult* res) {
 	q.withSelectQuery(FORTUNE_ALL_QUERY).withContext(&flst).withCb0([](void* ctx, PGresult* res) {
 		std::list<TeBkUmLpqFortune>* flst = (std::list<TeBkUmLpqFortune>*)ctx;
 		std::list<TeBkUmLpqFortune>* flst = (std::list<TeBkUmLpqFortune>*)ctx;
 		int cols = PQnfields(res);
 		int cols = PQnfields(res);
@@ -420,6 +429,7 @@ void TeBkUmLpqRouter::handleTemplate(HttpRequest* req, HttpResponse* res, Socket
 			}
 			}
 		}
 		}
 	});
 	});
+#endif
 	sqli->executeQuery(&q);
 	sqli->executeQuery(&q);
 
 
 	flst.emplace_back(0, "Additional fortune added at request time.");
 	flst.emplace_back(0, "Additional fortune added at request time.");
@@ -437,24 +447,24 @@ void TeBkUmLpqRouter::handleTemplate(HttpRequest* req, HttpResponse* res, Socket
 
 
 //Do not use this class with non-embedded servers as it needs access to the underlying socket
 //Do not use this class with non-embedded servers as it needs access to the underlying socket
 //and writes the response directly to the socket, use TeBkUmLpqRouterPicoV for all lang-server implementations
 //and writes the response directly to the socket, use TeBkUmLpqRouterPicoV for all lang-server implementations
-bool TeBkUmLpqRouter::route(HttpRequest* req, HttpResponse* res, SocketInterface* sif) {
+bool TeBkUmLpqRouter::route(HttpRequest* req, HttpResponse* res, BaseSocket* sif) {
 	std::string h;
 	std::string h;
-	if(StringUtil::endsWith(req->getPath(), "/plaintext")) {
+	if(StringUtil::endsWith(req->getPath(), "/plaint")) {
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_TEXT_PLAIN, (int)HELLO_WORLD.length());
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_TEXT_PLAIN, (int)HELLO_WORLD.length());
 		sif->writeDirect(h, HELLO_WORLD);
 		sif->writeDirect(h, HELLO_WORLD);
-	} else if(StringUtil::endsWith(req->getPath(), "/json")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/j")) {
 		TeBkUmLpqMessage msg;
 		TeBkUmLpqMessage msg;
 		msg.setMessage(HELLO_WORLD);
 		msg.setMessage(HELLO_WORLD);
 		JSONSerialize::serializeObject(&msg, m_ser, res->getContentP());
 		JSONSerialize::serializeObject(&msg, m_ser, res->getContentP());
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		sif->writeDirect(h, res->getContent());
 		sif->writeDirect(h, res->getContent());
-	} else if(StringUtil::endsWith(req->getPath(), "/db")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/d")) {
 		TeBkUmLpqWorld msg;
 		TeBkUmLpqWorld msg;
 		db(msg);
 		db(msg);
 		JSONSerialize::serializeObject(&msg, w_ser, res->getContentP());
 		JSONSerialize::serializeObject(&msg, w_ser, res->getContentP());
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, req->getHttpVers(), req->isClose());
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, req->getHttpVers(), req->isClose());
 		sif->writeDirect(h, res->getContent());
 		sif->writeDirect(h, res->getContent());
-	} else if(StringUtil::endsWith(req->getPath(), "/querie_")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/que_")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmLpqWorld> msg;
 		std::vector<TeBkUmLpqWorld> msg;
@@ -462,7 +472,7 @@ bool TeBkUmLpqRouter::route(HttpRequest* req, HttpResponse* res, SocketInterface
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, req->getHttpVers(), req->isClose());
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, req->getHttpVers(), req->isClose());
 		sif->writeDirect(h, res->getContent());
 		sif->writeDirect(h, res->getContent());
-	} else if(StringUtil::endsWith(req->getPath(), "/queries")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/quer")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmLpqWorld> msg;
 		std::vector<TeBkUmLpqWorld> msg;
@@ -470,9 +480,9 @@ bool TeBkUmLpqRouter::route(HttpRequest* req, HttpResponse* res, SocketInterface
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, req->getHttpVers(), req->isClose());
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, req->getHttpVers(), req->isClose());
 		sif->writeDirect(h, res->getContent());
 		sif->writeDirect(h, res->getContent());
-	} else if(StringUtil::endsWith(req->getPath(), "/fortunes")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/fortu")) {
 		handleTemplate(req, res, sif);
 		handleTemplate(req, res, sif);
-	} else if(StringUtil::endsWith(req->getPath(), "/update_")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/upd_")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmLpqWorld> msg;
 		std::vector<TeBkUmLpqWorld> msg;
@@ -480,7 +490,7 @@ bool TeBkUmLpqRouter::route(HttpRequest* req, HttpResponse* res, SocketInterface
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, req->getHttpVers(), req->isClose());
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, req->getHttpVers(), req->isClose());
 		sif->writeDirect(h, res->getContent());
 		sif->writeDirect(h, res->getContent());
-	} else if(StringUtil::endsWith(req->getPath(), "/updates")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/updt")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmLpqWorld> msg;
 		std::vector<TeBkUmLpqWorld> msg;
@@ -488,7 +498,7 @@ bool TeBkUmLpqRouter::route(HttpRequest* req, HttpResponse* res, SocketInterface
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, req->getHttpVers(), req->isClose());
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, req->getHttpVers(), req->isClose());
 		sif->writeDirect(h, res->getContent());
 		sif->writeDirect(h, res->getContent());
-	} else if(StringUtil::endsWith(req->getPath(), "/cached-worlds")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/cached-wld")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmLpqWorld> msg;
 		std::vector<TeBkUmLpqWorld> msg;
@@ -510,10 +520,10 @@ SerCont TeBkUmLpqRouter::wcont_ser;
 
 
 TeBkUmLpqRouter::TeBkUmLpqRouter() {
 TeBkUmLpqRouter::TeBkUmLpqRouter() {
 	sqli = NULL;
 	sqli = NULL;
-	tmplFunc = TemplateUtil::getTemplateFunc("te-benchmark-um-pq", "tpe/fortunes.tpe");
-	m_ser = Serializer::getSerFuncForObject("te-benchmark-um-pq", "TeBkUmLpqMessage");
-	w_ser = Serializer::getSerFuncForObject("te-benchmark-um-pq", "TeBkUmLpqWorld");
-	wcont_ser = Serializer::getSerFuncForObjectCont("te-benchmark-um-pq", "TeBkUmLpqWorld", "std::vector");
+	tmplFunc = TemplateUtil::getTemplateFunc("t3", "tpe/fortunes.tpe");
+	m_ser = Serializer::getSerFuncForObject("t3", "TeBkUmLpqMessage");
+	w_ser = Serializer::getSerFuncForObject("t3", "TeBkUmLpqWorld");
+	wcont_ser = Serializer::getSerFuncForObjectCont("t3", "TeBkUmLpqWorld", "std::vector");
 }
 }
 
 
 TeBkUmLpqRouter::~TeBkUmLpqRouter() {
 TeBkUmLpqRouter::~TeBkUmLpqRouter() {
@@ -521,7 +531,7 @@ TeBkUmLpqRouter::~TeBkUmLpqRouter() {
 
 
 LibpqDataSourceImpl* TeBkUmLpqRouter::getDb() {
 LibpqDataSourceImpl* TeBkUmLpqRouter::getDb() {
 	if(sqli==NULL) {
 	if(sqli==NULL) {
-		sqli = static_cast<LibpqDataSourceImpl*>(DataSourceManager::getRawImpl("PostgreSQL-DSN", "te-benchmark-um-pq"));
+		sqli = static_cast<LibpqDataSourceImpl*>(DataSourceManager::getRawImpl("PostgreSQL-DSN", "t3"));
 	}
 	}
 	return sqli;
 	return sqli;
 }
 }
@@ -539,18 +549,25 @@ void TeBkUmLpqRouterPicoV::handleTemplate(HttpResponse* res) {
 	std::list<TeBkUmLpqFortune> flst;
 	std::list<TeBkUmLpqFortune> flst;
 
 
 	LibpqQuery q;
 	LibpqQuery q;
-	q.withSelectQuery(FORTUNE_ALL_QUERY).withContext(&flst).withCb5([](void* ctx, int rn, int cn, char * d, int l) {
+#ifdef HAVE_LIBPQ
+	q.withSelectQuery(FORTUNE_ALL_QUERY).withContext(&flst).withCb0([](void* ctx, PGresult* res) {
 		std::list<TeBkUmLpqFortune>* flst = (std::list<TeBkUmLpqFortune>*)ctx;
 		std::list<TeBkUmLpqFortune>* flst = (std::list<TeBkUmLpqFortune>*)ctx;
-		if(cn==0) {
-			flst->emplace_back(ntohl(*((uint32_t *) d)));
-		} else {
-			TeBkUmLpqFortune& w = flst->back();
-			w.message = CryptoHandler::sanitizeHtmlFast((const uint8_t *)d, (size_t)l, w.message_i, w.allocd);
+		int cols = PQnfields(res);
+		int rows = PQntuples(res);
+		for(int i=0; i<rows; i++) {
+			for (int j = 0; j < cols; ++j) {
+				if(j==0) {
+					flst->emplace_back(ntohl(*((uint32_t *) PQgetvalue(res, i, j))));
+				} else {
+					TeBkUmLpqFortune& w = flst->back();
+					w.message = CryptoHandler::sanitizeHtmlFast((const uint8_t *)PQgetvalue(res, i, j), (size_t)PQgetlength(res, i, j), w.message_i, w.allocd);
+				}
+			}
 		}
 		}
 	});
 	});
+#endif
 	sqli->executeQuery(&q);
 	sqli->executeQuery(&q);
 
 
-
 	flst.emplace_back(0, "Additional fortune added at request time.");
 	flst.emplace_back(0, "Additional fortune added at request time.");
 	flst.sort();
 	flst.sort();
 
 
@@ -561,50 +578,50 @@ void TeBkUmLpqRouterPicoV::handleTemplate(HttpResponse* res) {
 	res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_TEXT_HTML).setContent(str.str());
 	res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_TEXT_HTML).setContent(str.str());
 }
 }
 
 
-bool TeBkUmLpqRouterPicoV::route(HttpRequest *req, HttpResponse *res, SocketInterface *sif) {
-	if(StringUtil::endsWith(req->getPath(), "/plaintext")) {
+bool TeBkUmLpqRouterPicoV::route(HttpRequest *req, HttpResponse *res, BaseSocket *sif) {
+	if(StringUtil::endsWith(req->getPath(), "/plaint")) {
 		res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_TEXT_PLAIN).setContent(HELLO_WORLD);
 		res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_TEXT_PLAIN).setContent(HELLO_WORLD);
-	} else if(StringUtil::endsWith(req->getPath(), "/json")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/j")) {
 		TeBkUmLpqMessage msg;
 		TeBkUmLpqMessage msg;
 		msg.setMessage(HELLO_WORLD);
 		msg.setMessage(HELLO_WORLD);
 		JSONSerialize::serializeObject(&msg, m_ser, res->getContentP());
 		JSONSerialize::serializeObject(&msg, m_ser, res->getContentP());
 		res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
-	} else if(StringUtil::endsWith(req->getPath(), "/db")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/d")) {
 		TeBkUmLpqWorld msg;
 		TeBkUmLpqWorld msg;
 		db(msg);
 		db(msg);
 		JSONSerialize::serializeObject(&msg, w_ser, res->getContentP());
 		JSONSerialize::serializeObject(&msg, w_ser, res->getContentP());
 		res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
-	} else if(StringUtil::endsWith(req->getPath(), "/querie_")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/que_")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmLpqWorld> msg;
 		std::vector<TeBkUmLpqWorld> msg;
 		queries(params[0].val, params[0].val_len, msg);
 		queries(params[0].val, params[0].val_len, msg);
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
-	} else if(StringUtil::endsWith(req->getPath(), "/queries")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/quer")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmLpqWorld> msg;
 		std::vector<TeBkUmLpqWorld> msg;
 		queriesMulti(params[0].val, params[0].val_len, msg);
 		queriesMulti(params[0].val, params[0].val_len, msg);
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
-	} else if(StringUtil::endsWith(req->getPath(), "/fortunes")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/fortu")) {
 		handleTemplate(res);
 		handleTemplate(res);
-	} else if(StringUtil::endsWith(req->getPath(), "/update_")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/upd_")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmLpqWorld> msg;
 		std::vector<TeBkUmLpqWorld> msg;
 		updates(params[0].val, params[0].val_len, msg);
 		updates(params[0].val, params[0].val_len, msg);
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
-	} else if(StringUtil::endsWith(req->getPath(), "/updates")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/updt")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmLpqWorld> msg;
 		std::vector<TeBkUmLpqWorld> msg;
 		updatesMulti(params[0].val, params[0].val_len, msg);
 		updatesMulti(params[0].val, params[0].val_len, msg);
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
 		res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->httpStatus(HTTPResponseStatus::Ok).setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
-	} else if(StringUtil::endsWith(req->getPath(), "/cached-worlds")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/cached-wld")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		std::vector<TeBkUmLpqWorld> msg;
 		std::vector<TeBkUmLpqWorld> msg;

+ 4 - 4
frameworks/C++/ffead-cpp/te-benchmark-um-mgr/src/autotools/Makefile.am → frameworks/C++/ffead-cpp/t3/src/autotools/Makefile.am

@@ -8,10 +8,10 @@ distdir=${PACKAGE_NAME}-${PACKAGE_VERSION}-src
 fprefix=../../../../${packageIdentifier}
 fprefix=../../../../${packageIdentifier}
 prefix=${abs_builddir}
 prefix=${abs_builddir}
 
 
-lib_LTLIBRARIES = libte-benchmark-um-mgr.la
-libte_benchmark_um_mgr_la_SOURCES = ../TeBkUmMgr.cpp
+lib_LTLIBRARIES = libt3.la
+libt3_la_SOURCES = ../TeBkUmLpq.cpp
 
 
-libte_benchmark_um_mgr_la_LDFLAGS = -no-undefined 
-libte_benchmark_um_mgr_la_LIBADD = -L"${fprefix}/lib" -lffead-modules -lffead-framework
+libt3_la_LDFLAGS = -no-undefined 
+libt3_la_LIBADD = -L"${fprefix}/lib" -lffead-modules -lffead-framework
 
 
 #dist_noinst_SCRIPTS = autogen.sh
 #dist_noinst_SCRIPTS = autogen.sh

+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-pq/tpe/fortunes.tpe → frameworks/C++/ffead-cpp/t3/tpe/fortunes.tpe


+ 1 - 1
frameworks/C++/ffead-cpp/te-benchmark-um-mgr/xmake.lua → frameworks/C++/ffead-cpp/t3/xmake.lua

@@ -2,7 +2,7 @@ add_includedirs("include/")
 
 
 local bindir = "$(projectdir)/ffead-cpp-6.0-bin"
 local bindir = "$(projectdir)/ffead-cpp-6.0-bin"
 
 
-target("te-benchmark-um-mgr")
+target("t3")
 	set_languages("c++17")
 	set_languages("c++17")
 	add_deps("ffead-framework")
 	add_deps("ffead-framework")
 	add_options(getOptions())
 	add_options(getOptions())

+ 14 - 0
frameworks/C++/ffead-cpp/t4/CMakeLists.txt

@@ -0,0 +1,14 @@
+
+file(GLOB sources
+    "include/*.h"
+    "src/*.cpp"
+)
+
+include_directories("${CMAKE_SOURCE_DIR}/web/t4/include")
+if(BUILD_STATIC_LIBS OR EMSCRIPTEN)
+	add_library(t4 STATIC ${sources})
+else()
+	add_library(t4 ${sources})
+endif()
+set_property(TARGET t4 PROPERTY POSITION_INDEPENDENT_CODE ON)
+target_link_libraries(t4 ffead-modules ffead-framework ${HAVE_PQLIB} ${HAVE_CURLLIB} ${HAVE_SSLLIB} ${HAVE_MEMCACHEDLIB} ${HAVE_ODBCLIB} ${HAVE_MONGOCLIB} ${HAVE_BSONLIB} ${HAVE_ZLIB} ${HAVE_CRYPTOLIB})

+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-pq-async/config/application.xml → frameworks/C++/ffead-cpp/t4/config/application.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-pq-async/config/cachememory.xml → frameworks/C++/ffead-cpp/t4/config/cachememory.xml


+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-pq-async/config/sdorm.xml → frameworks/C++/ffead-cpp/t4/config/sdorm.xml


+ 41 - 13
frameworks/C++/ffead-cpp/te-benchmark-um-pq-async/include/TeBkUmLpqAsync.h → frameworks/C++/ffead-cpp/t4/include/TeBkUmLpqAsync.h

@@ -20,8 +20,8 @@
  *      Author: sumeetc
  *      Author: sumeetc
  */
  */
 
 
-#ifndef WEB_TE_BENCHMARK_UM_INCLUDE_TeBkUmLpqAsync_H_
-#define WEB_TE_BENCHMARK_UM_INCLUDE_TeBkUmLpqAsync_H_
+#ifndef WEB_t1_INCLUDE_TeBkUmLpqAsync_H_
+#define WEB_t1_INCLUDE_TeBkUmLpqAsync_H_
 #include "TemplateHandler.h"
 #include "TemplateHandler.h"
 #include "vector"
 #include "vector"
 #ifndef OS_MINGW
 #ifndef OS_MINGW
@@ -45,6 +45,8 @@
 #include <unordered_map>
 #include <unordered_map>
 #include "ConfigurationData.h"
 #include "ConfigurationData.h"
 
 
+class TeBkUmLpqAsyncWorld;
+
 class TeBkUmLpqAsyncWorld {
 class TeBkUmLpqAsyncWorld {
 	int id;
 	int id;
 	int randomNumber;
 	int randomNumber;
@@ -57,6 +59,25 @@ public:
 	void setId(int id);
 	void setId(int id);
 	int getRandomNumber() const;
 	int getRandomNumber() const;
 	void setRandomNumber(int randomNumber);
 	void setRandomNumber(int randomNumber);
+#ifdef HAVE_RAPID_JSON
+	void toJson(rapidjson::Writer<rapidjson::StringBuffer>& w) {
+		w.StartObject();
+		w.String("id", 2);
+	    w.Int(id);
+		w.String("randomNumber", 12);
+	    w.Int(randomNumber);
+		w.EndObject();
+	}
+#endif
+#ifdef HAVE_RAPID_JSON
+	static void toJson(std::vector<TeBkUmLpqAsyncWorld>& vec, rapidjson::Writer<rapidjson::StringBuffer>& w) {
+		w.StartArray();
+		for(auto el: vec) {
+			el.toJson(w);
+		}
+		w.EndArray();
+	}
+#endif
 };
 };
 
 
 class TeBkUmLpqAsyncFortune {
 class TeBkUmLpqAsyncFortune {
@@ -82,26 +103,34 @@ public:
 	virtual ~TeBkUmLpqAsyncMessage();
 	virtual ~TeBkUmLpqAsyncMessage();
 	const std::string& getMessage() const;
 	const std::string& getMessage() const;
 	void setMessage(const std::string& message);
 	void setMessage(const std::string& message);
+#ifdef HAVE_RAPID_JSON
+	void toJson(rapidjson::Writer<rapidjson::StringBuffer>& w) {
+		w.StartObject();
+		w.String("message", 7);
+	    w.String(message.c_str(), static_cast<rapidjson::SizeType>(message.length()));
+		w.EndObject();
+	}
+#endif
 };
 };
 
 
 struct AsyncDbReq {
 struct AsyncDbReq {
 	float httpVers;
 	float httpVers;
 	bool conn_clos;
 	bool conn_clos;
-	SocketInterface* sif;
+	BaseSocket* sif;
 	TeBkUmLpqAsyncWorld w;
 	TeBkUmLpqAsyncWorld w;
 };
 };
 
 
 struct AsyncQueriesReq {
 struct AsyncQueriesReq {
 	float httpVers;
 	float httpVers;
 	bool conn_clos;
 	bool conn_clos;
-	SocketInterface* sif;
+	BaseSocket* sif;
 	std::vector<TeBkUmLpqAsyncWorld> vec;
 	std::vector<TeBkUmLpqAsyncWorld> vec;
 };
 };
 
 
 struct AsyncUpdatesReq {
 struct AsyncUpdatesReq {
 	float httpVers;
 	float httpVers;
 	bool conn_clos;
 	bool conn_clos;
-	SocketInterface* sif;
+	BaseSocket* sif;
 	LibpqDataSourceImpl* sqli;
 	LibpqDataSourceImpl* sqli;
 	std::vector<TeBkUmLpqAsyncWorld> vec;
 	std::vector<TeBkUmLpqAsyncWorld> vec;
 };
 };
@@ -109,7 +138,7 @@ struct AsyncUpdatesReq {
 struct AsyncFortuneReq {
 struct AsyncFortuneReq {
 	float httpVers;
 	float httpVers;
 	bool conn_clos;
 	bool conn_clos;
-	SocketInterface* sif;
+	BaseSocket* sif;
 	std::list<TeBkUmLpqAsyncFortune> flst;
 	std::list<TeBkUmLpqAsyncFortune> flst;
 };
 };
 
 
@@ -133,15 +162,14 @@ class TeBkUmLpqAsyncRouter : public Router {
 	static SerCont wcont_ser;
 	static SerCont wcont_ser;
 
 
 	static std::string& getUpdQuery(int count);
 	static std::string& getUpdQuery(int count);
-
-	void dbAsync(SocketInterface* sif);
-	void queriesAsync(const char* q, int ql, SocketInterface* sif);
+	void dbAsync(BaseSocket* sif);
+	void queriesAsync(const char* q, int ql, BaseSocket* sif);
 	void updatesAsync(const char* q, int ql, AsyncUpdatesReq* req);
 	void updatesAsync(const char* q, int ql, AsyncUpdatesReq* req);
 	void updatesAsyncb(const char* q, int ql, AsyncUpdatesReq* req);
 	void updatesAsyncb(const char* q, int ql, AsyncUpdatesReq* req);
 	void cachedWorlds(const char*, int, std::vector<TeBkUmLpqAsyncWorld>&);
 	void cachedWorlds(const char*, int, std::vector<TeBkUmLpqAsyncWorld>&);
-	void fortunes(SocketInterface* sif);
+	void fortunes(BaseSocket* sif);
 
 
-	void queriesMultiAsync(const char*, int, SocketInterface* sif);
+	void queriesMultiAsync(const char*, int, BaseSocket* sif);
 	void updatesMulti(const char*, int, AsyncUpdatesReq*);
 	void updatesMulti(const char*, int, AsyncUpdatesReq*);
 
 
 	static std::unordered_map<int, std::string> _qC;
 	static std::unordered_map<int, std::string> _qC;
@@ -167,7 +195,7 @@ public:
 		return std::map<std::string, std::string>();
 		return std::map<std::string, std::string>();
 	}
 	}
 	/* END */
 	/* END */
-	bool route(HttpRequest* req, HttpResponse* res, SocketInterface* sif);
+	bool route(HttpRequest* req, HttpResponse* res, BaseSocket* sif);
 };
 };
 
 
 class TeBkUmLpqAsyncRouterPooled : public TeBkUmLpqAsyncRouter {
 class TeBkUmLpqAsyncRouterPooled : public TeBkUmLpqAsyncRouter {
@@ -189,4 +217,4 @@ public:
 	virtual ~TeBkUmLpqAsyncRouterPooled();
 	virtual ~TeBkUmLpqAsyncRouterPooled();
 };
 };
 
 
-#endif /* WEB_TE_BENCHMARK_UM_INCLUDE_TeBkUmLpqAsync_H_ */
+#endif /* WEB_t1_INCLUDE_TeBkUmLpqAsync_H_ */

+ 1 - 1
frameworks/C++/ffead-cpp/te-benchmark-um-pq-async/meson.build → frameworks/C++/ffead-cpp/t4/meson.build

@@ -11,5 +11,5 @@ module_libs = [global_libs]
 c = run_command(meson_grabber, 'src/')
 c = run_command(meson_grabber, 'src/')
 module_sources = c.stdout().strip().split('\n')
 module_sources = c.stdout().strip().split('\n')
 
 
-shared_library('te-benchmark-um-pq-async', module_sources, include_directories: module_includes, dependencies: module_libs, link_with: [libffeadmodules, libffeadframework],
+shared_library('t4', module_sources, include_directories: module_includes, dependencies: module_libs, link_with: [libffeadmodules, libffeadframework],
 	install: true, install_dir: bin_dir+'/lib')
 	install: true, install_dir: bin_dir+'/lib')

+ 122 - 47
frameworks/C++/ffead-cpp/te-benchmark-um-pq-async/src/TeBkUmLpqAsync.cpp → frameworks/C++/ffead-cpp/t4/src/TeBkUmLpqAsync.cpp

@@ -117,33 +117,43 @@ const std::string TeBkUmLpqAsyncRouter::FORTUNE_ALL_QUERY = "select id,message f
 std::unordered_map<int, std::string> TeBkUmLpqAsyncRouter::_qC;
 std::unordered_map<int, std::string> TeBkUmLpqAsyncRouter::_qC;
 int TeBkUmLpqAsyncRouter::g_seed = 0;
 int TeBkUmLpqAsyncRouter::g_seed = 0;
 
 
-void TeBkUmLpqAsyncRouter::dbAsync(SocketInterface* sif) {
+void TeBkUmLpqAsyncRouter::dbAsync(BaseSocket* sif) {
 	LibpqDataSourceImpl* sqli = getDb(5);
 	LibpqDataSourceImpl* sqli = getDb(5);
 	int rid = CommonUtils::fastrand(g_seed) % 10000 + 1;
 	int rid = CommonUtils::fastrand(g_seed) % 10000 + 1;
 	LibpqAsyncReq* areq = sqli->getAsyncRequest();
 	LibpqAsyncReq* areq = sqli->getAsyncRequest();
 	LibpqQuery* q = areq->getQuery();
 	LibpqQuery* q = areq->getQuery();
 	q->withParamInt4(rid);
 	q->withParamInt4(rid);
+#ifdef HAVE_LIBPQ
 	q->withSelectQuery(WORLD_ONE_QUERY).withContext(sif).withCb0([](void* ctx, PGresult* res) {
 	q->withSelectQuery(WORLD_ONE_QUERY).withContext(sif).withCb0([](void* ctx, PGresult* res) {
-		SocketInterface* sif = (SocketInterface*)ctx;
+		BaseSocket* sif = (BaseSocket*)ctx;
 
 
-		TeBkUmLpqAsyncWorld w;
+		TeBkUmLpqAsyncWorld wo;
 		int cols = PQnfields(res);
 		int cols = PQnfields(res);
 		for (int j = 0; j < cols; ++j) {
 		for (int j = 0; j < cols; ++j) {
-			if(j==0)w.setId(ntohl(*((uint32_t *) PQgetvalue(res, 0, j))));
-			else w.setRandomNumber(ntohl(*((uint32_t *) PQgetvalue(res, 0, j))));
+			if(j==0)wo.setId(ntohl(*((uint32_t *) PQgetvalue(res, 0, j))));
+			else wo.setRandomNumber(ntohl(*((uint32_t *) PQgetvalue(res, 0, j))));
 		}
 		}
 
 
 		HttpResponse r;
 		HttpResponse r;
-		JSONSerialize::serializeObject(&w, w_ser, r.getContentP());
 		std::string h;
 		std::string h;
-		r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false);
+#ifdef HAVE_RAPID_JSON
+		rapidjson::StringBuffer s;
+		rapidjson::Writer<rapidjson::StringBuffer> w(s);
+		wo.toJson(w);
+		r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false, s.GetSize());
+		sif->writeDirect(h, s.GetString(), s.GetSize());
+#else
+		JSONSerialize::serializeObject(&wo, w_ser, r.getContentP());
+		r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		sif->writeDirect(h, r.getContent());
 		sif->writeDirect(h, r.getContent());
+#endif
 		sif->unUse();
 		sif->unUse();
 	});
 	});
+#endif
 	sqli->postAsync(areq);
 	sqli->postAsync(areq);
 }
 }
 
 
-void TeBkUmLpqAsyncRouter::queriesAsync(const char* q, int ql, SocketInterface* sif) {
+void TeBkUmLpqAsyncRouter::queriesAsync(const char* q, int ql, BaseSocket* sif) {
 	int queryCount = 0;
 	int queryCount = 0;
 	CommonUtils::fastStrToNum(q, ql, queryCount);
 	CommonUtils::fastStrToNum(q, ql, queryCount);
 	queryCount = std::max(1, std::min(queryCount, 500));
 	queryCount = std::max(1, std::min(queryCount, 500));
@@ -156,8 +166,9 @@ void TeBkUmLpqAsyncRouter::queriesAsync(const char* q, int ql, SocketInterface*
 		q->withParamInt4(rid);
 		q->withParamInt4(rid);
 		q->withSelectQuery(WORLD_ONE_QUERY);
 		q->withSelectQuery(WORLD_ONE_QUERY);
 	}
 	}
+#ifdef HAVE_LIBPQ
 	areq->withFinalCb(sif, [](void* ctx, bool status, std::vector<PGresult*>* results, const std::string& q, int counter) {
 	areq->withFinalCb(sif, [](void* ctx, bool status, std::vector<PGresult*>* results, const std::string& q, int counter) {
-		SocketInterface* sif = (SocketInterface*)ctx;
+		BaseSocket* sif = (BaseSocket*)ctx;
 		std::vector<TeBkUmLpqAsyncWorld> vec;
 		std::vector<TeBkUmLpqAsyncWorld> vec;
 		vec.reserve((int)results->size());
 		vec.reserve((int)results->size());
 		for (int i = 0; i < (int)results->size(); ++i) {
 		for (int i = 0; i < (int)results->size(); ++i) {
@@ -170,16 +181,25 @@ void TeBkUmLpqAsyncRouter::queriesAsync(const char* q, int ql, SocketInterface*
 		}
 		}
 
 
 		HttpResponse r;
 		HttpResponse r;
-		JSONSerialize::serializeObjectCont(&vec, wcont_ser, "vector", r.getContentP());
 		std::string h;
 		std::string h;
+#ifdef HAVE_RAPID_JSON
+		rapidjson::StringBuffer s;
+		rapidjson::Writer<rapidjson::StringBuffer> w(s);
+		TeBkUmLpqAsyncWorld::toJson(vec, w);
+		r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false, s.GetSize());
+		sif->writeDirect(h, s.GetString(), s.GetSize());
+#else
+		JSONSerialize::serializeObjectCont(&vec, wcont_ser, "vector", r.getContentP());
 		r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false);
 		r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false);
 		sif->writeDirect(h, r.getContent());
 		sif->writeDirect(h, r.getContent());
+#endif
 		sif->unUse();
 		sif->unUse();
 	});
 	});
+#endif
 	sqli->postAsync(areq);
 	sqli->postAsync(areq);
 }
 }
 
 
-void TeBkUmLpqAsyncRouter::queriesMultiAsync(const char* q, int ql, SocketInterface* sif) {
+void TeBkUmLpqAsyncRouter::queriesMultiAsync(const char* q, int ql, BaseSocket* sif) {
 	int queryCount = 0;
 	int queryCount = 0;
 	CommonUtils::fastStrToNum(q, ql, queryCount);
 	CommonUtils::fastStrToNum(q, ql, queryCount);
 	queryCount = std::max(1, std::min(queryCount, 500));
 	queryCount = std::max(1, std::min(queryCount, 500));
@@ -195,9 +215,9 @@ void TeBkUmLpqAsyncRouter::queriesMultiAsync(const char* q, int ql, SocketInterf
 	LibpqAsyncReq* areq = sqli->getAsyncRequest();
 	LibpqAsyncReq* areq = sqli->getAsyncRequest();
 	LibpqQuery* qu = areq->getQuery();
 	LibpqQuery* qu = areq->getQuery();
 	qu->withSelectQuery(ss.str()).withMulti();
 	qu->withSelectQuery(ss.str()).withMulti();
-
+#ifdef HAVE_LIBPQ
 	areq->withFinalCb(sif, [](void* ctx, bool status, std::vector<PGresult*>* results, const std::string& q, int counter) {
 	areq->withFinalCb(sif, [](void* ctx, bool status, std::vector<PGresult*>* results, const std::string& q, int counter) {
-		SocketInterface* sif = (SocketInterface*)ctx;
+		BaseSocket* sif = (BaseSocket*)ctx;
 		std::vector<TeBkUmLpqAsyncWorld> vec;
 		std::vector<TeBkUmLpqAsyncWorld> vec;
 		vec.reserve((int)results->size());
 		vec.reserve((int)results->size());
 		for (int i = 0; i < (int)results->size(); ++i) {
 		for (int i = 0; i < (int)results->size(); ++i) {
@@ -212,12 +232,21 @@ void TeBkUmLpqAsyncRouter::queriesMultiAsync(const char* q, int ql, SocketInterf
 		}
 		}
 
 
 		HttpResponse r;
 		HttpResponse r;
-		JSONSerialize::serializeObjectCont(&vec, wcont_ser, "vector", r.getContentP());
 		std::string h;
 		std::string h;
+#ifdef HAVE_RAPID_JSON
+		rapidjson::StringBuffer s;
+		rapidjson::Writer<rapidjson::StringBuffer> w(s);
+		TeBkUmLpqAsyncWorld::toJson(vec, w);
+		r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false, s.GetSize());
+		sif->writeDirect(h, s.GetString(), s.GetSize());
+#else
+		JSONSerialize::serializeObjectCont(&vec, wcont_ser, "vector", r.getContentP());
 		r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false);
 		r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false);
 		sif->writeDirect(h, r.getContent());
 		sif->writeDirect(h, r.getContent());
+#endif
 		sif->unUse();
 		sif->unUse();
 	});
 	});
+#endif
 	sqli->postAsync(areq, queryCount);
 	sqli->postAsync(areq, queryCount);
 }
 }
 
 
@@ -239,7 +268,7 @@ void TeBkUmLpqAsyncRouter::updatesMulti(const char* q, int ql, AsyncUpdatesReq*
 	LibpqAsyncReq* areq = req->sqli->getAsyncRequest();
 	LibpqAsyncReq* areq = req->sqli->getAsyncRequest();
 	LibpqQuery* qu = areq->getQuery();
 	LibpqQuery* qu = areq->getQuery();
 	qu->withSelectQuery(ss.str()).withMulti();
 	qu->withSelectQuery(ss.str()).withMulti();
-
+#ifdef HAVE_LIBPQ
 	areq->withFinalCb(req, [](void* ctx, bool status, std::vector<PGresult*>* results, const std::string& q, int counter) {
 	areq->withFinalCb(req, [](void* ctx, bool status, std::vector<PGresult*>* results, const std::string& q, int counter) {
 		AsyncUpdatesReq* req = (AsyncUpdatesReq*)ctx;
 		AsyncUpdatesReq* req = (AsyncUpdatesReq*)ctx;
 		if(status) {
 		if(status) {
@@ -276,10 +305,18 @@ void TeBkUmLpqAsyncRouter::updatesMulti(const char* q, int ql, AsyncUpdatesReq*
 				AsyncUpdatesReq* req = (AsyncUpdatesReq*)ctx;
 				AsyncUpdatesReq* req = (AsyncUpdatesReq*)ctx;
 				if(status) {
 				if(status) {
 					HttpResponse r;
 					HttpResponse r;
-					JSONSerialize::serializeObjectCont(&req->vec, wcont_ser, "vector", r.getContentP());
 					std::string h;
 					std::string h;
-					r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, req->httpVers, req->conn_clos);
+#ifdef HAVE_RAPID_JSON
+					rapidjson::StringBuffer s;
+					rapidjson::Writer<rapidjson::StringBuffer> w(s);
+					TeBkUmLpqAsyncWorld::toJson(req->vec, w);
+					r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false, s.GetSize());
+					req->sif->writeDirect(h, s.GetString(), s.GetSize());
+#else
+					JSONSerialize::serializeObjectCont(&req->vec, wcont_ser, "vector", r.getContentP());
+					r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false);
 					req->sif->writeDirect(h, r.getContent());
 					req->sif->writeDirect(h, r.getContent());
+#endif
 				} else {
 				} else {
 					HttpResponse r;
 					HttpResponse r;
 					std::string h;
 					std::string h;
@@ -292,6 +329,7 @@ void TeBkUmLpqAsyncRouter::updatesMulti(const char* q, int ql, AsyncUpdatesReq*
 			req->sqli->postAsync(areq, queryCount*3);
 			req->sqli->postAsync(areq, queryCount*3);
 		}
 		}
 	});
 	});
+#endif
 	req->sqli->postAsync(areq, queryCount);
 	req->sqli->postAsync(areq, queryCount);
 }
 }
 
 
@@ -337,6 +375,7 @@ void TeBkUmLpqAsyncRouter::updatesAsyncb(const char* q, int ql, AsyncUpdatesReq*
 		q->withParamInt4(rid);
 		q->withParamInt4(rid);
 		q->withSelectQuery(WORLD_ONE_QUERY);
 		q->withSelectQuery(WORLD_ONE_QUERY);
 	}
 	}
+#ifdef HAVE_LIBPQ
 	areq->withFinalCb(req, [](void* ctx, bool status, std::vector<PGresult*>* results, const std::string& query, int counter) {
 	areq->withFinalCb(req, [](void* ctx, bool status, std::vector<PGresult*>* results, const std::string& query, int counter) {
 		AsyncUpdatesReq* req = (AsyncUpdatesReq*)ctx;
 		AsyncUpdatesReq* req = (AsyncUpdatesReq*)ctx;
 
 
@@ -377,10 +416,18 @@ void TeBkUmLpqAsyncRouter::updatesAsyncb(const char* q, int ql, AsyncUpdatesReq*
 			AsyncUpdatesReq* req = (AsyncUpdatesReq*)ctx;
 			AsyncUpdatesReq* req = (AsyncUpdatesReq*)ctx;
 			if(status) {
 			if(status) {
 				HttpResponse r;
 				HttpResponse r;
-				JSONSerialize::serializeObjectCont(&req->vec, wcont_ser, "vector", r.getContentP());
 				std::string h;
 				std::string h;
-				r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, req->httpVers, req->conn_clos);
+#ifdef HAVE_RAPID_JSON
+				rapidjson::StringBuffer s;
+				rapidjson::Writer<rapidjson::StringBuffer> w(s);
+				TeBkUmLpqAsyncWorld::toJson(req->vec, w);
+				r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false, s.GetSize());
+				req->sif->writeDirect(h, s.GetString(), s.GetSize());
+#else
+				JSONSerialize::serializeObjectCont(&req->vec, wcont_ser, "vector", r.getContentP());
+				r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false);
 				req->sif->writeDirect(h, r.getContent());
 				req->sif->writeDirect(h, r.getContent());
+#endif
 			} else {
 			} else {
 				HttpResponse r;
 				HttpResponse r;
 				std::string h;
 				std::string h;
@@ -392,6 +439,7 @@ void TeBkUmLpqAsyncRouter::updatesAsyncb(const char* q, int ql, AsyncUpdatesReq*
 		});
 		});
 		req->sqli->postAsync(areq);
 		req->sqli->postAsync(areq);
 	});
 	});
+#endif
 	req->sqli->postAsync(areq);
 	req->sqli->postAsync(areq);
 }
 }
 
 
@@ -411,6 +459,7 @@ void TeBkUmLpqAsyncRouter::updatesAsync(const char* q, int ql, AsyncUpdatesReq*
 		qu->withParamInt4(rid);
 		qu->withParamInt4(rid);
 		qu->withSelectQuery(WORLD_ONE_QUERY);
 		qu->withSelectQuery(WORLD_ONE_QUERY);
 	}
 	}
+#ifdef HAVE_LIBPQ
 	areq->withFinalCb(req, [](void* ctx, bool status, std::vector<PGresult*>* results, const std::string& query, int counter) {
 	areq->withFinalCb(req, [](void* ctx, bool status, std::vector<PGresult*>* results, const std::string& query, int counter) {
 		AsyncUpdatesReq* req = (AsyncUpdatesReq*)ctx;
 		AsyncUpdatesReq* req = (AsyncUpdatesReq*)ctx;
 		LibpqAsyncReq* areq = req->sqli->getAsyncRequest();
 		LibpqAsyncReq* areq = req->sqli->getAsyncRequest();
@@ -447,10 +496,18 @@ void TeBkUmLpqAsyncRouter::updatesAsync(const char* q, int ql, AsyncUpdatesReq*
 			AsyncUpdatesReq* req = (AsyncUpdatesReq*)ctx;
 			AsyncUpdatesReq* req = (AsyncUpdatesReq*)ctx;
 			if(status) {
 			if(status) {
 				HttpResponse r;
 				HttpResponse r;
-				JSONSerialize::serializeObjectCont(&req->vec, wcont_ser, "vector", r.getContentP());
 				std::string h;
 				std::string h;
-				r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, req->httpVers, req->conn_clos);
+#ifdef HAVE_RAPID_JSON
+				rapidjson::StringBuffer s;
+				rapidjson::Writer<rapidjson::StringBuffer> w(s);
+				TeBkUmLpqAsyncWorld::toJson(req->vec, w);
+				r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false, s.GetSize());
+				req->sif->writeDirect(h, s.GetString(), s.GetSize());
+#else
+				JSONSerialize::serializeObjectCont(&req->vec, wcont_ser, "vector", r.getContentP());
+				r.httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false);
 				req->sif->writeDirect(h, r.getContent());
 				req->sif->writeDirect(h, r.getContent());
+#endif
 			} else {
 			} else {
 				HttpResponse r;
 				HttpResponse r;
 				std::string h;
 				std::string h;
@@ -462,6 +519,7 @@ void TeBkUmLpqAsyncRouter::updatesAsync(const char* q, int ql, AsyncUpdatesReq*
 		});
 		});
 		req->sqli->postAsync(areq);
 		req->sqli->postAsync(areq);
 	});
 	});
+#endif
 	req->sqli->postAsync(areq);
 	req->sqli->postAsync(areq);
 }
 }
 
 
@@ -491,7 +549,7 @@ void TeBkUmLpqAsyncRouter::updateCache() {
 				}
 				}
 				CacheManager::cleanImpl(cchi);
 				CacheManager::cleanImpl(cchi);
 				delete req;
 				delete req;
-				CacheManager::triggerAppInitCompletion("te-benchmark-um-pq-async");
+				CacheManager::triggerAppInitCompletion("t4");
 			} catch(const std::exception& e) {
 			} catch(const std::exception& e) {
 				CacheManager::cleanImpl(cchi);
 				CacheManager::cleanImpl(cchi);
 				delete req;
 				delete req;
@@ -528,12 +586,13 @@ void TeBkUmLpqAsyncRouter::cachedWorlds(const char* q, int ql, std::vector<TeBkU
 }
 }
 
 
 
 
-void TeBkUmLpqAsyncRouter::fortunes(SocketInterface* sif) {
+void TeBkUmLpqAsyncRouter::fortunes(BaseSocket* sif) {
 	LibpqDataSourceImpl* sqli = getDb(7);
 	LibpqDataSourceImpl* sqli = getDb(7);
 	LibpqAsyncReq* areq = sqli->getAsyncRequest();
 	LibpqAsyncReq* areq = sqli->getAsyncRequest();
 	LibpqQuery* q = areq->getQuery();
 	LibpqQuery* q = areq->getQuery();
+#ifdef HAVE_LIBPQ
 	q->withSelectQuery(FORTUNE_ALL_QUERY).withContext(sif).withCb0([](void* ctx, PGresult* res) {
 	q->withSelectQuery(FORTUNE_ALL_QUERY).withContext(sif).withCb0([](void* ctx, PGresult* res) {
-		SocketInterface* sif = (SocketInterface*)ctx;
+		BaseSocket* sif = (BaseSocket*)ctx;
 
 
 		std::list<TeBkUmLpqAsyncFortune> flst;
 		std::list<TeBkUmLpqAsyncFortune> flst;
 		int cols = PQnfields(res);
 		int cols = PQnfields(res);
@@ -565,31 +624,40 @@ void TeBkUmLpqAsyncRouter::fortunes(SocketInterface* sif) {
 		sif->writeDirect(h, out);
 		sif->writeDirect(h, out);
 		sif->unUse();
 		sif->unUse();
 	});
 	});
+#endif
 	sqli->postAsync(areq);
 	sqli->postAsync(areq);
 }
 }
 
 
-bool TeBkUmLpqAsyncRouter::route(HttpRequest* req, HttpResponse* res, SocketInterface* sif) {
+bool TeBkUmLpqAsyncRouter::route(HttpRequest* req, HttpResponse* res, BaseSocket* sif) {
 	sif->use();
 	sif->use();
-	if(StringUtil::endsWith(req->getPath(), "/plaintext")) {
+	if(StringUtil::endsWith(req->getPath(), "/plaint")) {
 		std::string h;
 		std::string h;
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_TEXT_PLAIN, (int)HELLO_WORLD.length());
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_TEXT_PLAIN, (int)HELLO_WORLD.length());
 		sif->writeDirect(h, HELLO_WORLD);
 		sif->writeDirect(h, HELLO_WORLD);
 		sif->unUse();
 		sif->unUse();
-	} else if(StringUtil::endsWith(req->getPath(), "/json")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/j")) {
 		TeBkUmLpqAsyncMessage msg;
 		TeBkUmLpqAsyncMessage msg;
 		msg.setMessage(HELLO_WORLD);
 		msg.setMessage(HELLO_WORLD);
-		JSONSerialize::serializeObject(&msg, m_ser, res->getContentP());
 		std::string h;
 		std::string h;
+#ifdef HAVE_RAPID_JSON
+		rapidjson::StringBuffer s;
+		rapidjson::Writer<rapidjson::StringBuffer> w(s);
+		msg.toJson(w);
+		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false, s.GetSize());
+		sif->writeDirect(h, s.GetString(), s.GetSize());
+#else
+		JSONSerialize::serializeObject(&msg, m_ser, res->getContentP());
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
 		sif->writeDirect(h, res->getContent());
 		sif->writeDirect(h, res->getContent());
+#endif
 		sif->unUse();
 		sif->unUse();
-	} else if(StringUtil::endsWith(req->getPath(), "/db")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/d")) {
 		/*AsyncDbReq* ar = new AsyncDbReq;
 		/*AsyncDbReq* ar = new AsyncDbReq;
 		ar->sif = sif;
 		ar->sif = sif;
 		ar->httpVers = req->getHttpVers();
 		ar->httpVers = req->getHttpVers();
 		ar->conn_clos = req->isClose();*/
 		ar->conn_clos = req->isClose();*/
 		dbAsync(sif);
 		dbAsync(sif);
-	} else if(StringUtil::endsWith(req->getPath(), "/queries")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/quer")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		/*AsyncQueriesReq* ar = new AsyncQueriesReq;
 		/*AsyncQueriesReq* ar = new AsyncQueriesReq;
@@ -597,7 +665,7 @@ bool TeBkUmLpqAsyncRouter::route(HttpRequest* req, HttpResponse* res, SocketInte
 		ar->httpVers = req->getHttpVers();
 		ar->httpVers = req->getHttpVers();
 		ar->conn_clos = req->isClose();*/
 		ar->conn_clos = req->isClose();*/
 		queriesAsync(params[0].val, params[0].val_len, sif);
 		queriesAsync(params[0].val, params[0].val_len, sif);
-	} else if(StringUtil::endsWith(req->getPath(), "/queriem")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/quem")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		/*AsyncQueriesReq* ar = new AsyncQueriesReq;
 		/*AsyncQueriesReq* ar = new AsyncQueriesReq;
@@ -605,7 +673,7 @@ bool TeBkUmLpqAsyncRouter::route(HttpRequest* req, HttpResponse* res, SocketInte
 		ar->httpVers = req->getHttpVers();
 		ar->httpVers = req->getHttpVers();
 		ar->conn_clos = req->isClose();*/
 		ar->conn_clos = req->isClose();*/
 		queriesMultiAsync(params[0].val, params[0].val_len, sif);
 		queriesMultiAsync(params[0].val, params[0].val_len, sif);
-	} else if(StringUtil::endsWith(req->getPath(), "/updatem")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/updm")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		AsyncUpdatesReq* ar = new AsyncUpdatesReq;
 		AsyncUpdatesReq* ar = new AsyncUpdatesReq;
@@ -613,14 +681,13 @@ bool TeBkUmLpqAsyncRouter::route(HttpRequest* req, HttpResponse* res, SocketInte
 		ar->httpVers = req->getHttpVers();
 		ar->httpVers = req->getHttpVers();
 		ar->conn_clos = req->isClose();
 		ar->conn_clos = req->isClose();
 		updatesMulti(params[0].val, params[0].val_len, ar);
 		updatesMulti(params[0].val, params[0].val_len, ar);
-	}
-	else if(StringUtil::endsWith(req->getPath(), "/fortunes")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/fortu")) {
 		/*AsyncFortuneReq* ar = new AsyncFortuneReq;
 		/*AsyncFortuneReq* ar = new AsyncFortuneReq;
 		ar->sif = sif;
 		ar->sif = sif;
 		ar->httpVers = req->getHttpVers();
 		ar->httpVers = req->getHttpVers();
 		ar->conn_clos = req->isClose();*/
 		ar->conn_clos = req->isClose();*/
 		fortunes(sif);
 		fortunes(sif);
-	} else if(StringUtil::endsWith(req->getPath(), "/bupdates") || StringUtil::endsWith(req->getPath(), "/updates")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/bupdt") || StringUtil::endsWith(req->getPath(), "/updt")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		AsyncUpdatesReq* ar = new AsyncUpdatesReq;
 		AsyncUpdatesReq* ar = new AsyncUpdatesReq;
@@ -628,7 +695,7 @@ bool TeBkUmLpqAsyncRouter::route(HttpRequest* req, HttpResponse* res, SocketInte
 		ar->httpVers = req->getHttpVers();
 		ar->httpVers = req->getHttpVers();
 		ar->conn_clos = req->isClose();
 		ar->conn_clos = req->isClose();
 		updatesAsyncb(params[0].val, params[0].val_len, ar);
 		updatesAsyncb(params[0].val, params[0].val_len, ar);
-	} else if(StringUtil::endsWith(req->getPath(), "/update_")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/upd_")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		AsyncUpdatesReq* ar = new AsyncUpdatesReq;
 		AsyncUpdatesReq* ar = new AsyncUpdatesReq;
@@ -636,15 +703,23 @@ bool TeBkUmLpqAsyncRouter::route(HttpRequest* req, HttpResponse* res, SocketInte
 		ar->httpVers = req->getHttpVers();
 		ar->httpVers = req->getHttpVers();
 		ar->conn_clos = req->isClose();
 		ar->conn_clos = req->isClose();
 		updatesAsync(params[0].val, params[0].val_len, ar);
 		updatesAsync(params[0].val, params[0].val_len, ar);
-	} else if(StringUtil::endsWith(req->getPath(), "/cached-worlds")) {
+	} else if(StringUtil::endsWith(req->getPath(), "/cached-wld")) {
 		struct yuarel_param params[1];
 		struct yuarel_param params[1];
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
 		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
-		std::vector<TeBkUmLpqAsyncWorld> msg;
-		cachedWorlds(params[0].val, params[0].val_len, msg);
-		JSONSerialize::serializeObjectCont(&msg, wcont_ser, "vector", res->getContentP());
+		std::vector<TeBkUmLpqAsyncWorld> vec;
+		cachedWorlds(params[0].val, params[0].val_len, vec);
 		std::string h;
 		std::string h;
-		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
+#ifdef HAVE_RAPID_JSON
+		rapidjson::StringBuffer s;
+		rapidjson::Writer<rapidjson::StringBuffer> w(s);
+		TeBkUmLpqAsyncWorld::toJson(vec, w);
+		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false, s.GetSize());
+		sif->writeDirect(h, s.GetString(), s.GetSize());
+#else
+		JSONSerialize::serializeObjectCont(&vec, wcont_ser, "vector", res->getContentP());
+		res->httpStatus(HTTPResponseStatus::Ok).generateHeadResponse(h, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, 1.1, false);
 		sif->writeDirect(h, res->getContent());
 		sif->writeDirect(h, res->getContent());
+#endif
 		sif->unUse();
 		sif->unUse();
 	} else {
 	} else {
 		std::string h;
 		std::string h;
@@ -662,10 +737,10 @@ SerCont TeBkUmLpqAsyncRouter::wcont_ser;
 
 
 TeBkUmLpqAsyncRouter::TeBkUmLpqAsyncRouter() {
 TeBkUmLpqAsyncRouter::TeBkUmLpqAsyncRouter() {
 	sqli = NULL;
 	sqli = NULL;
-	tmplFunc = TemplateUtil::getTemplateFunc("te-benchmark-um-pq-async", "tpe/fortunes.tpe");
-	m_ser = Serializer::getSerFuncForObject("te-benchmark-um-pq-async", "TeBkUmLpqAsyncMessage");
-	w_ser = Serializer::getSerFuncForObject("te-benchmark-um-pq-async", "TeBkUmLpqAsyncWorld");
-	wcont_ser = Serializer::getSerFuncForObjectCont("te-benchmark-um-pq-async", "TeBkUmLpqAsyncWorld", "std::vector");
+	tmplFunc = TemplateUtil::getTemplateFunc("t4", "tpe/fortunes.tpe");
+	m_ser = Serializer::getSerFuncForObject("t4", "TeBkUmLpqAsyncMessage");
+	w_ser = Serializer::getSerFuncForObject("t4", "TeBkUmLpqAsyncWorld");
+	wcont_ser = Serializer::getSerFuncForObjectCont("t4", "TeBkUmLpqAsyncWorld", "std::vector");
 }
 }
 
 
 TeBkUmLpqAsyncRouter::~TeBkUmLpqAsyncRouter() {
 TeBkUmLpqAsyncRouter::~TeBkUmLpqAsyncRouter() {
@@ -676,7 +751,7 @@ TeBkUmLpqAsyncRouter::~TeBkUmLpqAsyncRouter() {
 
 
 LibpqDataSourceImpl* TeBkUmLpqAsyncRouter::getDb(int max) {
 LibpqDataSourceImpl* TeBkUmLpqAsyncRouter::getDb(int max) {
 	if(sqli==NULL) {
 	if(sqli==NULL) {
-		sqli = static_cast<LibpqDataSourceImpl*>(DataSourceManager::getRawImpl("PostgreSQL-DSN", "te-benchmark-um-pq-async"));
+		sqli = static_cast<LibpqDataSourceImpl*>(DataSourceManager::getRawImpl("PostgreSQL-DSN", "t4"));
 	}
 	}
 	return sqli;
 	return sqli;
 }
 }
@@ -695,7 +770,7 @@ LibpqDataSourceImpl* TeBkUmLpqAsyncRouterPooled::getDb(int max) {
 		}
 		}
 	} else {
 	} else {
 		for (int var = 0; var < maxconns; ++var) {
 		for (int var = 0; var < maxconns; ++var) {
-			pool.push_back(static_cast<LibpqDataSourceImpl*>(DataSourceManager::getRawImpl("PostgreSQL-DSN", "te-benchmark-um-pq-async", true)));
+			pool.push_back(static_cast<LibpqDataSourceImpl*>(DataSourceManager::getRawImpl("PostgreSQL-DSN", "t4", true)));
 		}
 		}
 		inited = true;
 		inited = true;
 	}
 	}

+ 4 - 4
frameworks/C++/ffead-cpp/te-benchmark-um-pq-async/src/autotools/Makefile.am → frameworks/C++/ffead-cpp/t4/src/autotools/Makefile.am

@@ -8,10 +8,10 @@ distdir=${PACKAGE_NAME}-${PACKAGE_VERSION}-src
 fprefix=../../../../${packageIdentifier}
 fprefix=../../../../${packageIdentifier}
 prefix=${abs_builddir}
 prefix=${abs_builddir}
 
 
-lib_LTLIBRARIES = libte-benchmark-um-pq-async.la
-libte_benchmark_um_pq_async_la_SOURCES = ../TeBkUmLpqAsync.cpp
+lib_LTLIBRARIES = libt4.la
+libt4_la_SOURCES = ../TeBkUmLpqAsync.cpp
 
 
-libte_benchmark_um_pq_async_la_LDFLAGS = -no-undefined 
-libte_benchmark_um_pq_async_la_LIBADD = -L"${fprefix}/lib" -lffead-modules -lffead-framework
+libt4_la_LDFLAGS = -no-undefined 
+libt4_la_LIBADD = -L"${fprefix}/lib" -lffead-modules -lffead-framework
 
 
 #dist_noinst_SCRIPTS = autogen.sh
 #dist_noinst_SCRIPTS = autogen.sh

+ 0 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-pq-async/tpe/fortunes.tpe → frameworks/C++/ffead-cpp/t4/tpe/fortunes.tpe


+ 1 - 1
frameworks/C++/ffead-cpp/te-benchmark-um-pq-async/xmake.lua → frameworks/C++/ffead-cpp/t4/xmake.lua

@@ -2,7 +2,7 @@ add_includedirs("include/")
 
 
 local bindir = "$(projectdir)/ffead-cpp-6.0-bin"
 local bindir = "$(projectdir)/ffead-cpp-6.0-bin"
 
 
-target("te-benchmark-um-pq-async")
+target("t4")
 	set_languages("c++17")
 	set_languages("c++17")
 	add_deps("ffead-framework")
 	add_deps("ffead-framework")
 	add_options(getOptions())
 	add_options(getOptions())

+ 14 - 0
frameworks/C++/ffead-cpp/t5/CMakeLists.txt

@@ -0,0 +1,14 @@
+
+file(GLOB sources
+    "include/*.h"
+    "src/*.cpp"
+)
+
+include_directories("${CMAKE_SOURCE_DIR}/web/t5/include")
+if(BUILD_STATIC_LIBS OR EMSCRIPTEN)
+	add_library(t5 STATIC ${sources})
+else()
+	add_library(t5 ${sources})
+endif()
+set_property(TARGET t5 PROPERTY POSITION_INDEPENDENT_CODE ON)
+target_link_libraries(t5 ffead-modules ffead-framework ${HAVE_PQLIB} ${HAVE_CURLLIB} ${HAVE_SSLLIB} ${HAVE_MEMCACHEDLIB} ${HAVE_ODBCLIB} ${HAVE_MONGOCLIB} ${HAVE_BSONLIB} ${HAVE_ZLIB} ${HAVE_CRYPTOLIB})

+ 24 - 0
frameworks/C++/ffead-cpp/t5/config/application.xml

@@ -0,0 +1,24 @@
+<app router="TeBkUmLpqQwAsyncRouter">
+	<cors-config>
+		<allow-origins>*</allow-origins>
+		<allow-methods>GET, POST, HEAD, PUT, DELETE</allow-methods>
+		<allow-headers>content-type, origin</allow-headers>
+		<expose-headers>content-type, origin</expose-headers>
+		<allow-credentials>true</allow-credentials>
+		<max-age>1023</max-age>
+	</cors-config>
+	<cache-control>
+		<control ext="png,css,js,jpeg,jpg,gif" header="Cache-Control"
+			value="max-age=290304000, public" />
+		<control ext="txt,xml,json" header="Cache-Control"
+			value="max-age=172800, public, must-revalidate" />
+		<control ext="html,html" header="Cache-Control"
+			value="max-age=7200, must-revalidate" />
+		<control file="video.mov" header="Expires"
+			value="Thu, 15 Apr 2020 20:00:00 GMT" />
+		<control header="Last-Modified" remove="true" />
+	</cache-control>
+	<templates>
+		<template class="TeBkUmLpqQwAsyncRouter" file="fortunes.tpe" path="fortunes"/>
+	</templates>
+</app>

+ 15 - 0
frameworks/C++/ffead-cpp/t5/config/sdorm.xml

@@ -0,0 +1,15 @@
+<sdorm>
+	<data-source>
+		<config>
+			<nodes>
+				<node>
+					<url>host=localhost user=benchmarkdbuser password=benchmarkdbpass dbname=hello_world</url>
+				</node>
+			</nodes>
+			<pool-size>30</pool-size>
+			<name>PostgreSQL-DSN</name>
+			<type>sql-raw-pq</type>
+			<async>true</async>
+		</config>
+	</data-source>
+</sdorm>

+ 192 - 0
frameworks/C++/ffead-cpp/t5/include/TeBkUmLpqQwAsync.h

@@ -0,0 +1,192 @@
+/*
+	Copyright 2009-2020, Sumeet Chhetri
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
+/*
+ * TeBkUmLpqQwAsync.h
+ *
+ *  Created on: 03-Feb-2020
+ *      Author: sumeetc
+ */
+
+#ifndef WEB_t1_INCLUDE_TeBkUmLpqQwAsync_H_
+#define WEB_t1_INCLUDE_TeBkUmLpqQwAsync_H_
+#include "TemplateHandler.h"
+#include "vector"
+#ifndef OS_MINGW
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#endif
+#include "DataSourceManager.h"
+#include <stdlib.h>
+#include <algorithm>
+#include "CryptoHandler.h"
+#include "vector"
+#include "CastUtil.h"
+#include "CacheManager.h"
+#include <stdlib.h>
+#include "HttpRequest.h"
+#include "HttpResponse.h"
+#include "JSONSerialize.h"
+#include "string"
+#include "yuarel.h"
+#include "Router.h"
+#include <unordered_map>
+#include "ConfigurationData.h"
+
+class TeBkUmLpqQwAsyncWorld;
+
+class TeBkUmLpqQwAsyncWorld {
+	int id;
+	int randomNumber;
+public:
+	TeBkUmLpqQwAsyncWorld();
+	TeBkUmLpqQwAsyncWorld(int id);
+	TeBkUmLpqQwAsyncWorld(int id, int randomNumber);
+	virtual ~TeBkUmLpqQwAsyncWorld();
+	int getId() const;
+	void setId(int id);
+	int getRandomNumber() const;
+	void setRandomNumber(int randomNumber);
+#ifdef HAVE_RAPID_JSON
+	void toJson(rapidjson::Writer<rapidjson::StringBuffer>& w) {
+		w.StartObject();
+		w.String("id", 2);
+	    w.Int(id);
+		w.String("randomNumber", 12);
+	    w.Int(randomNumber);
+		w.EndObject();
+	}
+#endif
+#ifdef HAVE_RAPID_JSON
+	static void toJson(std::vector<TeBkUmLpqQwAsyncWorld>& vec, rapidjson::Writer<rapidjson::StringBuffer>& w) {
+		w.StartArray();
+		for(auto el: vec) {
+			el.toJson(w);
+		}
+		w.EndArray();
+	}
+#endif
+};
+
+class TeBkUmLpqQwAsyncFortune {
+	int id;
+public:
+	std::string message_i;
+	std::string_view message;
+	bool allocd;
+	TeBkUmLpqQwAsyncFortune(int id);
+	TeBkUmLpqQwAsyncFortune(int id, std::string message);
+	TeBkUmLpqQwAsyncFortune();
+	virtual ~TeBkUmLpqQwAsyncFortune();
+	int getId() const;
+	void setId(int id);
+	bool operator < (const TeBkUmLpqQwAsyncFortune& other) const;
+};
+
+class TeBkUmLpqQwAsyncMessage {
+	std::string message;
+public:
+	TeBkUmLpqQwAsyncMessage();
+	TeBkUmLpqQwAsyncMessage(std::string message);
+	virtual ~TeBkUmLpqQwAsyncMessage();
+	const std::string& getMessage() const;
+	void setMessage(const std::string& message);
+#ifdef HAVE_RAPID_JSON
+	void toJson(rapidjson::Writer<rapidjson::StringBuffer>& w) {
+		w.StartObject();
+		w.String("message", 7);
+	    w.String(message.c_str(), static_cast<rapidjson::SizeType>(message.length()));
+		w.EndObject();
+	}
+#endif
+};
+
+struct AsyncUpdatesReqWq {
+	float httpVers;
+	bool conn_clos;
+	BaseSocket* sif;
+	LibpqDataSourceImpl* sqli;
+	std::vector<TeBkUmLpqQwAsyncWorld> vec;
+};
+
+class TeBkUmLpqQwAsyncRouter : public Router {
+	static const std::string HELLO_WORLD;
+	static const std::string WORLD;
+	static const std::string WORLD_ONE_QUERY;
+	static const std::string WORLD_ALL_QUERY;
+	static const std::string FORTUNE_ALL_QUERY;
+	static int g_seed;
+
+	static TemplatePtr tmplFunc;
+
+	static Ser m_ser;
+	static Ser w_ser;
+	static SerCont wcont_ser;
+
+	static std::string& getUpdQuery(int count);
+	void dbAsync(BaseSocket* sif);
+	void queriesAsync(const char* q, int ql, BaseSocket* sif);
+	void updatesAsync(const char* q, int ql, AsyncUpdatesReqWq* req);
+	void updatesAsyncb(const char* q, int ql, AsyncUpdatesReqWq* req);
+	void fortunes(BaseSocket* sif);
+
+	void queriesMultiAsync(const char*, int, BaseSocket* sif);
+	void updatesMulti(const char*, int, AsyncUpdatesReqWq*);
+
+	static std::unordered_map<int, std::string> _qC;
+	LibpqDataSourceImpl* sqli;
+protected:
+	virtual LibpqDataSourceImpl* getDb(int max = 0);
+public:
+	TeBkUmLpqQwAsyncRouter& operator=(const TeBkUmLpqQwAsyncRouter& a) {
+		return *this;
+	}
+	TeBkUmLpqQwAsyncRouter(const TeBkUmLpqQwAsyncRouter& a) {
+		sqli = NULL;
+	}
+	TeBkUmLpqQwAsyncRouter();
+	virtual ~TeBkUmLpqQwAsyncRouter();
+	/* These functions are here just for test purposes and serve no purpose START */
+	static void temp() {
+	}
+	virtual void temp1() const {
+	}
+	std::map<std::string, std::string> l(std::map<std::string, std::string> a1, std::map<std::string, std::string> a2) {
+		return std::map<std::string, std::string>();
+	}
+	/* END */
+	bool route(HttpRequest* req, HttpResponse* res, BaseSocket* sif);
+};
+
+class TeBkUmLpqQwAsyncRouterPooled : public TeBkUmLpqQwAsyncRouter {
+	LibpqDataSourceImpl* getDb(int max = 0);
+	std::atomic<int> opt;
+	bool inited;
+	int maxconns;
+	std::vector<LibpqDataSourceImpl*> pool;
+public:
+	TeBkUmLpqQwAsyncRouterPooled& operator=(const TeBkUmLpqQwAsyncRouterPooled& a) {
+		return *this;
+	}
+	TeBkUmLpqQwAsyncRouterPooled(const TeBkUmLpqQwAsyncRouterPooled& a) {
+		this->opt = 0;
+		this->inited = false;
+		this->maxconns = 7;
+	}
+	TeBkUmLpqQwAsyncRouterPooled();
+	virtual ~TeBkUmLpqQwAsyncRouterPooled();
+};
+
+#endif /* WEB_t1_INCLUDE_TeBkUmLpqQwAsync_H_ */

+ 15 - 0
frameworks/C++/ffead-cpp/t5/meson.build

@@ -0,0 +1,15 @@
+
+module_includes = ['/usr/local/include','../../src/modules/common','../../src/modules/cache','../../src/modules/cache/memory','../../src/modules/cache/redis',
+	'../../src/modules/cache/memcached','../../src/modules/client-util','../../src/modules/http','../../src/modules/http/http11','../../src/modules/http/http20',
+	'../../src/modules/ioc','../../src/modules/jobs','../../src/modules/reflection','../../src/modules/sdorm','../../src/modules/sdorm/sql','../../src/modules/sdorm/sql/libpq',
+	'../../src/modules/client-util/ssl','../../src/modules/sdorm/mongo','../../src/modules/sdorm/mongo/raw','../../src/modules/search','../../src/modules/serialization',
+	'../../src/modules/serialization/xml','../../src/modules/serialization/json','../../src/modules/server-util','../../src/modules/ssl','../../src/modules/threads',
+	'../../src/framework','include']
+module_includes += global_includes
+module_libs = [global_libs]
+
+c = run_command(meson_grabber, 'src/')
+module_sources = c.stdout().strip().split('\n')
+
+shared_library('t5', module_sources, include_directories: module_includes, dependencies: module_libs, link_with: [libffeadmodules, libffeadframework],
+	install: true, install_dir: bin_dir+'/lib')

Some files were not shown because too many files changed in this diff