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,41 +1,37 @@
1
- /*=================================================================
2
- Copyright (C) 2012 2013 BizStation Corp All rights reserved.
1
+ /* =================================================================
2
+ Copyright (C) 2012 2013 BizStation Corp All rights reserved.
3
3
 
4
- This program is free software; you can redistribute it and/or
5
- modify it under the terms of the GNU General Public License
6
- as published by the Free Software Foundation; either version 2
7
- of the License, or (at your option) any later version.
4
+ This program is free software; you can redistribute it and/or
5
+ modify it under the terms of the GNU General Public License
6
+ as published by the Free Software Foundation; either version 2
7
+ of the License, or (at your option) any later version.
8
8
 
9
- This program is distributed in the hope that it will be useful,
10
- but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- GNU General Public License for more details.
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU General Public License for more details.
13
13
 
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
17
- 02111-1307, USA.
18
- =================================================================*/
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
17
+ 02111-1307, USA.
18
+ ================================================================= */
19
19
 
20
20
  #include "tcpClient.h"
21
21
  #include <bzs/env/crosscompile.h>
22
- #ifndef _WIN32
22
+ #if (!defined(_WIN32))
23
+ #include <boost/filesystem.hpp>
24
+ #if (BOOST_VERSION > 104900)
23
25
  #include <boost/property_tree/ptree.hpp>
24
26
  #include <boost/property_tree/ini_parser.hpp>
25
- #include <boost/filesystem.hpp>
26
27
  #endif
28
+ #endif
29
+ #pragma package(smart_init)
27
30
 
28
31
  using namespace boost;
29
32
  using namespace boost::asio;
30
33
  using namespace boost::asio::ip;
31
34
 
32
- // ---------------------------------------------------------------------------
33
- #ifdef __BCPLUSPLUS__
34
- #pragma package(smart_init)
35
- #endif
36
-
37
-
38
-
39
35
  namespace bzs
40
36
  {
41
37
  namespace netsvc
@@ -43,185 +39,200 @@ namespace netsvc
43
39
  namespace client
44
40
  {
45
41
 
46
- char connections::port[PORTNUMBUF_SIZE] = {"8610"};
42
+ char connections::port[PORTNUMBUF_SIZE] = { "8610" };
47
43
  bool connections::m_usePipedLocal = true;
48
44
 
49
- connections::connections(const char* pipeName):m_pipeName(pipeName)
45
+ connections::connections(const char* pipeName) : m_pipeName(pipeName)
50
46
  {
51
47
  #ifdef _WIN32
52
- DWORD len = MAX_PATH;
53
- char buf[MAX_PATH];
54
- if (GetWindowsDirectory(buf, len))
55
- {
56
- strcat_s(buf, MAX_PATH, "\\transactd.ini");
57
- char tmp[30];
58
- GetPrivateProfileString("transctd_client","use_piped_local", "1"
59
- , tmp, 30, buf);
60
- m_usePipedLocal = (atol(tmp)!=0);
61
- GetPrivateProfileString("transctd_client","port", "8610"
62
- , tmp, 30, buf);
63
- strcpy_s(port, PORTNUMBUF_SIZE, tmp);
64
-
65
- }
66
- #else
67
- namespace fs = boost::filesystem;
68
- const fs::path path("/etc/transactd.cnf");
48
+ DWORD len = MAX_PATH;
49
+ char buf[MAX_PATH];
50
+ if (GetWindowsDirectory(buf, len))
51
+ {
52
+ strcat_s(buf, MAX_PATH, "\\transactd.ini");
53
+ char tmp[30];
54
+ GetPrivateProfileString("transctd_client", "use_piped_local", "1", tmp,
55
+ 30, buf);
56
+ m_usePipedLocal = (atol(tmp) != 0);
57
+ GetPrivateProfileString("transctd_client", "port", "8610", tmp, 30,
58
+ buf);
59
+ strcpy_s(port, PORTNUMBUF_SIZE, tmp);
60
+ }
61
+ #else // NOT _WIN32
62
+ #if (BOOST_VERSION > 104900)
63
+
64
+ namespace fs = boost::filesystem;
65
+ const fs::path path("/etc/transactd.cnf");
69
66
  boost::system::error_code error;
70
67
  const bool result = fs::exists(path, error);
71
- if (result && !error)
72
- {
73
- boost::property_tree::ptree pt;
74
- try
75
- {
76
- boost::property_tree::ini_parser::read_ini("/etc/transactd.cnf", pt);
77
- std::string p = pt.get<std::string>("transctd_client.port");
78
- if (p == "")
79
- p = "8610";
80
- strcpy_s(port, PORTNUMBUF_SIZE, p.c_str());
81
- }
82
- catch(...){}
83
- }
84
- #endif
85
-
68
+ if (result && !error)
69
+ {
70
+
71
+ boost::property_tree::ptree pt;
72
+ try
73
+ {
74
+ boost::property_tree::ini_parser::read_ini("/etc/transactd.cnf",
75
+ pt);
76
+ std::string p = pt.get<std::string>("transctd_client.port");
77
+ if (p == "")
78
+ p = "8610";
79
+ strcpy_s(port, PORTNUMBUF_SIZE, p.c_str());
80
+ }
81
+ catch (...)
82
+ {
83
+ }
84
+ }
85
+ #endif // BOOST_VERSION > 104900
86
+ #endif // NOT _WIN32
86
87
  }
87
88
 
88
- /** Use by procces detach
89
+ /** Use by procces detach
89
90
  *
90
91
  */
91
92
  connections::~connections()
92
93
  {
93
- for (int i=0;i<(int)m_conns.size();i++)
94
- {
95
- if (m_conns[i])
96
- delete m_conns[i];
97
-
98
- }
94
+ for (int i = 0; i < (int)m_conns.size(); i++)
95
+ {
96
+ if (m_conns[i])
97
+ delete m_conns[i];
98
+ }
99
99
  }
100
100
 
101
- /** When threads differ, it have to make a different connection.
101
+ /** When threads differ, it have to make a different connection.
102
102
  */
103
103
  connection* connections::getConnection(asio::ip::tcp::endpoint& ep)
104
104
  {
105
- thread_id tid = threadid();
106
- for (int i=0;i<(int)m_conns.size();i++)
107
- {
108
- if ((m_conns[i]->endpoint()==ep) && (m_conns[i]->tid()==tid))
109
- return m_conns[i];
110
- }
111
- return NULL;
105
+ thread_id tid = threadid();
106
+ for (int i = 0; i < (int)m_conns.size(); i++)
107
+ {
108
+ if ((m_conns[i]->endpoint() == ep) && (m_conns[i]->tid() == tid))
109
+ return m_conns[i];
110
+ }
111
+ return NULL;
112
112
  }
113
113
 
114
- asio::ip::tcp::endpoint connections::endpoint(const std::string& host)
114
+ asio::ip::tcp::endpoint connections::endpoint(const std::string& host,
115
+ boost::system::error_code& ec)
115
116
  {
116
- asio::ip::tcp::resolver resolver(m_ios);
117
- asio::ip::tcp::resolver::query query(host, port);
118
-
119
- boost::asio::ip::tcp::resolver::iterator dest = resolver.resolve(query);
120
- asio::ip::tcp::endpoint endpoint;
121
- while (dest != boost::asio::ip::tcp::resolver::iterator())
122
- endpoint = *dest++;
123
- return endpoint;
117
+ tcp::resolver resolver(m_ios);
118
+ tcp::resolver::query query(host, port);
119
+
120
+ tcp::resolver::iterator dest = resolver.resolve(query, ec);
121
+ tcp::endpoint endpoint;
122
+ if (!ec)
123
+ {
124
+ while (dest != tcp::resolver::iterator())
125
+ endpoint = *dest++;
126
+ }
127
+ return endpoint;
124
128
  }
125
129
 
126
130
  connection* connections::getConnection(const std::string& host)
127
131
  {
128
- mutex::scoped_lock lck(m_mutex);
129
- asio::ip::tcp::endpoint ep = endpoint(host);
130
- return getConnection(ep);
132
+ mutex::scoped_lock lck(m_mutex);
133
+ boost::system::error_code ec;
134
+ tcp::endpoint ep = endpoint(host, ec);
135
+ if (!ec)
136
+ return getConnection(ep);
137
+ return NULL;
131
138
  }
132
139
 
133
140
  #ifdef USE_PIPE_CLIENT
141
+
134
142
  connection* connections::getConnectionPipe()
135
143
  {
136
144
 
137
- thread_id tid = threadid();
138
- for (int i=0;i<(int)m_conns.size();i++)
139
- {
140
- pipeConnection* pc = dynamic_cast<pipeConnection*>(m_conns[i]);
141
- if (pc && (pc->tid()==tid))
142
- return pc;
143
- }
144
- return NULL;
145
+ thread_id tid = threadid();
146
+ for (int i = 0; i < (int)m_conns.size(); i++)
147
+ {
148
+ pipeConnection* pc = dynamic_cast<pipeConnection*>(m_conns[i]);
149
+ if (pc && (pc->tid() == tid))
150
+ return pc;
151
+ }
152
+ return NULL;
145
153
  }
146
- #endif
154
+ #endif // USE_PIPE_CLIENT
147
155
 
148
156
  bool connections::disconnect(connection* c)
149
157
  {
150
- //if (!c) return false;
151
- mutex::scoped_lock lck(m_mutex);
152
- c->release();
153
- if (c->refCount()==0)
154
- {
155
- for (int i = (int)m_conns.size()-1;i>=0;--i)
156
- {
157
- if (c == m_conns[i])
158
- {
159
- m_conns.erase(m_conns.begin()+i);
160
- break;
161
- }
162
- }
163
- delete c;
164
- return true;
165
- }
166
- return false;
158
+ // if (!c) return false;
159
+ mutex::scoped_lock lck(m_mutex);
160
+ c->release();
161
+ if (c->refCount() == 0)
162
+ {
163
+ for (int i = (int)m_conns.size() - 1; i >= 0; --i)
164
+ {
165
+ if (c == m_conns[i])
166
+ {
167
+ m_conns.erase(m_conns.begin() + i);
168
+ break;
169
+ }
170
+ }
171
+ delete c;
172
+ return true;
173
+ }
174
+ return false;
167
175
  }
168
176
 
169
- /** If ep is local then isUseNamedPipe is true
177
+ /** If ep is local then isUseNamedPipe is true
170
178
  */
171
179
  bool connections::isUseNamedPipe(asio::ip::tcp::endpoint& ep)
172
180
  {
173
- asio::ip::tcp::endpoint local = endpoint("127.0.0.1");
174
- if (local == ep)
175
- return true;
176
- char buf[MAX_PATH];
177
- if (::gethostname(buf, MAX_PATH)==0)
178
- {
179
- local = endpoint(buf);
180
- if (local == ep)
181
- return true;
182
- }
183
- return false;
181
+ boost::system::error_code ec;
182
+ asio::ip::tcp::endpoint local = endpoint("127.0.0.1", ec);
183
+ if (!ec && (local == ep))
184
+ return true;
185
+ char buf[MAX_PATH];
186
+ if (::gethostname(buf, MAX_PATH) == 0)
187
+ {
188
+ local = endpoint(buf, ec);
189
+ if (local == ep)
190
+ return true;
191
+ }
192
+ return false;
184
193
  }
185
194
 
186
- //The connection of found from connection list of same address is returned.
195
+ // The connection of found from connection list of same address is returned.
187
196
  connection* connections::connect(const std::string& host, bool newConnection)
188
197
  {
189
- mutex::scoped_lock lck(m_mutex);
190
- connection* c;
191
- asio::ip::tcp::endpoint ep = endpoint(host);
198
+ mutex::scoped_lock lck(m_mutex);
199
+ connection* c;
200
+ boost::system::error_code ec;
201
+ asio::ip::tcp::endpoint ep = endpoint(host, ec);
202
+ if (ec)
203
+ return NULL;
192
204
  #ifdef USE_PIPE_CLIENT
193
- if (m_usePipedLocal && isUseNamedPipe(ep))
194
- {
195
- c = newConnection ? NULL: getConnectionPipe();
196
- if(!c)
197
- {
198
- c = new pipeConnection(ep, m_pipeName);
199
- c->connect();
200
- m_conns.push_back(c);
201
- }
202
- }else
205
+ if (m_usePipedLocal && isUseNamedPipe(ep))
206
+ {
207
+ c = newConnection ? NULL : getConnectionPipe();
208
+ if (!c)
209
+ {
210
+ c = new pipeConnection(ep, m_pipeName);
211
+ c->connect();
212
+ m_conns.push_back(c);
213
+ }
214
+ }
215
+ else
203
216
  #endif
204
- {
205
-
206
- c = newConnection ? NULL: getConnection(ep);
207
- if(!c)
208
- {
209
- c = new tcpConnection(ep);
210
- c->connect();
211
- m_conns.push_back(c);
212
- }
213
- }
214
- c->addref();
215
- return c;
217
+ {
218
+
219
+ c = newConnection ? NULL : getConnection(ep);
220
+ if (!c)
221
+ {
222
+ c = new tcpConnection(ep);
223
+ c->connect();
224
+ m_conns.push_back(c);
225
+ }
226
+ }
227
+ c->addref();
228
+ return c;
216
229
  }
217
230
 
218
231
  int connections::connectionCount()
219
232
  {
233
+ return (int)m_conns.size();
234
+ }
220
235
 
221
- return (int)m_conns.size();
222
- };
223
-
224
- }//namespace client
225
- }//namespace netsvc
226
- }//namespace bzs
227
-
236
+ } // namespace client
237
+ } // namespace netsvc
238
+ } // namespace bzs