transactd 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. checksums.yaml +4 -4
  2. data/BUILD_UNIX-JA +46 -67
  3. data/BUILD_WIN-JA +106 -63
  4. data/CMakeLists.txt +40 -15
  5. data/README +219 -75
  6. data/README-JA +207 -76
  7. data/README_ORMSRCGEN +118 -0
  8. data/README_ORMSRCGEN-JA +115 -0
  9. data/bin/common/tdclc_32_2_0.dll +0 -0
  10. data/bin/common/tdclc_64_2_0.dll +0 -0
  11. data/build/common/check_for_link_iconv.cmake +18 -14
  12. data/build/common/create_symlink.cmake.in +25 -0
  13. data/build/common/get_boost_libs.cmake +23 -23
  14. data/build/common/options.cmake +0 -66
  15. data/build/common/smart_install.cmake +3 -3
  16. data/build/common/transactd.rc.in +15 -5
  17. data/build/common/transactd_cl_common.cmake +37 -18
  18. data/build/common/transactd_cl_output.cmake +55 -13
  19. data/build/common/transactd_common.cmake +108 -31
  20. data/build/swig/php/generate.cmake.in +15 -17
  21. data/build/swig/php/generate.cmd.in +15 -9
  22. data/build/swig/php/php.swg +124 -82
  23. data/build/swig/php/transactd.no_yield.php +4494 -0
  24. data/build/swig/php/transactd.no_yield.php.git.patch +685 -0
  25. data/build/swig/php/transactd.no_yield.php.patch +685 -0
  26. data/build/swig/php/transactd.yield.php +4461 -0
  27. data/build/swig/php/transactd.yield.php.git.patch +652 -0
  28. data/build/swig/php/transactd.yield.php.patch +652 -0
  29. data/build/swig/referencecounter.h +79 -0
  30. data/build/swig/ruby/ruby.swg +226 -76
  31. data/build/swig/ruby/threadBlockRegionWrapper.h +71 -0
  32. data/build/swig/ruby/without_gvl.swg +87 -0
  33. data/build/swig/tdcl.i +659 -170
  34. data/build/swig/validatablepointer.h +91 -0
  35. data/build/tdclc/CMakeLists.txt +49 -34
  36. data/build/tdclc/{tdclc_64.cbproj → tdclc.cbproj} +65 -20
  37. data/build/tdclc/tdclc.rc +0 -0
  38. data/build/tdclcpp/CMakeLists.txt +84 -20
  39. data/build/tdclcpp/tdclcpp.rc +0 -0
  40. data/build/tdclcpp/{tdclcpp_bcb_64.cbproj → tdclcpp_bc.cbproj} +168 -44
  41. data/build/tdclrb/CMakeLists.txt +84 -66
  42. data/build/tdclrb/bldgem/extconf.rb +28 -3
  43. data/build/tdclrb/gem/helper.rb +11 -1
  44. data/build/tdclrb/gem_output.cmake +20 -16
  45. data/index_ja.html +15 -0
  46. data/source/bzs/db/IBlobBuffer.h +15 -17
  47. data/source/bzs/db/blobBuffer.h +186 -140
  48. data/source/bzs/db/blobStructs.h +37 -37
  49. data/source/bzs/db/engine/mysql/IReadRecords.h +34 -34
  50. data/source/bzs/db/engine/mysql/bookmark.h +150 -147
  51. data/source/bzs/db/engine/mysql/database.cpp +1721 -1526
  52. data/source/bzs/db/engine/mysql/database.h +608 -370
  53. data/source/bzs/db/engine/mysql/dbManager.cpp +213 -201
  54. data/source/bzs/db/engine/mysql/dbManager.h +115 -104
  55. data/source/bzs/db/engine/mysql/errorMessage.cpp +49 -50
  56. data/source/bzs/db/engine/mysql/errorMessage.h +25 -26
  57. data/source/bzs/db/engine/mysql/fieldAccess.h +55 -61
  58. data/source/bzs/db/engine/mysql/mydebuglog.cpp +326 -292
  59. data/source/bzs/db/engine/mysql/mydebuglog.h +63 -55
  60. data/source/bzs/db/engine/mysql/mysqlInternal.h +182 -125
  61. data/source/bzs/db/engine/mysql/mysqlThd.cpp +121 -121
  62. data/source/bzs/db/engine/mysql/mysqlThd.h +20 -20
  63. data/source/bzs/db/engine/mysql/percentageKey.h +241 -228
  64. data/source/bzs/db/protocol/ICommandExecuter.h +18 -17
  65. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +543 -514
  66. data/source/bzs/db/protocol/hs/hsCommandExecuter.h +155 -158
  67. data/source/bzs/db/protocol/tdap/btrDate.cpp +213 -180
  68. data/source/bzs/db/protocol/tdap/btrDate.h +39 -37
  69. data/source/bzs/db/protocol/tdap/client/activeTable.cpp +173 -0
  70. data/source/bzs/db/protocol/tdap/client/activeTable.h +165 -0
  71. data/source/bzs/db/protocol/tdap/client/activeTableImple.h +370 -0
  72. data/source/bzs/db/protocol/tdap/client/bulkInsert.h +13 -23
  73. data/source/bzs/db/protocol/tdap/client/client.cpp +81 -68
  74. data/source/bzs/db/protocol/tdap/client/client.h +361 -320
  75. data/source/bzs/db/protocol/tdap/client/connMgr.cpp +17 -22
  76. data/source/bzs/db/protocol/tdap/client/connMgr.h +17 -19
  77. data/source/bzs/db/protocol/tdap/client/connectionPool.cpp +243 -0
  78. data/source/bzs/db/protocol/tdap/client/connectionPool.h +109 -0
  79. data/source/bzs/db/protocol/tdap/client/database.cpp +327 -219
  80. data/source/bzs/db/protocol/tdap/client/database.h +141 -118
  81. data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +60 -62
  82. data/source/bzs/db/protocol/tdap/client/databaseManager.h +255 -0
  83. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +315 -202
  84. data/source/bzs/db/protocol/tdap/client/dbDef.h +40 -32
  85. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +390 -371
  86. data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +148 -56
  87. data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +149 -57
  88. data/source/bzs/db/protocol/tdap/client/export.h +35 -0
  89. data/source/bzs/db/protocol/tdap/client/field.cpp +1985 -0
  90. data/source/bzs/db/protocol/tdap/client/field.h +393 -0
  91. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +14 -14
  92. data/source/bzs/db/protocol/tdap/client/fieldDDF.h +11 -14
  93. data/source/bzs/db/protocol/tdap/client/fieldNameAlias.cpp +123 -0
  94. data/source/bzs/db/protocol/tdap/client/fieldNameAlias.h +58 -0
  95. data/source/bzs/db/protocol/tdap/client/fields.h +178 -0
  96. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +13 -16
  97. data/source/bzs/db/protocol/tdap/client/fileDDF.h +11 -17
  98. data/source/bzs/db/protocol/tdap/client/filter.h +423 -259
  99. data/source/bzs/db/protocol/tdap/client/groupComp.h +117 -0
  100. data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +818 -0
  101. data/source/bzs/db/protocol/tdap/client/groupQuery.h +281 -0
  102. data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +14 -17
  103. data/source/bzs/db/protocol/tdap/client/indexDDF.h +11 -14
  104. data/source/bzs/db/protocol/tdap/client/memRecord.cpp +231 -0
  105. data/source/bzs/db/protocol/tdap/client/memRecord.h +145 -0
  106. data/source/bzs/db/protocol/tdap/client/memRecordset.cpp +448 -0
  107. data/source/bzs/db/protocol/tdap/client/memRecordset.h +159 -0
  108. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +300 -173
  109. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +53 -36
  110. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +171 -128
  111. data/source/bzs/db/protocol/tdap/client/nsTable.h +121 -87
  112. data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +173 -0
  113. data/source/bzs/db/protocol/tdap/client/recordset.cpp +209 -0
  114. data/source/bzs/db/protocol/tdap/client/recordset.h +86 -0
  115. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +596 -0
  116. data/source/bzs/db/protocol/tdap/client/request.h +227 -170
  117. data/source/bzs/db/protocol/tdap/client/serializer.cpp +1288 -0
  118. data/source/bzs/db/protocol/tdap/client/serializer.h +295 -0
  119. data/source/bzs/db/protocol/tdap/client/sharedData.cpp +9 -12
  120. data/source/bzs/db/protocol/tdap/client/sharedData.h +18 -16
  121. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +494 -473
  122. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +51 -53
  123. data/source/bzs/db/protocol/tdap/client/stringConverter.h +214 -148
  124. data/source/bzs/db/protocol/tdap/client/table.cpp +929 -1665
  125. data/source/bzs/db/protocol/tdap/client/table.h +413 -87
  126. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +642 -534
  127. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +25 -40
  128. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +11 -15
  129. data/source/bzs/db/protocol/tdap/client/trdormapi.h +378 -437
  130. data/source/bzs/db/protocol/tdap/client/trnsctcl.def +1 -1
  131. data/source/bzs/db/protocol/tdap/fieldComp.h +127 -0
  132. data/source/bzs/db/protocol/tdap/myDateTime.cpp +352 -345
  133. data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +75 -78
  134. data/source/bzs/db/protocol/tdap/mysql/characterset.h +18 -19
  135. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +216 -199
  136. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +23 -14
  137. data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +354 -314
  138. data/source/bzs/db/protocol/tdap/mysql/debuglog.h +57 -47
  139. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +905 -739
  140. data/source/bzs/db/protocol/tdap/mysql/request.h +152 -159
  141. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1044 -879
  142. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +87 -81
  143. data/source/bzs/db/protocol/tdap/tdapRequest.h +162 -130
  144. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +368 -166
  145. data/source/bzs/db/protocol/tdap/tdapSchema.h +702 -566
  146. data/source/bzs/db/protocol/tdap/tdapcapi.h +387 -353
  147. data/source/bzs/db/transactd/appBuilderImple.h +21 -20
  148. data/source/bzs/db/transactd/appModule.cpp +350 -98
  149. data/source/bzs/db/transactd/appModule.h +31 -37
  150. data/source/bzs/db/transactd/connManager.cpp +138 -135
  151. data/source/bzs/db/transactd/connManager.h +28 -21
  152. data/source/bzs/db/transactd/connectionRecord.h +39 -39
  153. data/source/bzs/db/transactd/transactd.cpp +217 -203
  154. data/source/bzs/env/boost_bcb_link.h +131 -0
  155. data/source/bzs/env/compiler.h +136 -79
  156. data/source/bzs/env/crosscompile.cpp +57 -57
  157. data/source/bzs/env/crosscompile.h +130 -115
  158. data/source/bzs/env/fileopen.h +7 -8
  159. data/source/bzs/env/mbcswchrLinux.cpp +4 -9
  160. data/source/bzs/env/mbcswchrLinux.h +37 -34
  161. data/source/bzs/env/tcharMinGW.h +59 -0
  162. data/source/bzs/env/tstring.h +90 -95
  163. data/source/bzs/example/changeSchema.cpp +22 -23
  164. data/source/bzs/example/changeSchema_c.cpp +22 -24
  165. data/source/bzs/example/connection_pool_c.cpp +49 -104
  166. data/source/bzs/example/createDatabase.cpp +40 -47
  167. data/source/bzs/example/createDatabase_c.cpp +38 -43
  168. data/source/bzs/example/deleteRecords.cpp +10 -15
  169. data/source/bzs/example/deleteRecords_c.cpp +10 -14
  170. data/source/bzs/example/dropDatabase.cpp +3 -9
  171. data/source/bzs/example/dropDatabase_c.cpp +5 -6
  172. data/source/bzs/example/insertRecords.cpp +37 -29
  173. data/source/bzs/example/insertRecords_c.cpp +19 -25
  174. data/source/bzs/example/ormap_c.cpp +621 -0
  175. data/source/bzs/example/queryData.cpp +371 -0
  176. data/source/bzs/example/queryData.h +16 -0
  177. data/source/bzs/example/query_c.cpp +109 -0
  178. data/source/bzs/example/readRecords.cpp +27 -27
  179. data/source/bzs/example/readRecords_c.cpp +25 -23
  180. data/source/bzs/example/updateRecords.cpp +16 -21
  181. data/source/bzs/example/updateRecords_c.cpp +8 -12
  182. data/source/bzs/example/update_with_transaction.cpp +21 -24
  183. data/source/bzs/example/update_with_transaction_c.cpp +12 -15
  184. data/source/bzs/example/useORMRecord.cpp +177 -0
  185. data/source/bzs/netsvc/client/tcpClient.cpp +167 -156
  186. data/source/bzs/netsvc/client/tcpClient.h +541 -489
  187. data/source/bzs/netsvc/server/IAppModule.h +119 -32
  188. data/source/bzs/netsvc/server/iserver.h +21 -23
  189. data/source/bzs/netsvc/server/serverCpt.cpp +421 -391
  190. data/source/bzs/netsvc/server/serverCpt.h +41 -43
  191. data/source/bzs/netsvc/server/serverPipe.cpp +580 -565
  192. data/source/bzs/netsvc/server/serverPipe.h +44 -45
  193. data/source/bzs/netsvc/server/serverTpool.cpp +333 -303
  194. data/source/bzs/netsvc/server/serverTpool.h +38 -43
  195. data/source/bzs/rtl/benchmark.cpp +91 -31
  196. data/source/bzs/rtl/benchmark.h +76 -22
  197. data/source/bzs/rtl/datetime.cpp +231 -233
  198. data/source/bzs/rtl/datetime.h +16 -16
  199. data/source/bzs/rtl/debuglog.cpp +48 -51
  200. data/source/bzs/rtl/debuglog.h +55 -44
  201. data/source/bzs/rtl/exception.h +55 -48
  202. data/source/bzs/rtl/stl_uty.cpp +27 -28
  203. data/source/bzs/rtl/stl_uty.h +28 -29
  204. data/source/bzs/rtl/stringBuffers.cpp +8 -6
  205. data/source/bzs/rtl/stringBuffers.h +16 -9
  206. data/source/bzs/rtl/strtrim.cpp +90 -91
  207. data/source/bzs/rtl/strtrim.h +14 -16
  208. data/source/bzs/test/tdclatl/bench_query_atl.js +647 -0
  209. data/source/bzs/test/tdclatl/bench_tdclatl.js +303 -303
  210. data/source/bzs/test/tdclatl/test_query_atl.js +669 -0
  211. data/source/bzs/test/tdclphp/bench.php +357 -0
  212. data/source/bzs/test/tdclphp/transactd_Test.php +907 -303
  213. data/source/bzs/test/tdclphp/transactd_blob_Test.php +21 -49
  214. data/source/bzs/test/tdclphp/transactd_datetime_Test.php +41 -75
  215. data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +23 -37
  216. data/source/bzs/test/tdclphp/transactd_pool_Test.php +120 -0
  217. data/source/bzs/test/tdclrb/bench_tdclcpp.rb +4 -6
  218. data/source/bzs/test/tdclrb/prepare.rb +15 -12
  219. data/source/bzs/test/tdclrb/transactd_blob_spec.rb +29 -32
  220. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -29
  221. data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +18 -19
  222. data/source/bzs/test/tdclrb/transactd_pool_spec.rb +107 -0
  223. data/source/bzs/test/tdclrb/transactd_spec.rb +734 -142
  224. data/source/bzs/test/transactdBench/query_bench.cpp +156 -0
  225. data/source/bzs/test/transactdBench/scaling_bench.cpp +265 -0
  226. data/source/bzs/test/transactdBench/transactdBench.cpp +107 -83
  227. data/source/bzs/test/transactdBench/transactdBench2.cpp +122 -83
  228. data/source/bzs/test/transactdBench/workerBase.cpp +5 -0
  229. data/source/bzs/test/transactdBench/workerBase.h +88 -0
  230. data/source/bzs/test/transactdBench/workerMySQLImple.h +333 -0
  231. data/source/bzs/test/transactdBench/workerTransactdImple.h +201 -0
  232. data/source/bzs/test/trdclengn/test_blob.cpp +121 -73
  233. data/source/bzs/test/trdclengn/test_trdclengn.cpp +1244 -426
  234. data/source/global/ormsrcgen/confParam.h +80 -0
  235. data/source/global/ormsrcgen/fieldName.cpp +77 -0
  236. data/source/global/ormsrcgen/fieldName.h +43 -0
  237. data/source/global/ormsrcgen/main.cpp +196 -0
  238. data/source/global/ormsrcgen/srcgen.cpp +763 -0
  239. data/source/global/ormsrcgen/srcgen.h +72 -0
  240. data/source/global/ormsrcgen/template/fieldNameList_sample.txt +2 -0
  241. data/source/global/ormsrcgen/template/ormDataClass_template.cpp +48 -0
  242. data/source/global/ormsrcgen/template/ormDataClass_template.h +34 -0
  243. data/source/global/ormsrcgen/template/ormMapClass_template.cpp +51 -0
  244. data/source/global/ormsrcgen/template/ormMapClass_template.h +62 -0
  245. data/source/global/ormsrcgen/template/template.cnf +38 -0
  246. data/source/global/querystmts/querystmts.cpp +237 -0
  247. data/source/global/tdclatl/ConnectParams.cpp +77 -0
  248. data/source/global/tdclatl/ConnectParams.h +70 -0
  249. data/source/global/tdclatl/Database.cpp +132 -128
  250. data/source/global/tdclatl/Database.h +60 -49
  251. data/source/global/tdclatl/DbDef.cpp +68 -64
  252. data/source/global/tdclatl/DbDef.h +36 -36
  253. data/source/global/tdclatl/Field.cpp +12 -17
  254. data/source/global/tdclatl/Field.h +15 -12
  255. data/source/global/tdclatl/FieldDef.cpp +75 -36
  256. data/source/global/tdclatl/FieldDef.h +38 -19
  257. data/source/global/tdclatl/FieldDefs.cpp +74 -0
  258. data/source/global/tdclatl/FieldDefs.h +56 -0
  259. data/source/global/tdclatl/FieldNames.cpp +99 -0
  260. data/source/global/tdclatl/FieldNames.h +66 -0
  261. data/source/global/tdclatl/Flags.cpp +75 -37
  262. data/source/global/tdclatl/Flags.h +13 -12
  263. data/source/global/tdclatl/GroupQuery.cpp +119 -0
  264. data/source/global/tdclatl/GroupQuery.h +65 -0
  265. data/source/global/tdclatl/KeyDef.cpp +15 -14
  266. data/source/global/tdclatl/KeyDef.h +20 -17
  267. data/source/global/tdclatl/KeySegment.cpp +13 -12
  268. data/source/global/tdclatl/PooledDbManager.cpp +223 -0
  269. data/source/global/tdclatl/PooledDbManager.h +76 -0
  270. data/source/global/tdclatl/QueryBase.cpp +206 -127
  271. data/source/global/tdclatl/QueryBase.h +55 -59
  272. data/source/global/tdclatl/Record.cpp +214 -0
  273. data/source/global/tdclatl/Record.h +96 -0
  274. data/source/global/tdclatl/Recordset.cpp +278 -0
  275. data/source/global/tdclatl/Recordset.h +83 -0
  276. data/source/global/tdclatl/RecordsetQuery.cpp +118 -0
  277. data/source/global/tdclatl/RecordsetQuery.h +126 -0
  278. data/source/global/tdclatl/Table.cpp +57 -60
  279. data/source/global/tdclatl/Table.h +32 -29
  280. data/source/global/tdclatl/TableDef.cpp +63 -62
  281. data/source/global/tdclatl/TableDef.h +20 -22
  282. data/source/global/tdclatl/TdVersion.cpp +3 -3
  283. data/source/global/tdclatl/TdVersion.h +15 -11
  284. data/source/global/tdclatl/_IDatabaseEvents_CP.h +99 -92
  285. data/source/global/tdclatl/activeTable.cpp +355 -0
  286. data/source/global/tdclatl/activeTable.h +79 -0
  287. data/source/global/tdclatl/dllmain.cpp +4 -3
  288. data/source/global/tdclatl/dllmain.h +7 -6
  289. data/source/global/tdclatl/keySegment.h +22 -18
  290. data/source/global/tdclatl/resource.h +0 -0
  291. data/source/global/tdclatl/stdafx.h +6 -4
  292. data/source/global/tdclatl/targetver.h +0 -1
  293. data/source/global/tdclatl/tdclatl.cpp +10 -5
  294. data/source/global/tdclatl/tdclatl.idl +530 -14
  295. data/source/linux/charsetConvert.h +78 -79
  296. data/source/linux/linuxTypes.h +9 -12
  297. data/source/linux/tchar.h +168 -166
  298. data/transactd.gemspec +24 -16
  299. metadata +98 -12
  300. data/bin/common/tdclc_32_1_2.dll +0 -0
  301. data/bin/common/tdclc_64_1_2.dll +0 -0
  302. data/build/tdclc/tdclc_32.cbproj +0 -173
  303. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +0 -232
  304. data/build/tdclrb/GEM_VERSION +0 -3
  305. data/source/bzs/db/protocol/tdap/client/filter.cpp +0 -43
  306. data/source/bzs/example/useORM.cpp +0 -585
@@ -1,3 +1,5 @@
1
+ #ifndef BZS_NETSVC_SERVER_TPOOLSERVER_H
2
+ #define BZS_NETSVC_SERVER_TPOOLSERVER_H
1
3
  /*=================================================================
2
4
  Copyright (C) 2012 2013 BizStation Corp All rights reserved.
3
5
 
@@ -12,13 +14,10 @@
12
14
  GNU General Public License for more details.
13
15
 
14
16
  You should have received a copy of the GNU General Public License
15
- along with this program; if not, write to the Free Software
16
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
+ along with this program; if not, write to the Free Software
18
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
19
  02111-1307, USA.
18
20
  =================================================================*/
19
- #ifndef BZS_NETSVC_SERVER_TPOOLSERVER_H
20
- #define BZS_NETSVC_SERVER_TPOOLSERVER_H
21
-
22
21
  #include "iserver.h"
23
22
  #include <string>
24
23
  #include <vector>
@@ -26,59 +25,55 @@
26
25
  #include <boost/shared_ptr.hpp>
27
26
  #include <boost/asio.hpp>
28
27
 
29
-
30
-
31
28
  #define SERVER_SYNC_THREAD_PER_IOS
32
29
 
33
- namespace boost{class condition_variable;}
34
- namespace bzs
30
+ namespace boost
31
+ {
32
+ class condition_variable;
33
+ }
34
+ namespace bzs
35
35
  {
36
- namespace netsvc
36
+ namespace netsvc
37
37
  {
38
- namespace server
38
+ namespace server
39
39
  {
40
40
  class IAppModuleBuilder;
41
41
 
42
-
43
42
  namespace tpool
44
43
  {
45
44
  extern unsigned int g_connections;
46
45
 
47
-
48
46
  class connection;
49
47
  class listener;
50
- class server: public iserver, private boost::noncopyable
48
+ class server : public iserver, private boost::noncopyable
51
49
  {
52
-
53
- std::vector<boost::shared_ptr<listener> > m_listeners;
54
- bool m_stopping;
55
-
56
- boost::asio::io_service m_ios;
57
- boost::asio::deadline_timer m_timer;
58
- const char* m_hostCheckName;
59
- void startTimer();
60
- void doClose();
61
- void onCheckInternlShutdown(const boost::system::error_code& e);
62
- void run();
50
+ std::vector<boost::shared_ptr<listener> > m_listeners;
51
+ boost::asio::io_service m_ios;
52
+ boost::asio::deadline_timer m_timer;
53
+ const char* m_hostCheckName;
54
+ bool m_stopping;
55
+ void startTimer();
56
+ void doClose();
57
+ void onCheckInternlShutdown(const boost::system::error_code& e);
58
+ void run();
59
+
63
60
  public:
64
- explicit server(unsigned int thread_pool_size, const char* hostCheckName);
65
- ~server();
66
- void start();
67
- void stop();
68
- static unsigned int m_threadPoolSize;
69
- void registerErrorHandler(inotifyHandler* eh){erh = eh;};
70
- void addApplication(boost::shared_ptr<IAppModuleBuilder> app
71
- , const std::string& address, const std::string& port);
72
- boost::asio::io_service& ios(){return m_ios;}
73
- const char* hostCheckName(){return m_hostCheckName;};
74
- static inotifyHandler* erh;
75
-
61
+ explicit server(unsigned int thread_pool_size, const char* hostCheckName);
62
+ ~server();
63
+ void start();
64
+ void stop();
65
+ static unsigned int m_threadPoolSize;
66
+ void registerErrorHandler(inotifyHandler* eh) { erh = eh; };
67
+ void addApplication(boost::shared_ptr<IAppModuleBuilder> app,
68
+ const std::string& address, const std::string& port);
69
+ boost::asio::io_service& ios() { return m_ios; }
70
+ const char* hostCheckName() { return m_hostCheckName; };
71
+ static inotifyHandler* erh;
76
72
  };
77
73
 
78
- }//namesapce tpool
79
- }//namespace sever
80
- }//namespace netsvc
81
- }//namespace bzs
82
-
83
- #endif //BZS_NETSVC_SERVER_TPOOLSERVER_H
74
+ } // namesapce tpool
75
+ } // namespace sever
76
+ } // namespace netsvc
77
+ } // namespace bzs
84
78
 
79
+ #endif // BZS_NETSVC_SERVER_TPOOLSERVER_H
@@ -12,8 +12,8 @@
12
12
  GNU General Public License for more details.
13
13
 
14
14
  You should have received a copy of the GNU General Public License
15
- along with this program; if not, write to the Free Software
16
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
17
  02111-1307, USA.
18
18
  =================================================================*/
19
19
 
@@ -25,6 +25,14 @@
25
25
  #define BOOST_ERROR_CODE_HEADER_ONLY
26
26
  #define BOOST_CHRONO_INLINED
27
27
 
28
+ #ifdef __BCPLUSPLUS__
29
+ #define BZS_LINK_BOOST_SYSTEM
30
+ #ifdef _WIN64
31
+ #define BZS_LINK_BOOST_TIMER
32
+ #define BZS_LINK_BOOST_CHRONO
33
+ #endif
34
+ #include <bzs/env/boost_bcb_link.h>
35
+ #endif
28
36
 
29
37
  #pragma package(smart_init)
30
38
 
@@ -35,29 +43,52 @@ namespace rtl
35
43
 
36
44
  boost_timer benchmark::t;
37
45
  #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
38
- boost_timer::time_point benchmark::m_start;
46
+ boost_timer::time_point benchmark::m_start;
39
47
  #endif
40
48
  void benchmark::showTimeSec(bool result, const char* name)
41
49
  {
42
50
  if (result == true)
43
- {
44
- #ifdef BOOST_CPUTIMER_ENABLE
45
- boost::timer::cpu_times elapsed = t.elapsed();
46
- printf("%d msec %s\n", (int)(elapsed.wall/1000000), name);
51
+ {
52
+ #ifdef BOOST_CPUTIMER_ENABLE
53
+ boost::timer::cpu_times elapsed = t.elapsed();
54
+ printf("%d msec %s\n", (int)(elapsed.wall / 1000000), name);
47
55
  printf("%s\r\n", boost::timer::format(elapsed).c_str());
48
- #else
49
- #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
50
- boost_timer::time_point p = boost_timer::now();
51
- boost::chrono::nanoseconds ns = p - m_start;
52
- printf("%d msec %s\n", (int)(ns.count()/1000000) , name);
53
- #else
54
- printf("%d msec %s\n", (int)(benchmark::t.elapsed()*1000), name);
55
- #endif
56
- #endif
57
- }
58
- else
56
+ #else
57
+ #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
58
+ boost_timer::time_point p = boost_timer::now();
59
+ boost::chrono::nanoseconds ns = p - m_start;
60
+ printf("%d msec %s\n", (int)(ns.count() / 1000000), name);
61
+ #else
62
+ printf("%d msec %s\n", (int)(benchmark::t.elapsed() * 1000), name);
63
+ #endif
64
+ #endif
65
+ }
66
+ else
59
67
  printf("Erorr %s\n", name);
60
68
  }
69
+
70
+ int benchmark::stop()
71
+ {
72
+ #ifdef BOOST_CPUTIMER_ENABLE
73
+ boost::timer::cpu_times elapsed = t.elapsed();
74
+ return (int)(elapsed.wall / 1000000);
75
+ #else
76
+ #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
77
+ boost_timer::time_point p = boost_timer::now();
78
+ boost::chrono::nanoseconds ns = p - m_start;
79
+ return (int)(ns.count()/1000000;
80
+ #else
81
+ return (int)(t.elapsed() * 1000);
82
+ #endif
83
+ #endif
84
+ }
85
+
86
+ void benchmark::showTimes(int result, const char* name)
87
+ {
88
+ printf("------------------------------\n");
89
+ printf("%s%.4f(sec)\n", name, ((double)result) / 1000);
90
+ }
91
+
61
92
  bool benchmark::report(boost::function<bool()> func, const char* name)
62
93
  {
63
94
  start();
@@ -69,28 +100,57 @@ bool benchmark::report(boost::function<bool()> func, const char* name)
69
100
 
70
101
  void benchmark::report2(boost::function<void()> func, const char* name)
71
102
  {
72
-
103
+
73
104
  start();
74
105
  func();
75
106
  showTimeSec(1, name);
76
-
77
107
  }
78
108
 
79
109
  void benchmark::start()
80
110
  {
81
-
82
- #ifdef BOOST_CPUTIMER_ENABLE
111
+
112
+ #ifdef BOOST_CPUTIMER_ENABLE
83
113
  t.stop();
84
114
  t.start();
85
- #else
86
- #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
87
- m_start = boost_timer::now();
88
- #else
89
- t.restart();
90
- #endif
91
- #endif
115
+ #else
116
+ #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
117
+ m_start = boost_timer::now();
118
+ #else
119
+ t.restart();
120
+ #endif
121
+ #endif
92
122
  }
93
123
 
124
+ void benchmarkMt::start()
125
+ {
126
+
127
+ #ifdef BOOST_CPUTIMER_ENABLE
128
+ t.stop();
129
+ t.start();
130
+ #else
131
+ #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
132
+ m_start = boost_timer::now();
133
+ #else
134
+ t.restart();
135
+ #endif
136
+ #endif
137
+ }
138
+
139
+ int benchmarkMt::end()
140
+ {
141
+ #ifdef BOOST_CPUTIMER_ENABLE
142
+ boost::timer::cpu_times elapsed = t.elapsed();
143
+ return (int)(elapsed.wall / 1000);
144
+ #else
145
+ #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
146
+ boost_timer::time_point p = boost_timer::now();
147
+ boost::chrono::nanoseconds ns = p - m_start;
148
+ return (int)(ns.count()/1000;
149
+ #else
150
+ return (int)(t.elapsed() * 1000000);
151
+ #endif
152
+ #endif
153
+ }
94
154
 
95
- }//namespace rtl
96
- }//namespace bzs
155
+ } // namespace rtl
156
+ } // namespace bzs
@@ -1,5 +1,5 @@
1
- #ifndef benchmarkH
2
- #define benchmarkH
1
+ #ifndef BZS_RTL_BOOKMARK_H
2
+ #define BZS_RTL_BOOKMARK_H
3
3
  /*=================================================================
4
4
  Copyright (C) 2013 BizStation Corp All rights reserved.
5
5
 
@@ -14,8 +14,8 @@
14
14
  GNU General Public License for more details.
15
15
 
16
16
  You should have received a copy of the GNU General Public License
17
- along with this program; if not, write to the Free Software
18
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
+ along with this program; if not, write to the Free Software
18
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
19
  02111-1307, USA.
20
20
  =================================================================*/
21
21
  #include <boost/function.hpp>
@@ -24,20 +24,60 @@
24
24
  //#define BOOST_HIGH_RESOL_TIMER_ENABLE
25
25
 
26
26
  #if BOOST_VERSION > 104801
27
-
28
- #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
29
- #include <boost/chrono/system_clocks.hpp>
30
- #include <boost/chrono.hpp>
31
- typedef boost::chrono::high_resolution_clock boost_timer;
32
- #else
33
- #define BOOST_CPUTIMER_ENABLE
34
- #include <boost/timer/timer.hpp>
35
- typedef boost::timer::cpu_timer boost_timer;
36
- #endif
37
27
 
28
+ #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
29
+ #include <boost/chrono/system_clocks.hpp>
30
+ #include <boost/chrono.hpp>
31
+ typedef boost::chrono::high_resolution_clock boost_timer;
38
32
  #else
39
- #include <boost/timer.hpp>
40
- typedef boost::timer boost_timer;
33
+ #define BOOST_CPUTIMER_ENABLE
34
+ #include <boost/timer/timer.hpp>
35
+ typedef boost::timer::cpu_timer boost_timer;
36
+ #endif
37
+
38
+ #else
39
+ #ifdef __APPLE__
40
+ #include <mach/mach_time.h>
41
+ #include <limits>
42
+ namespace boost
43
+ {
44
+ #define NANOSEC 1000000000
45
+ class timer
46
+ {
47
+ public:
48
+ timer()
49
+ {
50
+ mach_timebase_info(&_base);
51
+ _start_time = mach_absolute_time();
52
+ }
53
+ void restart() { _start_time = mach_absolute_time(); }
54
+ double elapsed() const
55
+ {
56
+ uint64_t e = mach_absolute_time() - _start_time;
57
+ int unit = _base.numer / _base.denom;
58
+ return double(e * unit) / NANOSEC; // seconds
59
+ }
60
+ double elapsed_max() const
61
+ {
62
+ return (double((std::numeric_limits<std::clock_t>::max)()) -
63
+ double(_start_time)) /
64
+ (double(_base.denom / _base.numer) / NANOSEC);
65
+ }
66
+
67
+ double elapsed_min() const
68
+ {
69
+ return double(1) / double(double(_base.denom / _base.numer) / NANOSEC);
70
+ }
71
+
72
+ private:
73
+ uint64_t _start_time;
74
+ mach_timebase_info_data_t _base;
75
+ }; // timer
76
+ }
77
+ #else
78
+ #include <boost/timer.hpp>
79
+ #endif
80
+ typedef boost::timer boost_timer;
41
81
 
42
82
  #endif
43
83
 
@@ -49,17 +89,31 @@ namespace rtl
49
89
  class benchmark
50
90
  {
51
91
  static boost_timer t;
52
- #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
53
- static boost_timer::time_point m_start;
54
- #endif
92
+ #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
93
+ static boost_timer::time_point m_start;
94
+ #endif
55
95
  public:
56
96
  static bool report(boost::function<bool()> func, const char* name);
57
97
  static void report2(boost::function<void()> func, const char* name);
58
98
  static void start();
99
+ static int stop();
100
+ static void showTimes(int result, const char* name);
59
101
  static void showTimeSec(bool result, const char* name);
60
-
61
102
  };
62
103
 
63
- }//namespace rtl
64
- }//namespace bzs
104
+ // Multi thread version. Self measurement.
105
+ class benchmarkMt
106
+ {
107
+ boost_timer t;
108
+ #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
109
+ boost_timer::time_point m_start;
65
110
  #endif
111
+
112
+ public:
113
+ void start();
114
+ int end();
115
+ };
116
+
117
+ } // namespace rtl
118
+ } // namespace bzs
119
+ #endif // BZS_RTL_BOOKMARK_H