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,7 +1,7 @@
1
1
  #ifndef BZS_DB_PROTOCOL_TDAP_MYSQL_REQUSET_H
2
2
  #define BZS_DB_PROTOCOL_TDAP_MYSQL_REQUSET_H
3
3
  /*=================================================================
4
- Copyright (C) 2013 BizStation Corp All rights reserved.
4
+ Copyright (C) 2013 2014 BizStation Corp All rights reserved.
5
5
 
6
6
  This program is free software; you can redistribute it and/or
7
7
  modify it under the terms of the GNU General Public License
@@ -22,18 +22,16 @@
22
22
  #include <bzs/db/protocol/tdap/tdapRequest.h>
23
23
  #include <bzs/rtl/exception.h>
24
24
  #include <bzs/db/blobBuffer.h>
25
+ #include <bzs/netsvc/server/IAppModule.h>
25
26
 
26
27
  /** readRecords reserved buffer size
27
- *
28
28
  */
29
- #define RETBUF_EXT_RESERVE_SIZE 11
30
-
31
-
29
+ #define RETBUF_EXT_RESERVE_SIZE 12
32
30
 
33
31
  namespace bzs
34
32
  {
35
33
  namespace db
36
- {
34
+ {
37
35
  namespace protocol
38
36
  {
39
37
  namespace tdap
@@ -44,159 +42,154 @@ namespace mysql
44
42
  class request : public bzs::db::protocol::tdap::request
45
43
  {
46
44
  public:
47
-
48
- ushort_td cid;
49
-
50
- request():bzs::db::protocol::tdap::request(),cid(0){};
51
-
52
- /**
53
- * @param size allready copied size.
54
- */
55
- inline unsigned int serializeForExt(engine::mysql::table* tb, char* buf, unsigned int size)
56
- {
57
- paramMask = (engine::mysql::table::noKeybufResult==false) ?
58
- P_MASK_READ_EXT : P_MASK_DATA|P_MASK_DATALEN;
59
- //paramMask = P_MASK_READ_EXT;
60
- if (tb->blobFields()) paramMask |=P_MASK_BLOBBODY;
61
- resultLen = (ushort_td)(size - RETBUF_EXT_RESERVE_SIZE);// 4+1+2+4 = 11
62
-
63
- int pos = sizeof(unsigned int); //4
64
- memcpy(buf + pos, (const char*)(&paramMask), sizeof(uchar_td)); //1
65
- pos += sizeof(uchar_td);
66
- memcpy(buf + pos, (const char*)(&result), sizeof(short_td)); //2
67
- pos += sizeof(short_td);
68
- memcpy(buf + pos, (const char*)&resultLen, sizeof(uint_td)); //4
69
-
70
- /* The result contents is copied allready.*/
71
-
72
- //buf + size
73
- if (paramMask & P_MASK_KEYBUF)
74
- {
75
- keylen = tb->keyPackCopy((uchar*)buf + size + sizeof(keylen_td));
76
- memcpy(buf + size, (const char*)&keylen, sizeof(keylen_td));
77
- size += sizeof(keylen_td);
78
- size += keylen;
79
- }
80
- memcpy(buf, (const char*)(&size), sizeof(unsigned int));
81
- return size;
82
- }
83
-
84
- inline unsigned int serialize(engine::mysql::table* tb, char* buf)
85
- {
86
- char* bufptr = buf;
87
- char* datalenPtr = NULL;
88
-
89
- bufptr += sizeof(unsigned int);//space of totalLen
90
-
91
- memcpy(bufptr, (const char*)(&paramMask), sizeof(uchar_td));
92
- bufptr += sizeof(uchar_td);
93
-
94
- memcpy(bufptr, (const char*)(&result), sizeof(short_td));
95
- bufptr += sizeof(short_td);
96
-
97
- if (P_MASK_POSBLK & paramMask)
98
- {
99
- memcpy(bufptr, (const char*)pbk, POSBLK_SIZE);
100
- bufptr += POSBLK_SIZE;
101
- }
102
- if (P_MASK_DATALEN & paramMask)
103
- {
104
- datalenPtr = bufptr;
105
- bufptr += sizeof(uint_td);
106
- }
107
-
108
- if (P_MASK_DATA & paramMask)
109
- {
110
- if (tb && (data == tb->record()))
111
- {
112
- resultLen = tb->recordPackCopy(bufptr, 0);
113
- bufptr += resultLen;
114
- }
115
- else
116
- {
117
- memcpy(bufptr, (const char*)data, resultLen);
118
- bufptr += resultLen;
119
- }
120
- }
121
- if (P_MASK_DATALEN & paramMask)
122
- memcpy(datalenPtr, (const char*)&resultLen, sizeof(uint_td));
123
-
124
- if (tb && (P_MASK_KEYBUF & paramMask))
125
- {
126
- keylen = tb->keyPackCopy((uchar*)bufptr + sizeof(keylen_td));
127
- memcpy(bufptr, (const char*)&keylen, sizeof(keylen_td));
128
- bufptr += sizeof(keylen_td);
129
- bufptr += keylen;
130
- }
131
- unsigned int totallen = (unsigned int)(bufptr - buf);
132
- memcpy(buf, &totallen, sizeof(unsigned int));
133
- return totallen;
134
- }
135
-
136
- inline void parse(const char* p)
137
- {
138
- p += sizeof(unsigned int);
139
- paramMask = *((uchar_td*)p);
140
- p += sizeof(uchar_td);
141
- op = *((ushort_td*)p);
142
- p += sizeof(ushort_td);
143
-
144
-
145
- if (P_MASK_POSBLK & paramMask)
146
- {
147
- pbk = (posblk*)p;
148
- p += POSBLK_SIZE;
149
- }
150
- if (P_MASK_DATALEN & paramMask)
151
- {
152
- datalen = (uint_td*)p;
153
- p += sizeof(uint_td);
154
- }
155
- if (P_MASK_EX_SENDLEN & paramMask)
156
- {
157
- data = (void_td*)p;
158
- p += (*(ushort_td*)p);
159
-
160
- }
161
- else if (P_MASK_DATA & paramMask)
162
- {
163
- data = (void_td*)p;
164
- p += *datalen;
165
- }
166
- if (P_MASK_KEYBUF & paramMask)
167
- {
168
- keylen = *((keylen_td*)p);
169
- p += sizeof(keylen_td);
170
- keybuf = (void_td*)p;
171
- p += keylen + 1;//null terminate for server
172
- }
173
- if (P_MASK_KEYNUM & paramMask)
174
- {
175
- keyNum = *((char_td*)p);
176
- p += sizeof(char_td);
177
- }
178
- cid = *((ushort_td*)p);
179
- p += sizeof(ushort_td);
180
-
181
- if (paramMask & P_MASK_BLOBBODY)
182
- {
183
- blobHeader = (const bzs::db::blobHeader*)p;
184
- if (blobHeader->rows)
185
- blobHeader->resetCur();
186
- }
187
- else
188
- blobHeader = NULL;
189
-
190
- }
45
+ ushort_td cid;
46
+ void clear()
47
+ {
48
+ bzs::db::protocol::tdap::request::clear();
49
+ cid = 0;
50
+ }
51
+
52
+ request() : bzs::db::protocol::tdap::request(), cid(0) {}
53
+
54
+ inline unsigned int serializeForExt(engine::mysql::table* tb,
55
+ netsvc::server::netWriter* nw)
56
+ {
57
+ // The result contents is copied or sent allready.
58
+
59
+ paramMask = nw->getParamMask(tb->blobFields() != 0);
60
+ unsigned int allreadysent = nw->allreadySent();
61
+ nw->writeHeadar(paramMask, result);
62
+
63
+ if (paramMask & P_MASK_KEYBUF)
64
+ {
65
+ keylen = tb->keyPackCopy((uchar*)nw->curPtr() + sizeof(keylen_td));
66
+ nw->write((const char*)&keylen, sizeof(keylen_td));
67
+ nw->write(NULL, keylen, netsvc::server::netWriter::curSeekOnly);
68
+ }
69
+ // write final ret
70
+ if (paramMask & P_MASK_FINALRET)
71
+ {
72
+ nw->write((const char*)&result, sizeof(short_td));
73
+ resltPtr = (short_td*)(nw->curPtr() - 2);
74
+ }
75
+ unsigned int* totalLen = (unsigned int*)nw->ptr();
76
+ *totalLen = nw->resultLen();
77
+
78
+ return *totalLen - allreadysent;
79
+ }
80
+
81
+ inline unsigned int serialize(engine::mysql::table* tb, char* buf)
82
+ {
83
+ char* p = buf;
84
+ char* datalenPtr = NULL;
85
+
86
+ p += sizeof(unsigned int); // space of totalLen
87
+
88
+ memcpy(p, (const char*)(&paramMask), sizeof(ushort_td));
89
+ p += sizeof(ushort_td);
90
+
91
+ memcpy(p, (const char*)(&result), sizeof(short_td));
92
+ resltPtr = (short_td*)p;
93
+ p += sizeof(short_td);
94
+
95
+ if (P_MASK_POSBLK & paramMask)
96
+ {
97
+ memcpy(p, (const char*)pbk, POSBLK_SIZE);
98
+ p += POSBLK_SIZE;
99
+ }
100
+
101
+ if (P_MASK_DATALEN & paramMask)
102
+ {
103
+ datalenPtr = p;
104
+ p += sizeof(uint_td);
105
+ }
106
+
107
+ if (P_MASK_DATA & paramMask)
108
+ {
109
+ if (tb && (data == tb->record()))
110
+ resultLen = tb->recordPackCopy(p, 0);
111
+ else
112
+ memcpy(p, (const char*)data, resultLen);
113
+ p += resultLen;
114
+ }
115
+
116
+ if (P_MASK_DATALEN & paramMask)
117
+ memcpy(datalenPtr, (const char*)&resultLen, sizeof(uint_td));
118
+
119
+ if (tb && (P_MASK_KEYBUF & paramMask))
120
+ {
121
+ keylen = tb->keyPackCopy((uchar*)p + sizeof(keylen_td));
122
+ memcpy(p, (const char*)&keylen, sizeof(keylen_td));
123
+ p += sizeof(keylen_td);
124
+ p += keylen;
125
+ }
126
+ unsigned int totallen = (unsigned int)(p - buf);
127
+ memcpy(buf, &totallen, sizeof(unsigned int));
128
+ return totallen;
129
+ }
130
+
131
+ inline void parse(const char* p)
132
+ {
133
+ clear();
134
+ p += sizeof(unsigned int);
135
+ paramMask = *((ushort_td*)p);
136
+ p += sizeof(ushort_td);
137
+ op = *((ushort_td*)p);
138
+ p += sizeof(ushort_td);
139
+
140
+ if (P_MASK_POSBLK & paramMask)
141
+ {
142
+ pbk = (posblk*)p;
143
+ p += POSBLK_SIZE;
144
+ }
145
+ if (P_MASK_DATALEN & paramMask)
146
+ {
147
+ datalen = (uint_td*)p;
148
+ p += sizeof(uint_td);
149
+ }
150
+
151
+ if (P_MASK_EX_SENDLEN & paramMask)
152
+ {
153
+ data = (void_td*)p;
154
+ int v = *((int*)p);
155
+ v &= 0xFFFFFFF; // 28bit
156
+ p += v;
157
+ }
158
+ else if (P_MASK_DATA & paramMask)
159
+ {
160
+ data = (void_td*)p;
161
+ p += *datalen;
162
+ }
163
+ if (P_MASK_KEYBUF & paramMask)
164
+ {
165
+ keylen = *((keylen_td*)p);
166
+ p += sizeof(keylen_td);
167
+ keybuf = (void_td*)p;
168
+ p += keylen + 1; // null terminate for server
169
+ }
170
+ if (P_MASK_KEYNUM & paramMask)
171
+ {
172
+ keyNum = *((char_td*)p);
173
+ p += sizeof(char_td);
174
+ }
175
+ cid = *((ushort_td*)p);
176
+ p += sizeof(ushort_td);
177
+
178
+ if (paramMask & P_MASK_BLOBBODY)
179
+ {
180
+ blobHeader = (const bzs::db::blobHeader*)p;
181
+ if (blobHeader->rows)
182
+ blobHeader->resetCur();
183
+ }
184
+ else
185
+ blobHeader = NULL;
186
+ }
191
187
  };
192
188
 
189
+ } // namespace mysql
190
+ } // namespace protocol
191
+ } // namespace db
192
+ } // namespace tdap
193
+ } // namespace bzs
193
194
 
194
-
195
- }//namespace mysql
196
- }//namespace protocol
197
- }//namespace db
198
- }//namespace tdap
199
- }//namespace bzs
200
-
201
-
202
- #endif //BZS_DB_PROTOCOL_TDAP_MYSQL_REQUSET_H
195
+ #endif // BZS_DB_PROTOCOL_TDAP_MYSQL_REQUSET_H