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,37 +1,50 @@
1
1
  #ifndef BZS_DB_PROTOCOL_TDAP_CLIENT_REQUSET_H
2
2
  #define BZS_DB_PROTOCOL_TDAP_CLIENT_REQUSET_H
3
- /*=================================================================
4
- Copyright (C) 2013 BizStation Corp All rights reserved.
3
+ /* =================================================================
4
+ Copyright (C) 2013 BizStation Corp All rights reserved.
5
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.
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
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.
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
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
- =================================================================*/
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
21
 
22
22
  #include <bzs/db/protocol/tdap/tdapRequest.h>
23
23
 
24
-
24
+ #ifdef USE_DATA_COMPRESS
25
+ #include <bzs/rtl/lzss.h>
26
+ #endif
25
27
 
26
28
  namespace bzs
27
29
  {
28
- namespace netsvc{namespace client{class connection;}}
29
-
30
+ namespace netsvc
31
+ {
32
+ namespace client
33
+ {
34
+ class connection;
35
+ }
36
+ }
30
37
 
31
38
  namespace db
32
39
  {
33
- namespace engine{namespace mysql{class table;}}
34
-
40
+ namespace engine
41
+ {
42
+ namespace mysql
43
+ {
44
+ class table;
45
+ }
46
+ }
47
+
35
48
  namespace protocol
36
49
  {
37
50
  namespace tdap
@@ -42,157 +55,201 @@ namespace client
42
55
  class request : public bzs::db::protocol::tdap::request
43
56
  {
44
57
  public:
45
- clientID* cid;
46
-
47
- request():bzs::db::protocol::tdap::request()
48
- ,cid(NULL){};
49
-
50
- inline void parse(const char* p)
51
- {
52
- p += sizeof(unsigned int);
53
- paramMask = *((uchar_td*)p);
54
- p += sizeof(uchar_td);
55
- op = *((ushort_td*)p);
56
- p += sizeof(ushort_td);
57
-
58
- if (P_MASK_POSBLK & paramMask)
59
- {
60
- memcpy(pbk, p, POSBLK_SIZE);
61
- p += POSBLK_SIZE;
62
- }
63
- if (P_MASK_DATALEN & paramMask)
64
- {
65
- uint_td tmp = *((uint_td*)p);
66
- memset(data, 0, *datalen);
67
- if (*datalen < tmp)
68
- result = STATUS_BUFFERTOOSMALL;
69
- else
70
- *datalen = tmp;
71
- p += sizeof(uint_td);
72
- }
73
- if (P_MASK_EX_SENDLEN & paramMask)
74
- {
75
- memcpy(data, p, (*(ushort_td*)p));
76
- p += (*(ushort_td*)p);
77
-
78
- }
79
- else if (P_MASK_DATA & paramMask)
80
- {
81
- memcpy(data, p, *datalen);
82
- p += *datalen;
83
- }
84
- if (P_MASK_KEYBUF & paramMask)
85
- {
86
- if (keylen < *((keylen_td*)p))
87
- {
88
- result = STATUS_KEYBUFFERTOOSMALL;
89
- return ;
90
- }
91
- memset(keybuf, 0, keylen);
92
- keylen = *((keylen_td*)p);
93
- p += sizeof(keylen_td);
94
- memcpy(keybuf, p, keylen);
58
+ clientID* cid;
59
+
60
+ request() : bzs::db::protocol::tdap::request(), cid(NULL){};
61
+
62
+ inline void parse(const char* p, unsigned int segmentDataLen,
63
+ unsigned short rows)
64
+ {
65
+ p += sizeof(unsigned int);
66
+ paramMask = *((ushort_td*)p);
67
+ p += sizeof(ushort_td);
68
+
69
+ result = *((ushort_td*)p);
70
+ p += sizeof(ushort_td);
71
+
72
+ if (P_MASK_POSBLK & paramMask)
73
+ {
74
+ memcpy(pbk, p, POSBLK_SIZE);
75
+ p += POSBLK_SIZE;
76
+ }
77
+
78
+ if (P_MASK_DATALEN & paramMask)
79
+ {
80
+ uint_td tmp = *((uint_td*)p);
81
+ if (*datalen < tmp)
82
+ result = STATUS_BUFFERTOOSMALL;
83
+ else
84
+ *datalen = tmp;
85
+ p += sizeof(uint_td);
86
+ }
87
+
88
+ if (P_MASK_FINALDATALEN & paramMask)
89
+ {
90
+ memset(data, 0, *datalen);
91
+ if (*datalen < segmentDataLen)
92
+ result = STATUS_BUFFERTOOSMALL;
93
+ else
94
+ *datalen = segmentDataLen;
95
+ }
96
+ #ifdef USE_DATA_COMPRESS
97
+ if (P_MASK_USELZSS & paramMask)
98
+ {
99
+ unsigned int compSize;
100
+ memcpy(&compSize, p, sizeof(unsigned int));
101
+ p += sizeof(unsigned int);
102
+ unsigned int decompSize = bzs::rtl::lzssDecode(p, data);
103
+ p += compSize;
104
+ }
105
+ else
106
+ #endif
107
+ if (P_MASK_DATA & paramMask)
108
+ {
109
+ memcpy(data, p, *datalen);
110
+ p += *datalen;
111
+ if (P_MASK_FINALDATALEN & paramMask)
112
+ {
113
+ memcpy(data, &rows, 2);
114
+ p += sizeof(unsigned int);
115
+ }
116
+ }
117
+ if (P_MASK_KEYBUF & paramMask)
118
+ {
119
+ if (keylen < *((keylen_td*)p))
120
+ {
121
+ result = STATUS_KEYBUFFERTOOSMALL;
122
+ return;
123
+ }
124
+ memset(keybuf, 0, keylen);
125
+ keylen = *((keylen_td*)p);
126
+ p += sizeof(keylen_td);
127
+ memcpy(keybuf, p, keylen);
95
128
  p += keylen;
96
- }
97
- if (P_MASK_KEYNUM & paramMask)
98
- {
99
- keyNum = *((char_td*)p);
100
- p += sizeof(char_td);
101
- }
102
- if (paramMask & P_MASK_BLOBBODY)
103
- {
104
- blobHeader = (const bzs::db::blobHeader*)p;
105
- if (blobHeader->rows)
106
- blobHeader->resetCur();
107
- }
108
- else
109
- blobHeader = NULL;
110
-
111
- }
112
- inline unsigned int serialize(char* buf)
113
- {
114
- char* p = buf;
115
- unsigned int totallen = sizeof(unsigned int) + sizeof(uchar_td)
116
- + sizeof(ushort_td) + CLIENTID_SIZE;
117
- if (P_MASK_POSBLK & paramMask)
118
- totallen += POSBLK_SIZE;
119
-
120
- if (P_MASK_EX_SENDLEN & paramMask)
121
- totallen += *((ushort_td*)data);
122
- else if (P_MASK_DATA & paramMask)
123
- totallen += *datalen;
124
-
125
- if (P_MASK_DATALEN & paramMask)
126
- totallen += sizeof(uint_td);
127
- if (P_MASK_KEYBUF & paramMask)
128
- totallen += keylen+sizeof(keylen_td) + 1;//+1 is null terminate byte
129
- if (P_MASK_KEYNUM & paramMask)
130
- totallen += sizeof(char_td);
131
- memcpy(p, &totallen, sizeof(unsigned int));
132
- p += sizeof(unsigned int);
133
-
134
- memcpy(p, &paramMask, sizeof(uchar_td));
135
- p += sizeof(uchar_td);
136
-
137
- memcpy(p, &op, sizeof(ushort_td));
138
- p += sizeof(ushort_td);
139
-
140
- if (P_MASK_POSBLK & paramMask)
141
- {
142
- memcpy(p, pbk, POSBLK_SIZE);
143
- p += POSBLK_SIZE;
144
- }
145
-
146
- if (P_MASK_DATALEN & paramMask)
147
- {
148
- memcpy(p, datalen, sizeof(uint_td));
149
- p += sizeof(uint_td);
150
- }
151
-
152
- if (P_MASK_EX_SENDLEN & paramMask)
153
- {
154
- memcpy(p, data, *((ushort_td*)data));
155
- p += *((ushort_td*)data);
156
- }
157
- else if (P_MASK_DATA & paramMask)
158
- {
159
- memcpy(p, data, *datalen);
160
- p += *datalen;
161
- }
162
-
163
- if (P_MASK_KEYBUF & paramMask)
164
- {
165
- memcpy(p, &keylen, sizeof(keylen_td));
166
- p += sizeof(keylen_td);
167
-
168
- memcpy(p, keybuf, keylen);
169
- p += keylen;
170
- *p = 0x00;
171
- ++p;
172
- }
173
- if (P_MASK_KEYNUM & paramMask)
174
- {
175
- memcpy(p, &keyNum, sizeof(char_td));
176
- p += sizeof(char_td);
177
- }
178
-
179
- memcpy(p, &cid->id, CLIENTID_SIZE);
180
- p += CLIENTID_SIZE;
181
-
182
- return (unsigned int)(p - buf);
183
- }
184
-
185
-
186
-
187
-
188
-
129
+ }
130
+ if (P_MASK_KEYNUM & paramMask)
131
+ {
132
+ keyNum = *((char_td*)p);
133
+ p += sizeof(char_td);
134
+ }
135
+
136
+ if (P_MASK_FINALRET & paramMask)
137
+ {
138
+ result = *((ushort_td*)p);
139
+ p += sizeof(ushort_td);
140
+ }
141
+
142
+ if (paramMask & P_MASK_BLOBBODY)
143
+ {
144
+ blobHeader = (const bzs::db::blobHeader*)p;
145
+ if (blobHeader->rows)
146
+ blobHeader->resetCur();
147
+ }
148
+ else
149
+ blobHeader = NULL;
150
+ }
151
+
152
+ inline unsigned int sendLenEstimate()
153
+ {
154
+ if (P_MASK_EX_SENDLEN & paramMask)
155
+ {
156
+ unsigned int v = *((unsigned int*)data);
157
+ v &= 0xFFFFFFF; // 28bit
158
+ return v + 2048;
159
+ }
160
+ else if (P_MASK_DATA & paramMask)
161
+ return *datalen + 2048;
162
+ return 2048;
163
+ }
164
+
165
+ inline unsigned int serialize(char* buf)
166
+ {
167
+ char* p = buf;
168
+ unsigned int dataSize = 0;
169
+
170
+ if (P_MASK_EX_SENDLEN & paramMask)
171
+ {
172
+ dataSize = *((unsigned int*)data);
173
+ dataSize &= 0xFFFFFFF;
174
+ }
175
+ else if (P_MASK_DATA & paramMask)
176
+ dataSize = *datalen;
177
+ // add lzss infomation
178
+ #ifdef USE_DATA_COMPRESS
179
+ if (dataSize > 1500)
180
+ paramMask |= P_MASK_USELZSS;
181
+ #endif
182
+ p += sizeof(unsigned int);
183
+
184
+ memcpy(p, &paramMask, sizeof(ushort_td));
185
+ p += sizeof(ushort_td);
186
+
187
+ memcpy(p, &op, sizeof(ushort_td));
188
+ p += sizeof(ushort_td);
189
+
190
+ if (P_MASK_POSBLK & paramMask)
191
+ {
192
+ memcpy(p, pbk, POSBLK_SIZE);
193
+ p += POSBLK_SIZE;
194
+ }
195
+
196
+ if (P_MASK_DATALEN & paramMask)
197
+ {
198
+ memcpy(p, datalen, sizeof(uint_td));
199
+ p += sizeof(uint_td);
200
+ }
201
+ #ifdef USE_DATA_COMPRESS
202
+ if (P_MASK_USELZSS & paramMask)
203
+ {
204
+ uint_td compSize =
205
+ bzs::rtl::lzssEncode(data, dataSize, p + sizeof(uint_td));
206
+ memcpy(p, &compSize, sizeof(uint_td));
207
+ p += compSize + sizeof(uint_td);
208
+ }
209
+ else
210
+ #endif
211
+ if (P_MASK_EX_SENDLEN & paramMask)
212
+ {
213
+ unsigned int v = *((unsigned int*)data);
214
+ v &= 0xFFFFFFF; // 28bit
215
+ memcpy(p, data, v);
216
+ p += v;
217
+ }
218
+ else if (P_MASK_DATA & paramMask)
219
+ {
220
+ memcpy(p, data, *datalen);
221
+ p += *datalen;
222
+ }
223
+
224
+ if (P_MASK_KEYBUF & paramMask)
225
+ {
226
+ memcpy(p, &keylen, sizeof(keylen_td));
227
+ p += sizeof(keylen_td);
228
+
229
+ memcpy(p, keybuf, keylen);
230
+ p += keylen;
231
+ *p = 0x00;
232
+ ++p;
233
+ }
234
+ if (P_MASK_KEYNUM & paramMask)
235
+ {
236
+ memcpy(p, &keyNum, sizeof(char_td));
237
+ p += sizeof(char_td);
238
+ }
239
+
240
+ memcpy(p, &cid->id, CLIENTID_SIZE);
241
+ p += CLIENTID_SIZE;
242
+
243
+ unsigned int totallen = (unsigned int)(p - buf);
244
+ memcpy(buf, &totallen, sizeof(unsigned int));
245
+ return totallen;
246
+ }
189
247
  };
190
248
 
191
- }//namespace client
192
- }//namespace protocol
193
- }//namespace tdap
194
- }//namespace db
195
- }//namespace bzs
196
-
249
+ } // namespace client
250
+ } // namespace protocol
251
+ } // namespace tdap
252
+ } // namespace db
253
+ } // namespace bzs
197
254
 
198
- #endif //BZS_DB_PROTOCOL_TDAP_CLIENT_REQUSET_H
255
+ #endif // BZS_DB_PROTOCOL_TDAP_CLIENT_REQUSET_H