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
@@ -17,37 +17,39 @@
17
17
  02111-1307, USA.
18
18
  =================================================================*/
19
19
  #if defined(SWIGRUBY) // ======= For RUBY =======
20
-
21
20
  /* ===============================================
22
- Suppress warning
21
+ exception handler
23
22
  =============================================== */
24
- %warnfilter(
25
- SWIGWARN_RUBY_WRONG_NAME
26
- );
27
-
28
-
29
- /* ===============================================
30
- ignore functions
31
- =============================================== */
32
- // original callback
33
- %ignore bzs::db::protocol::tdap::client::database::onCopyData;
34
- %ignore bzs::db::protocol::tdap::client::database::setOnCopyData;
35
- %ignore bzs::db::protocol::tdap::client::database::onDeleteRecord;
36
- %ignore bzs::db::protocol::tdap::client::database::setOnDeleteRecord;
23
+ %exception {
24
+ try {
25
+ $action
26
+ } catch (bzs::rtl::exception& e) {
27
+ static VALUE bzs_rtl_error = rb_define_class("BZS_RTL_Error", rb_eStandardError);
28
+ rb_raise(bzs_rtl_error, (* bzs::rtl::getMsg(e)).c_str());
29
+ } catch (std::exception &e) {
30
+ static VALUE cpp_std_error = rb_define_class("CPP_STD_Error", rb_eStandardError);
31
+ rb_raise(cpp_std_error, e.what());
32
+ }
33
+ }
37
34
 
38
35
 
39
36
  /* ===============================================
40
- Rename functions
37
+ General settings for Ruby
41
38
  =============================================== */
42
- // Rename function which has keyword of Ruby as its name.
43
- %rename(andWhere) bzs::db::protocol::tdap::client::queryBase::And;
44
- %rename(orWhere) bzs::db::protocol::tdap::client::queryBase::Or;
39
+ %{
40
+ #if defined(__MINGW32__) && defined(__GNUC__)
41
+ #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 5)
42
+ #define _SYS_TIME_H_
43
+ #else
44
+ #define _GETTIMEOFDAY_DEFINED
45
+ #endif
46
+ #endif
47
+ %}
45
48
 
49
+ // Suppress warning
50
+ #pragma SWIG nowarn=SWIGWARN_RUBY_WRONG_NAME
46
51
 
47
- /* ===============================================
48
- Ruby can't convert String to c++ wchar_t
49
- so define _TCHAR as char.
50
- =============================================== */
52
+ // Ruby can't convert String to c++ wchar_t so define _TCHAR as char.
51
53
  #ifdef _UNICODE
52
54
  # undef _UNICODE
53
55
  #endif
@@ -57,55 +59,7 @@
57
59
  typedef char _TCHAR;
58
60
  #define _T(x) x
59
61
 
60
-
61
- /* ===============================================
62
- set execCodePage on createObject
63
- =============================================== */
64
- %ignore bzs::db::protocol::tdap::client::database::create();
65
- %extend bzs::db::protocol::tdap::client::database {
66
- static bzs::db::protocol::tdap::client::database* createObject()
67
- {
68
- bzs::db::protocol::tdap::client::nsdatabase::setExecCodePage(CP_UTF8);
69
- return bzs::db::protocol::tdap::client::database::create();
70
- }
71
- };
72
- %newobject bzs::db::protocol::tdap::client::database::createObject;
73
- %delobject bzs::db::protocol::tdap::client::database::release;
74
-
75
-
76
- /* ===============================================
77
- setFV / getFV for binary data
78
- =============================================== */
79
- %ignore bzs::db::protocol::tdap::client::table::setFV(short, const void *, uint_td);
80
- %extend bzs::db::protocol::tdap::client::table {
81
- void setFV(short index, const char * data, uint_td size) {
82
- return self->setFV(index, (void const *) data, size);
83
- }
84
- void setFV(const _TCHAR *fieldName, const char * data, uint_td size) {
85
- return self->setFV(fieldName, (void const *) data, size);
86
- }
87
- const char * getFVbin(short index, uint_td& size)
88
- {
89
- return (const char *)(self->getFVbin(index, size));
90
- }
91
- const char * getFVbin(const _TCHAR *fieldName, uint_td& size)
92
- {
93
- return (const char *)(self->getFVbin(fieldName, size));
94
- }
95
- };
96
- %typemap(in, numinputs=0) (uint_td & size) (uint_td temp) {
97
- $1 = &temp;
98
- }
99
- %typemap(argout) (uint_td & size) {
100
- $result = rb_str_new((const char *)result, *$1);
101
- }
102
- %ignore bzs::db::protocol::tdap::client::table::getFVbin(short, uint_td&);
103
- %ignore bzs::db::protocol::tdap::client::table::getFVbin(const _TCHAR *, uint_td&);
104
-
105
-
106
- /* ===============================================
107
- add encoding support for ruby 1.9
108
- =============================================== */
62
+ // add encoding support method for ruby 1.9
109
63
  %{
110
64
  #include "ruby/encoding.h"
111
65
  #undef stat
@@ -121,19 +75,215 @@ rb_encoding* rb_enc_find_from_codepage(int codePage)
121
75
  }
122
76
  %}
123
77
 
78
+ // typemaps for encoding support
124
79
  %typemap(argout) (const char* u8, int u8size, char* mbc, int mbcsize) {
125
80
  %append_output(rb_str_new($3, strlen($3)));
126
81
  }
127
82
  %typemap(argout) (const char* mbc, int mbcsize, char* u8, int u8size) {
128
83
  %append_output(rb_str_new($3, strlen($3)));
129
84
  }
130
-
131
85
  %typemap(out) const char* {
132
- vresult = rb_enc_str_new($1, strlen($1), rb_enc_find_from_codepage(CP_UTF8));
86
+ $result = rb_enc_str_new($1, strlen($1), rb_enc_find_from_codepage(CP_UTF8));
133
87
  }
134
-
135
88
  %typemap(out) char* {
136
- vresult = rb_enc_str_new($1, strlen($1), rb_enc_find_from_codepage(CP_UTF8));
89
+ $result = rb_enc_str_new($1, strlen($1), rb_enc_find_from_codepage(CP_UTF8));
90
+ }
91
+
92
+
93
+ /* ===============================================
94
+ mark objects with reference counter
95
+ =============================================== */
96
+ %trackobjects bzs::db::protocol::tdap::client::activeTable;
97
+ %markfunc bzs::db::protocol::tdap::client::activeTable "mark_activeTable";
98
+ %{
99
+ #include <build/swig/referencecounter.h>
100
+ referenceCounter g_refCounter;
101
+ static void mark_activeTable(void* ptr) {
102
+ g_refCounter.mark();
103
+ }
104
+ %}
105
+
106
+
107
+ /* ===============================================
108
+ ignore / rename functions
109
+ =============================================== */
110
+ // * bzs/db/protocol/tdap/client/activeTable.h *
111
+ // add wrappers
112
+ %extend bzs::db::protocol::tdap::client::activeTable {
113
+ activeTable(idatabaseManager* mgr, const _TCHAR* tableName) {
114
+ bzs::db::protocol::tdap::client::activeTable* p =
115
+ bzs::db::protocol::tdap::client::activeTable::create(mgr, tableName);
116
+ g_refCounter.add(p, mgr);
117
+ g_vPtrList.add(p->table().get());
118
+ return p;
119
+ }
120
+ activeTable(database* db, const _TCHAR* tableName) {
121
+ bzs::db::protocol::tdap::client::activeTable* p =
122
+ bzs::db::protocol::tdap::client::activeTable::create(db, tableName);
123
+ g_refCounter.add(p, db);
124
+ g_vPtrList.add(p->table().get());
125
+ return p;
126
+ }
127
+ ~activeTable() {
128
+ if (g_vPtrList.remove(self->table().get()))
129
+ {
130
+ if (nsdatabase::testTablePtr(self->table().get()))
131
+ self->table()->nsdb()->setTestPtrIgnore(true);
132
+ }
133
+ g_refCounter.remove(self);
134
+ self->release();
135
+ }
136
+ };
137
+ // ignore original functions
138
+ %ignore bzs::db::protocol::tdap::client::activeTable::activeTable;
139
+ %ignore bzs::db::protocol::tdap::client::activeTable::~activeTable;
140
+
141
+ // * bzs/db/protocol/tdap/client/database.h *
142
+ %ignore bzs::db::protocol::tdap::client::database::onCopyData;
143
+ %ignore bzs::db::protocol::tdap::client::database::setOnCopyData;
144
+ %ignore bzs::db::protocol::tdap::client::database::onDeleteRecord;
145
+ %ignore bzs::db::protocol::tdap::client::database::setOnDeleteRecord;
146
+
147
+ // * bzs/db/protocol/tdap/client/field.h *
148
+ %rename(__getitem__) bzs::db::protocol::tdap::client::fielddefs::operator[] (int) const;
149
+ %rename(__getitem__) bzs::db::protocol::tdap::client::fielddefs::operator[] (const _TCHAR*) const;
150
+
151
+ // * bzs/db/protocol/tdap/client/fields.h *
152
+ %ignore bzs::db::protocol::tdap::client::fieldsBase::operator[];
153
+ // typemap and expand for get field value.
154
+ %typemap(argout) (short fieldsBase_getitem_index) {
155
+ bzs::db::protocol::tdap::client::field f = arg1->operator[]($1);
156
+ __int64 tmp_i64;
157
+ double tmp_d;
158
+ const _TCHAR* tmp_c_str;
159
+ switch (f.type()) {
160
+ case ft_integer:
161
+ case ft_uinteger:
162
+ case ft_autoinc:
163
+ case ft_autoIncUnsigned:
164
+ case ft_logical:
165
+ case ft_bit:
166
+ tmp_i64 = f.i64();
167
+ $result = SWIG_From_long_SS_long(static_cast< long long >(tmp_i64));
168
+ break;
169
+ case ft_float:
170
+ case ft_decimal:
171
+ case ft_money:
172
+ case ft_numeric:
173
+ case ft_bfloat:
174
+ case ft_numericsts:
175
+ case ft_numericsa:
176
+ case ft_currency:
177
+ tmp_d = f.d();
178
+ $result = SWIG_From_double(static_cast< double >(tmp_d));
179
+ break;
180
+ /*
181
+ case ft_string:
182
+ case ft_myvarbinary:
183
+ case ft_mywvarbinary:
184
+ case ft_myblob:
185
+ return f.getBin();
186
+ */
187
+ default:
188
+ tmp_c_str = f.c_str();
189
+ $result = rb_enc_str_new(tmp_c_str, strlen(tmp_c_str), rb_enc_find_from_codepage(CP_UTF8));
190
+ }
137
191
  }
192
+ %apply short fieldsBase_getitem_index { const _TCHAR* fieldsBase_getitem_index };
193
+ %extend bzs::db::protocol::tdap::client::fieldsBase {
194
+ void __getitem__(short fieldsBase_getitem_index) const {
195
+ }
196
+ void __getitem__(const _TCHAR* fieldsBase_getitem_index) const {
197
+ }
198
+ };
199
+ %clear _TCHAR* fieldsBase_getitem_index;
138
200
 
201
+ // * bzs/db/protocol/tdap/client/table.h *
202
+ // define setFVbin
203
+ %ignore bzs::db::protocol::tdap::client::table::setFV(short, const void *, uint_td);
204
+ %ignore bzs::db::protocol::tdap::client::table::setFV(const _TCHAR*, const void *, uint_td);
205
+ %typemap(in, numinputs=0) (uint_td & table_setFVbin_size) (uint_td temp) {
206
+ $1 = &temp;
207
+ }
208
+ %typemap(argout) (uint_td & table_setFVbin_size) {
209
+ $result = rb_str_new((const char *)result, *$1);
210
+ }
211
+ %extend bzs::db::protocol::tdap::client::table {
212
+ void setFV(short index, const char * data, uint_td table_setFVbin_size) {
213
+ return self->setFV(index, (void const *) data, table_setFVbin_size);
214
+ }
215
+ void setFV(const _TCHAR *fieldName, const char * data, uint_td table_setFVbin_size) {
216
+ return self->setFV(fieldName, (void const *) data, table_setFVbin_size);
217
+ }
218
+ };
219
+ // fix getFVbin
220
+ %typemap(in, numinputs=0) (uint_td & table_getFVbin_size) (uint_td temp) {
221
+ $1 = &temp;
222
+ }
223
+ %typemap(argout) (uint_td & table_getFVbin_size) {
224
+ $result = rb_str_new((const char *)result, *$1);
225
+ }
226
+ %extend bzs::db::protocol::tdap::client::table {
227
+ void* getFVbin(short index, uint_td& table_getFVbin_size)
228
+ {
229
+ return self->getFVbin(index, table_getFVbin_size);
230
+ }
231
+ void* getFVbin(const _TCHAR *fieldName, uint_td& table_getFVbin_size)
232
+ {
233
+ return self->getFVbin(fieldName, table_getFVbin_size);
234
+ }
235
+ };
236
+ %ignore bzs::db::protocol::tdap::client::table::getFVbin(short, uint_td&);
237
+ %ignore bzs::db::protocol::tdap::client::table::getFVbin(const _TCHAR *, uint_td&);
238
+
239
+ // * bzs/db/protocol/tdap/client/memRecord.h *
240
+ %rename(__setitem__) bzs::db::protocol::tdap::client::field::setBin;
241
+ %extend bzs::db::protocol::tdap::client::writableRecord {
242
+ void __setitem__(short writableRecord_setitem_index, const _TCHAR* v) {
243
+ self->operator[](writableRecord_setitem_index) = v;
244
+ }
245
+ void __setitem__(const _TCHAR* writableRecord_setitem_index, const _TCHAR* v) const {
246
+ self->operator[](writableRecord_setitem_index) = v;
247
+ }
248
+ void __setitem__(short writableRecord_setitem_index, __int64 v) {
249
+ self->operator[](writableRecord_setitem_index) = v;
250
+ }
251
+ void __setitem__(const _TCHAR* writableRecord_setitem_index, __int64 v) const {
252
+ self->operator[](writableRecord_setitem_index) = v;
253
+ }
254
+ void __setitem__(short writableRecord_setitem_index, double v) {
255
+ self->operator[](writableRecord_setitem_index) = v;
256
+ }
257
+ void __setitem__(const _TCHAR* writableRecord_setitem_index, double v) const {
258
+ self->operator[](writableRecord_setitem_index) = v;
259
+ }
260
+ // binary
261
+ };
262
+
263
+ // * bzs/db/protocol/tdap/client/recordset.h *
264
+ %rename(__getitem__) bzs::db::protocol::tdap::client::recordset::operator[];
265
+
266
+
267
+ /* ===============================================
268
+ add code to init section
269
+ =============================================== */
270
+ %init %{
271
+ bzs::db::protocol::tdap::client::nsdatabase::setCheckTablePtr(true);
272
+ #if HAVE_RB_THREAD_CALL_WITHOUT_GVL || HAVE_RB_THREAD_BLOCKING_REGION
273
+ if (MYTICALLID_ORIGINAL == NULL)
274
+ {
275
+ MYTICALLID_ORIGINAL = bzs::db::protocol::tdap::client::getTrnsctdEntryPoint();
276
+ if (MYTICALLID_ORIGINAL)
277
+ bzs::db::protocol::tdap::client::setTrnsctdEntryPoint((BTRCALLID_PTR) MYTICALLID_WITHOUT_GVL);
278
+ else
279
+ bzs::db::protocol::tdap::client::setTrnsctdEntryPoint((BTRCALLID_PTR) NULL);
280
+
281
+ BTRVCALLID_ORIGINAL = bzs::db::protocol::tdap::client::getBtrvEntryPoint();
282
+ if (BTRVCALLID_ORIGINAL)
283
+ bzs::db::protocol::tdap::client::setBtrvEntryPoint((BTRCALLID_PTR) BTRVCALLID_WITHOUT_GVL);
284
+ else
285
+ bzs::db::protocol::tdap::client::setBtrvEntryPoint((BTRCALLID_PTR) NULL);
286
+ }
287
+ #endif // HAVE_RB_THREAD_CALL_WITHOUT_GVL || HAVE_RB_THREAD_BLOCKING_REGION
288
+ %}
139
289
  #endif // =============== For RUBY ===============
@@ -0,0 +1,71 @@
1
+ #ifndef TRANSACTD_THREADBLOCKREGIONWRAPPER_H
2
+ #define TRANSACTD_THREADBLOCKREGIONWRAPPER_H
3
+ /* =================================================================
4
+ Copyright (C) 2000-2014 BizStation Corp All rights reserved.
5
+
6
+ This program is free software; you can redistribute it and/or
7
+ modify it under the terms of the GNU General Public License
8
+ as published by the Free Software Foundation; either version 2
9
+ of the License, or (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
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
19
+ 02111-1307, USA.
20
+ ================================================================= */
21
+ #undef TRANSACTD_RB_CALL_WITHOUT_GVL
22
+
23
+ #if HAVE_RB_THREAD_CALL_WITHOUT_GVL || HAVE_RB_THREAD_BLOCKING_REGION
24
+
25
+ #include <ruby.h>
26
+ #undef stat
27
+ #include <bzs/db/protocol/tdap/tdapcapi.h>
28
+ #include <boost/thread/thread.hpp>
29
+ #include <boost/thread/condition.hpp>
30
+
31
+ #ifdef HAVE_RB_THREAD_CALL_WITHOUT_GVL
32
+ #include <ruby/thread.h>
33
+ #define TRANSACTD_RB_CALL_WITHOUT_GVL( func, arg ) \
34
+ rb_thread_call_without_gvl((void *(*)(void *))func, &arg, RUBY_UBF_IO, NULL)
35
+ #else
36
+ // use rb_thread_blocking_region only if rb_thread_call_without_gvl is not defined.
37
+ #define TRANSACTD_RB_CALL_WITHOUT_GVL( func, arg ) \
38
+ rb_thread_blocking_region((rb_blocking_function_t*) func, &arg, RUBY_UBF_IO, NULL)
39
+ #endif
40
+
41
+ namespace bzs
42
+ {
43
+ namespace db
44
+ {
45
+ namespace protocol
46
+ {
47
+ namespace tdap
48
+ {
49
+ namespace client
50
+ {
51
+
52
+ struct BTRCALLIDArgs
53
+ {
54
+ ushort_td op;
55
+ void* pbk;
56
+ void* data;
57
+ uint_td* datalen;
58
+ void* keybuf;
59
+ keylen_td keylen;
60
+ char_td keyNum;
61
+ uchar_td* cid;
62
+ short_td result;
63
+ };
64
+
65
+ }// namespace client
66
+ }// namespace tdap
67
+ }// namespace protocol
68
+ }// namespace db
69
+ }// namespace bzs
70
+ #endif //HAVE_RB_THREAD_CALL_WITHOUT_GVL || HAVE_RB_THREAD_BLOCKING_REGION
71
+ #endif //not TRANSACTD_THREADBLOCKREGIONWRAPPER_H
@@ -0,0 +1,87 @@
1
+ /*=================================================================
2
+ Copyright (C) 2014 BizStation Corp All rights reserved.
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.
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.
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
+ =================================================================*/
19
+ /* ===============================================
20
+ Support call_without_gvl
21
+ =============================================== */
22
+ %{
23
+ #if HAVE_RB_THREAD_CALL_WITHOUT_GVL || HAVE_RB_THREAD_BLOCKING_REGION
24
+
25
+ #include <build/swig/ruby/threadBlockRegionWrapper.h>
26
+
27
+ #ifdef HAVE_RB_THREAD_CALL_WITHOUT_GVL
28
+ #include <ruby/thread.h>
29
+ #define TRANSACTD_RB_CALL_WITHOUT_GVL( func, arg ) \
30
+ rb_thread_call_without_gvl((void *(*)(void *))func, &arg, RUBY_UBF_IO, NULL)
31
+ #else
32
+ // use rb_thread_blocking_region only if rb_thread_call_without_gvl is not defined.
33
+ #define TRANSACTD_RB_CALL_WITHOUT_GVL( func, arg ) \
34
+ rb_thread_blocking_region((rb_blocking_function_t*) func, &arg, RUBY_UBF_IO, NULL)
35
+ #endif
36
+
37
+ BTRCALLID_PTR MYTICALLID_ORIGINAL = NULL;
38
+ BTRCALLID_PTR BTRVCALLID_ORIGINAL = NULL;
39
+
40
+ void MYTICALLID_ArgumentWrapper(BTRCALLIDArgs* args)
41
+ {
42
+ args->result = MYTICALLID_ORIGINAL(args->op, args->pbk, args->data,
43
+ args->datalen, args->keybuf, args->keylen, args->keyNum, args->cid);
44
+ }
45
+
46
+ short_td __STDCALL MYTICALLID_WITHOUT_GVL(ushort_td op, void* pbk, void* data,
47
+ uint_td* datalen, void* keybuf, keylen_td keylen, char_td keyNum, uchar_td* cid)
48
+ {
49
+ BTRCALLIDArgs args;
50
+ args.op = op;
51
+ args.pbk = pbk;
52
+ args.data = data;
53
+ args.datalen = datalen;
54
+ args.keybuf = keybuf;
55
+ args.keylen = keylen;
56
+ args.keyNum = keyNum;
57
+ args.cid = cid;
58
+ args.result = 0;
59
+ TRANSACTD_RB_CALL_WITHOUT_GVL(MYTICALLID_ArgumentWrapper, args);
60
+ return args.result;
61
+ }
62
+
63
+ void BTRCALLID_ArgumentWrapper(BTRCALLIDArgs* args)
64
+ {
65
+ args->result = BTRVCALLID_ORIGINAL(args->op, args->pbk, args->data,
66
+ args->datalen, args->keybuf, args->keylen, args->keyNum, args->cid);
67
+ }
68
+
69
+ short_td __STDCALL BTRVCALLID_WITHOUT_GVL(ushort_td op, void* pbk, void* data,
70
+ uint_td* datalen, void* keybuf, keylen_td keylen, char_td keyNum, uchar_td* cid)
71
+ {
72
+ BTRCALLIDArgs args;
73
+ args.op = op;
74
+ args.pbk = pbk;
75
+ args.data = data;
76
+ args.datalen = datalen;
77
+ args.keybuf = keybuf;
78
+ args.keylen = keylen;
79
+ args.keyNum = keyNum;
80
+ args.cid = cid;
81
+ args.result = 0;
82
+ TRANSACTD_RB_CALL_WITHOUT_GVL(BTRCALLID_ArgumentWrapper, args);
83
+ return args.result;
84
+ }
85
+
86
+ #endif // HAVE_RB_THREAD_CALL_WITHOUT_GVL || HAVE_RB_THREAD_BLOCKING_REGION
87
+ %}