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.
- checksums.yaml +4 -4
- data/BUILD_UNIX-JA +46 -67
- data/BUILD_WIN-JA +106 -63
- data/CMakeLists.txt +40 -15
- data/README +219 -75
- data/README-JA +207 -76
- data/README_ORMSRCGEN +118 -0
- data/README_ORMSRCGEN-JA +115 -0
- data/bin/common/tdclc_32_2_0.dll +0 -0
- data/bin/common/tdclc_64_2_0.dll +0 -0
- data/build/common/check_for_link_iconv.cmake +18 -14
- data/build/common/create_symlink.cmake.in +25 -0
- data/build/common/get_boost_libs.cmake +23 -23
- data/build/common/options.cmake +0 -66
- data/build/common/smart_install.cmake +3 -3
- data/build/common/transactd.rc.in +15 -5
- data/build/common/transactd_cl_common.cmake +37 -18
- data/build/common/transactd_cl_output.cmake +55 -13
- data/build/common/transactd_common.cmake +108 -31
- data/build/swig/php/generate.cmake.in +15 -17
- data/build/swig/php/generate.cmd.in +15 -9
- data/build/swig/php/php.swg +124 -82
- data/build/swig/php/transactd.no_yield.php +4494 -0
- data/build/swig/php/transactd.no_yield.php.git.patch +685 -0
- data/build/swig/php/transactd.no_yield.php.patch +685 -0
- data/build/swig/php/transactd.yield.php +4461 -0
- data/build/swig/php/transactd.yield.php.git.patch +652 -0
- data/build/swig/php/transactd.yield.php.patch +652 -0
- data/build/swig/referencecounter.h +79 -0
- data/build/swig/ruby/ruby.swg +226 -76
- data/build/swig/ruby/threadBlockRegionWrapper.h +71 -0
- data/build/swig/ruby/without_gvl.swg +87 -0
- data/build/swig/tdcl.i +659 -170
- data/build/swig/validatablepointer.h +91 -0
- data/build/tdclc/CMakeLists.txt +49 -34
- data/build/tdclc/{tdclc_64.cbproj → tdclc.cbproj} +65 -20
- data/build/tdclc/tdclc.rc +0 -0
- data/build/tdclcpp/CMakeLists.txt +84 -20
- data/build/tdclcpp/tdclcpp.rc +0 -0
- data/build/tdclcpp/{tdclcpp_bcb_64.cbproj → tdclcpp_bc.cbproj} +168 -44
- data/build/tdclrb/CMakeLists.txt +84 -66
- data/build/tdclrb/bldgem/extconf.rb +28 -3
- data/build/tdclrb/gem/helper.rb +11 -1
- data/build/tdclrb/gem_output.cmake +20 -16
- data/index_ja.html +15 -0
- data/source/bzs/db/IBlobBuffer.h +15 -17
- data/source/bzs/db/blobBuffer.h +186 -140
- data/source/bzs/db/blobStructs.h +37 -37
- data/source/bzs/db/engine/mysql/IReadRecords.h +34 -34
- data/source/bzs/db/engine/mysql/bookmark.h +150 -147
- data/source/bzs/db/engine/mysql/database.cpp +1721 -1526
- data/source/bzs/db/engine/mysql/database.h +608 -370
- data/source/bzs/db/engine/mysql/dbManager.cpp +213 -201
- data/source/bzs/db/engine/mysql/dbManager.h +115 -104
- data/source/bzs/db/engine/mysql/errorMessage.cpp +49 -50
- data/source/bzs/db/engine/mysql/errorMessage.h +25 -26
- data/source/bzs/db/engine/mysql/fieldAccess.h +55 -61
- data/source/bzs/db/engine/mysql/mydebuglog.cpp +326 -292
- data/source/bzs/db/engine/mysql/mydebuglog.h +63 -55
- data/source/bzs/db/engine/mysql/mysqlInternal.h +182 -125
- data/source/bzs/db/engine/mysql/mysqlThd.cpp +121 -121
- data/source/bzs/db/engine/mysql/mysqlThd.h +20 -20
- data/source/bzs/db/engine/mysql/percentageKey.h +241 -228
- data/source/bzs/db/protocol/ICommandExecuter.h +18 -17
- data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +543 -514
- data/source/bzs/db/protocol/hs/hsCommandExecuter.h +155 -158
- data/source/bzs/db/protocol/tdap/btrDate.cpp +213 -180
- data/source/bzs/db/protocol/tdap/btrDate.h +39 -37
- data/source/bzs/db/protocol/tdap/client/activeTable.cpp +173 -0
- data/source/bzs/db/protocol/tdap/client/activeTable.h +165 -0
- data/source/bzs/db/protocol/tdap/client/activeTableImple.h +370 -0
- data/source/bzs/db/protocol/tdap/client/bulkInsert.h +13 -23
- data/source/bzs/db/protocol/tdap/client/client.cpp +81 -68
- data/source/bzs/db/protocol/tdap/client/client.h +361 -320
- data/source/bzs/db/protocol/tdap/client/connMgr.cpp +17 -22
- data/source/bzs/db/protocol/tdap/client/connMgr.h +17 -19
- data/source/bzs/db/protocol/tdap/client/connectionPool.cpp +243 -0
- data/source/bzs/db/protocol/tdap/client/connectionPool.h +109 -0
- data/source/bzs/db/protocol/tdap/client/database.cpp +327 -219
- data/source/bzs/db/protocol/tdap/client/database.h +141 -118
- data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +60 -62
- data/source/bzs/db/protocol/tdap/client/databaseManager.h +255 -0
- data/source/bzs/db/protocol/tdap/client/dbDef.cpp +315 -202
- data/source/bzs/db/protocol/tdap/client/dbDef.h +40 -32
- data/source/bzs/db/protocol/tdap/client/dllmain.cpp +390 -371
- data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +148 -56
- data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +149 -57
- data/source/bzs/db/protocol/tdap/client/export.h +35 -0
- data/source/bzs/db/protocol/tdap/client/field.cpp +1985 -0
- data/source/bzs/db/protocol/tdap/client/field.h +393 -0
- data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +14 -14
- data/source/bzs/db/protocol/tdap/client/fieldDDF.h +11 -14
- data/source/bzs/db/protocol/tdap/client/fieldNameAlias.cpp +123 -0
- data/source/bzs/db/protocol/tdap/client/fieldNameAlias.h +58 -0
- data/source/bzs/db/protocol/tdap/client/fields.h +178 -0
- data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +13 -16
- data/source/bzs/db/protocol/tdap/client/fileDDF.h +11 -17
- data/source/bzs/db/protocol/tdap/client/filter.h +423 -259
- data/source/bzs/db/protocol/tdap/client/groupComp.h +117 -0
- data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +818 -0
- data/source/bzs/db/protocol/tdap/client/groupQuery.h +281 -0
- data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +14 -17
- data/source/bzs/db/protocol/tdap/client/indexDDF.h +11 -14
- data/source/bzs/db/protocol/tdap/client/memRecord.cpp +231 -0
- data/source/bzs/db/protocol/tdap/client/memRecord.h +145 -0
- data/source/bzs/db/protocol/tdap/client/memRecordset.cpp +448 -0
- data/source/bzs/db/protocol/tdap/client/memRecordset.h +159 -0
- data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +300 -173
- data/source/bzs/db/protocol/tdap/client/nsDatabase.h +53 -36
- data/source/bzs/db/protocol/tdap/client/nsTable.cpp +171 -128
- data/source/bzs/db/protocol/tdap/client/nsTable.h +121 -87
- data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +173 -0
- data/source/bzs/db/protocol/tdap/client/recordset.cpp +209 -0
- data/source/bzs/db/protocol/tdap/client/recordset.h +86 -0
- data/source/bzs/db/protocol/tdap/client/recordsetImple.h +596 -0
- data/source/bzs/db/protocol/tdap/client/request.h +227 -170
- data/source/bzs/db/protocol/tdap/client/serializer.cpp +1288 -0
- data/source/bzs/db/protocol/tdap/client/serializer.h +295 -0
- data/source/bzs/db/protocol/tdap/client/sharedData.cpp +9 -12
- data/source/bzs/db/protocol/tdap/client/sharedData.h +18 -16
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +494 -473
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +51 -53
- data/source/bzs/db/protocol/tdap/client/stringConverter.h +214 -148
- data/source/bzs/db/protocol/tdap/client/table.cpp +929 -1665
- data/source/bzs/db/protocol/tdap/client/table.h +413 -87
- data/source/bzs/db/protocol/tdap/client/trdboostapi.h +642 -534
- data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +25 -40
- data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +11 -15
- data/source/bzs/db/protocol/tdap/client/trdormapi.h +378 -437
- data/source/bzs/db/protocol/tdap/client/trnsctcl.def +1 -1
- data/source/bzs/db/protocol/tdap/fieldComp.h +127 -0
- data/source/bzs/db/protocol/tdap/myDateTime.cpp +352 -345
- data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +75 -78
- data/source/bzs/db/protocol/tdap/mysql/characterset.h +18 -19
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +216 -199
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +23 -14
- data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +354 -314
- data/source/bzs/db/protocol/tdap/mysql/debuglog.h +57 -47
- data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +905 -739
- data/source/bzs/db/protocol/tdap/mysql/request.h +152 -159
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1044 -879
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +87 -81
- data/source/bzs/db/protocol/tdap/tdapRequest.h +162 -130
- data/source/bzs/db/protocol/tdap/tdapSchema.cpp +368 -166
- data/source/bzs/db/protocol/tdap/tdapSchema.h +702 -566
- data/source/bzs/db/protocol/tdap/tdapcapi.h +387 -353
- data/source/bzs/db/transactd/appBuilderImple.h +21 -20
- data/source/bzs/db/transactd/appModule.cpp +350 -98
- data/source/bzs/db/transactd/appModule.h +31 -37
- data/source/bzs/db/transactd/connManager.cpp +138 -135
- data/source/bzs/db/transactd/connManager.h +28 -21
- data/source/bzs/db/transactd/connectionRecord.h +39 -39
- data/source/bzs/db/transactd/transactd.cpp +217 -203
- data/source/bzs/env/boost_bcb_link.h +131 -0
- data/source/bzs/env/compiler.h +136 -79
- data/source/bzs/env/crosscompile.cpp +57 -57
- data/source/bzs/env/crosscompile.h +130 -115
- data/source/bzs/env/fileopen.h +7 -8
- data/source/bzs/env/mbcswchrLinux.cpp +4 -9
- data/source/bzs/env/mbcswchrLinux.h +37 -34
- data/source/bzs/env/tcharMinGW.h +59 -0
- data/source/bzs/env/tstring.h +90 -95
- data/source/bzs/example/changeSchema.cpp +22 -23
- data/source/bzs/example/changeSchema_c.cpp +22 -24
- data/source/bzs/example/connection_pool_c.cpp +49 -104
- data/source/bzs/example/createDatabase.cpp +40 -47
- data/source/bzs/example/createDatabase_c.cpp +38 -43
- data/source/bzs/example/deleteRecords.cpp +10 -15
- data/source/bzs/example/deleteRecords_c.cpp +10 -14
- data/source/bzs/example/dropDatabase.cpp +3 -9
- data/source/bzs/example/dropDatabase_c.cpp +5 -6
- data/source/bzs/example/insertRecords.cpp +37 -29
- data/source/bzs/example/insertRecords_c.cpp +19 -25
- data/source/bzs/example/ormap_c.cpp +621 -0
- data/source/bzs/example/queryData.cpp +371 -0
- data/source/bzs/example/queryData.h +16 -0
- data/source/bzs/example/query_c.cpp +109 -0
- data/source/bzs/example/readRecords.cpp +27 -27
- data/source/bzs/example/readRecords_c.cpp +25 -23
- data/source/bzs/example/updateRecords.cpp +16 -21
- data/source/bzs/example/updateRecords_c.cpp +8 -12
- data/source/bzs/example/update_with_transaction.cpp +21 -24
- data/source/bzs/example/update_with_transaction_c.cpp +12 -15
- data/source/bzs/example/useORMRecord.cpp +177 -0
- data/source/bzs/netsvc/client/tcpClient.cpp +167 -156
- data/source/bzs/netsvc/client/tcpClient.h +541 -489
- data/source/bzs/netsvc/server/IAppModule.h +119 -32
- data/source/bzs/netsvc/server/iserver.h +21 -23
- data/source/bzs/netsvc/server/serverCpt.cpp +421 -391
- data/source/bzs/netsvc/server/serverCpt.h +41 -43
- data/source/bzs/netsvc/server/serverPipe.cpp +580 -565
- data/source/bzs/netsvc/server/serverPipe.h +44 -45
- data/source/bzs/netsvc/server/serverTpool.cpp +333 -303
- data/source/bzs/netsvc/server/serverTpool.h +38 -43
- data/source/bzs/rtl/benchmark.cpp +91 -31
- data/source/bzs/rtl/benchmark.h +76 -22
- data/source/bzs/rtl/datetime.cpp +231 -233
- data/source/bzs/rtl/datetime.h +16 -16
- data/source/bzs/rtl/debuglog.cpp +48 -51
- data/source/bzs/rtl/debuglog.h +55 -44
- data/source/bzs/rtl/exception.h +55 -48
- data/source/bzs/rtl/stl_uty.cpp +27 -28
- data/source/bzs/rtl/stl_uty.h +28 -29
- data/source/bzs/rtl/stringBuffers.cpp +8 -6
- data/source/bzs/rtl/stringBuffers.h +16 -9
- data/source/bzs/rtl/strtrim.cpp +90 -91
- data/source/bzs/rtl/strtrim.h +14 -16
- data/source/bzs/test/tdclatl/bench_query_atl.js +647 -0
- data/source/bzs/test/tdclatl/bench_tdclatl.js +303 -303
- data/source/bzs/test/tdclatl/test_query_atl.js +669 -0
- data/source/bzs/test/tdclphp/bench.php +357 -0
- data/source/bzs/test/tdclphp/transactd_Test.php +907 -303
- data/source/bzs/test/tdclphp/transactd_blob_Test.php +21 -49
- data/source/bzs/test/tdclphp/transactd_datetime_Test.php +41 -75
- data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +23 -37
- data/source/bzs/test/tdclphp/transactd_pool_Test.php +120 -0
- data/source/bzs/test/tdclrb/bench_tdclcpp.rb +4 -6
- data/source/bzs/test/tdclrb/prepare.rb +15 -12
- data/source/bzs/test/tdclrb/transactd_blob_spec.rb +29 -32
- data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -29
- data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +18 -19
- data/source/bzs/test/tdclrb/transactd_pool_spec.rb +107 -0
- data/source/bzs/test/tdclrb/transactd_spec.rb +734 -142
- data/source/bzs/test/transactdBench/query_bench.cpp +156 -0
- data/source/bzs/test/transactdBench/scaling_bench.cpp +265 -0
- data/source/bzs/test/transactdBench/transactdBench.cpp +107 -83
- data/source/bzs/test/transactdBench/transactdBench2.cpp +122 -83
- data/source/bzs/test/transactdBench/workerBase.cpp +5 -0
- data/source/bzs/test/transactdBench/workerBase.h +88 -0
- data/source/bzs/test/transactdBench/workerMySQLImple.h +333 -0
- data/source/bzs/test/transactdBench/workerTransactdImple.h +201 -0
- data/source/bzs/test/trdclengn/test_blob.cpp +121 -73
- data/source/bzs/test/trdclengn/test_trdclengn.cpp +1244 -426
- data/source/global/ormsrcgen/confParam.h +80 -0
- data/source/global/ormsrcgen/fieldName.cpp +77 -0
- data/source/global/ormsrcgen/fieldName.h +43 -0
- data/source/global/ormsrcgen/main.cpp +196 -0
- data/source/global/ormsrcgen/srcgen.cpp +763 -0
- data/source/global/ormsrcgen/srcgen.h +72 -0
- data/source/global/ormsrcgen/template/fieldNameList_sample.txt +2 -0
- data/source/global/ormsrcgen/template/ormDataClass_template.cpp +48 -0
- data/source/global/ormsrcgen/template/ormDataClass_template.h +34 -0
- data/source/global/ormsrcgen/template/ormMapClass_template.cpp +51 -0
- data/source/global/ormsrcgen/template/ormMapClass_template.h +62 -0
- data/source/global/ormsrcgen/template/template.cnf +38 -0
- data/source/global/querystmts/querystmts.cpp +237 -0
- data/source/global/tdclatl/ConnectParams.cpp +77 -0
- data/source/global/tdclatl/ConnectParams.h +70 -0
- data/source/global/tdclatl/Database.cpp +132 -128
- data/source/global/tdclatl/Database.h +60 -49
- data/source/global/tdclatl/DbDef.cpp +68 -64
- data/source/global/tdclatl/DbDef.h +36 -36
- data/source/global/tdclatl/Field.cpp +12 -17
- data/source/global/tdclatl/Field.h +15 -12
- data/source/global/tdclatl/FieldDef.cpp +75 -36
- data/source/global/tdclatl/FieldDef.h +38 -19
- data/source/global/tdclatl/FieldDefs.cpp +74 -0
- data/source/global/tdclatl/FieldDefs.h +56 -0
- data/source/global/tdclatl/FieldNames.cpp +99 -0
- data/source/global/tdclatl/FieldNames.h +66 -0
- data/source/global/tdclatl/Flags.cpp +75 -37
- data/source/global/tdclatl/Flags.h +13 -12
- data/source/global/tdclatl/GroupQuery.cpp +119 -0
- data/source/global/tdclatl/GroupQuery.h +65 -0
- data/source/global/tdclatl/KeyDef.cpp +15 -14
- data/source/global/tdclatl/KeyDef.h +20 -17
- data/source/global/tdclatl/KeySegment.cpp +13 -12
- data/source/global/tdclatl/PooledDbManager.cpp +223 -0
- data/source/global/tdclatl/PooledDbManager.h +76 -0
- data/source/global/tdclatl/QueryBase.cpp +206 -127
- data/source/global/tdclatl/QueryBase.h +55 -59
- data/source/global/tdclatl/Record.cpp +214 -0
- data/source/global/tdclatl/Record.h +96 -0
- data/source/global/tdclatl/Recordset.cpp +278 -0
- data/source/global/tdclatl/Recordset.h +83 -0
- data/source/global/tdclatl/RecordsetQuery.cpp +118 -0
- data/source/global/tdclatl/RecordsetQuery.h +126 -0
- data/source/global/tdclatl/Table.cpp +57 -60
- data/source/global/tdclatl/Table.h +32 -29
- data/source/global/tdclatl/TableDef.cpp +63 -62
- data/source/global/tdclatl/TableDef.h +20 -22
- data/source/global/tdclatl/TdVersion.cpp +3 -3
- data/source/global/tdclatl/TdVersion.h +15 -11
- data/source/global/tdclatl/_IDatabaseEvents_CP.h +99 -92
- data/source/global/tdclatl/activeTable.cpp +355 -0
- data/source/global/tdclatl/activeTable.h +79 -0
- data/source/global/tdclatl/dllmain.cpp +4 -3
- data/source/global/tdclatl/dllmain.h +7 -6
- data/source/global/tdclatl/keySegment.h +22 -18
- data/source/global/tdclatl/resource.h +0 -0
- data/source/global/tdclatl/stdafx.h +6 -4
- data/source/global/tdclatl/targetver.h +0 -1
- data/source/global/tdclatl/tdclatl.cpp +10 -5
- data/source/global/tdclatl/tdclatl.idl +530 -14
- data/source/linux/charsetConvert.h +78 -79
- data/source/linux/linuxTypes.h +9 -12
- data/source/linux/tchar.h +168 -166
- data/transactd.gemspec +24 -16
- metadata +98 -12
- data/bin/common/tdclc_32_1_2.dll +0 -0
- data/bin/common/tdclc_64_1_2.dll +0 -0
- data/build/tdclc/tdclc_32.cbproj +0 -173
- data/build/tdclcpp/tdclcpp_bcb_32.cbproj +0 -232
- data/build/tdclrb/GEM_VERSION +0 -3
- data/source/bzs/db/protocol/tdap/client/filter.cpp +0 -43
- data/source/bzs/example/useORM.cpp +0 -585
|
@@ -16,29 +16,21 @@
|
|
|
16
16
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
17
17
|
02111-1307, USA.
|
|
18
18
|
================================================================= */
|
|
19
|
-
#include <bzs/env/tstring.h>
|
|
20
|
-
#pragma hdrstop
|
|
21
|
-
|
|
22
|
-
|
|
23
19
|
#include "nsTable.h"
|
|
24
20
|
#include "nsDatabase.h"
|
|
25
21
|
#include "bulkInsert.h"
|
|
26
22
|
|
|
27
23
|
#include <limits.h>
|
|
28
|
-
#include <string.h>
|
|
24
|
+
#include <string.h> // Required for _fstrstr()
|
|
29
25
|
#include <stdio.h>
|
|
30
26
|
#include <stdlib.h>
|
|
31
27
|
#include <time.h>
|
|
32
28
|
#include <boost/filesystem.hpp>
|
|
33
29
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
30
|
#pragma package(smart_init)
|
|
39
31
|
|
|
40
32
|
/* TODO: To be support internal started transction with original flag.*/
|
|
41
|
-
#ifdef __x86_64__
|
|
33
|
+
#ifdef __x86_64__
|
|
42
34
|
#define MEM_FREED_MAGIC_NUMBER (nstimpl*)0x0FEEEFEEEFEEEFEEE
|
|
43
35
|
#else
|
|
44
36
|
#define MEM_FREED_MAGIC_NUMBER (nstimpl*)0x0FEEEFEEE
|
|
@@ -56,11 +48,12 @@ namespace client
|
|
|
56
48
|
|
|
57
49
|
struct nstimpl
|
|
58
50
|
{
|
|
59
|
-
nstimpl()
|
|
51
|
+
nstimpl()
|
|
52
|
+
: refCount(1), bulkIns(NULL), mode(0), shared(false), isOpen(false)
|
|
60
53
|
{
|
|
61
54
|
posblk[0] = 0x00;
|
|
62
55
|
}
|
|
63
|
-
|
|
56
|
+
int refCount;
|
|
64
57
|
bulkInsert* bulkIns;
|
|
65
58
|
nsdatabase* nsdb;
|
|
66
59
|
percentage_td percentage;
|
|
@@ -68,6 +61,7 @@ struct nstimpl
|
|
|
68
61
|
_TCHAR uri[MAX_PATH];
|
|
69
62
|
uchar_td posblk[POS_BLOCK_SIZE];
|
|
70
63
|
short tableid;
|
|
64
|
+
char_td mode;
|
|
71
65
|
bool shared;
|
|
72
66
|
bool isOpen;
|
|
73
67
|
};
|
|
@@ -75,15 +69,15 @@ struct nstimpl
|
|
|
75
69
|
// -----------------------------------------------------------------
|
|
76
70
|
// class nstable
|
|
77
71
|
// -----------------------------------------------------------------
|
|
78
|
-
extern
|
|
72
|
+
extern _TCHAR* getErrorMessageLocale(int errorCode, _TCHAR* buf, size_t size);
|
|
79
73
|
|
|
80
|
-
nstable::nstable(nsdatabase
|
|
74
|
+
nstable::nstable(nsdatabase* pbe)
|
|
81
75
|
{
|
|
82
76
|
m_impl = new nstimpl();
|
|
83
77
|
m_impl->nsdb = pbe;
|
|
84
78
|
|
|
85
|
-
|
|
86
|
-
|
|
79
|
+
// addref to nsdatabase
|
|
80
|
+
pbe->addref();
|
|
87
81
|
if (pbe->openTableCount() == nsdatabase::maxtables)
|
|
88
82
|
{
|
|
89
83
|
m_stat = STATUS_LMITS_MAX_TABLES;
|
|
@@ -100,7 +94,6 @@ nstable::nstable(nsdatabase *pbe)
|
|
|
100
94
|
m_write = true;
|
|
101
95
|
m_insart = true;
|
|
102
96
|
m_delete = true;
|
|
103
|
-
|
|
104
97
|
}
|
|
105
98
|
|
|
106
99
|
nstable::~nstable()
|
|
@@ -109,24 +102,26 @@ nstable::~nstable()
|
|
|
109
102
|
delete m_impl->bulkIns;
|
|
110
103
|
close();
|
|
111
104
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
105
|
+
if (!m_impl->shared)
|
|
106
|
+
{
|
|
107
|
+
m_impl->nsdb->unregisterTable(this);
|
|
108
|
+
m_impl->nsdb->release();
|
|
109
|
+
}
|
|
110
|
+
|
|
115
111
|
delete m_impl;
|
|
116
|
-
|
|
112
|
+
m_impl = MEM_FREED_MAGIC_NUMBER;
|
|
117
113
|
}
|
|
118
114
|
|
|
119
|
-
|
|
115
|
+
_TCHAR* nstable::getErrorMessage(int errorCode, _TCHAR* buf, size_t size)
|
|
120
116
|
{
|
|
121
117
|
return getErrorMessageLocale(errorCode, buf, size);
|
|
122
|
-
|
|
123
118
|
}
|
|
124
119
|
|
|
125
120
|
/* Key number is set by user.
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
121
|
+
KyeNum
|
|
122
|
+
- -1 = Unlock the record that specified by bm in multi records.
|
|
123
|
+
- -2 = Unlock all records
|
|
124
|
+
- �{ = Unlock single record.
|
|
130
125
|
*/
|
|
131
126
|
void nstable::unlock(bookmark_td bm)
|
|
132
127
|
{
|
|
@@ -138,23 +133,55 @@ void nstable::unlock(bookmark_td bm)
|
|
|
138
133
|
m_pdata = db;
|
|
139
134
|
}
|
|
140
135
|
|
|
141
|
-
|
|
136
|
+
bool nstable::isUseTransactd() const
|
|
137
|
+
{
|
|
138
|
+
return nsdb()->isUseTransactd();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
void nstable::seekByBookmark()
|
|
142
|
+
{
|
|
143
|
+
seekByBookmark(m_impl->bookmark);
|
|
144
|
+
}
|
|
142
145
|
|
|
143
|
-
const _TCHAR* nstable::uri() const
|
|
146
|
+
const _TCHAR* nstable::uri() const
|
|
147
|
+
{
|
|
148
|
+
return m_impl->uri;
|
|
149
|
+
}
|
|
144
150
|
|
|
145
|
-
const uchar_td* nstable::posblk() const
|
|
151
|
+
const uchar_td* nstable::posblk() const
|
|
152
|
+
{
|
|
153
|
+
return m_impl->posblk;
|
|
154
|
+
}
|
|
146
155
|
|
|
147
|
-
nsdatabase* nstable::nsdb() const
|
|
156
|
+
nsdatabase* nstable::nsdb() const
|
|
157
|
+
{
|
|
158
|
+
return m_impl->nsdb;
|
|
159
|
+
}
|
|
148
160
|
|
|
149
|
-
bulkInsert* nstable::bulkIns() const
|
|
161
|
+
bulkInsert* nstable::bulkIns() const
|
|
162
|
+
{
|
|
163
|
+
return m_impl->bulkIns;
|
|
164
|
+
}
|
|
150
165
|
|
|
151
|
-
void nstable::setIsOpen(bool v)
|
|
166
|
+
void nstable::setIsOpen(bool v)
|
|
167
|
+
{
|
|
168
|
+
m_impl->isOpen = v;
|
|
169
|
+
}
|
|
152
170
|
|
|
153
|
-
bool nstable::isOpen() const
|
|
171
|
+
bool nstable::isOpen() const
|
|
172
|
+
{
|
|
173
|
+
return m_impl->isOpen;
|
|
174
|
+
}
|
|
154
175
|
|
|
155
|
-
short nstable::tableid() const
|
|
176
|
+
short nstable::tableid() const
|
|
177
|
+
{
|
|
178
|
+
return m_impl->tableid;
|
|
179
|
+
}
|
|
156
180
|
|
|
157
|
-
void nstable::setTableid(short v)
|
|
181
|
+
void nstable::setTableid(short v)
|
|
182
|
+
{
|
|
183
|
+
m_impl->tableid = v;
|
|
184
|
+
}
|
|
158
185
|
|
|
159
186
|
void nstable::setShared()
|
|
160
187
|
{
|
|
@@ -164,35 +191,39 @@ void nstable::setShared()
|
|
|
164
191
|
|
|
165
192
|
int nstable::refCount() const
|
|
166
193
|
{
|
|
167
|
-
|
|
194
|
+
return m_impl->refCount;
|
|
168
195
|
}
|
|
169
196
|
|
|
170
197
|
void nstable::addref(void)
|
|
171
198
|
{
|
|
172
|
-
|
|
199
|
+
++m_impl->refCount;
|
|
173
200
|
}
|
|
174
201
|
|
|
175
202
|
void nstable::release()
|
|
176
203
|
{
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
204
|
+
|
|
205
|
+
/* If before called database::drop() database::close() etc then
|
|
206
|
+
nstable::destory called.
|
|
207
|
+
Client cache nstable pointer that is invalid.
|
|
208
|
+
It test by test method.
|
|
209
|
+
*/
|
|
210
|
+
try
|
|
211
|
+
{
|
|
212
|
+
if (test(this))
|
|
213
|
+
{
|
|
214
|
+
if (--m_impl->refCount == 0)
|
|
215
|
+
delete this;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
catch (...)
|
|
219
|
+
{
|
|
220
|
+
}
|
|
190
221
|
}
|
|
191
222
|
|
|
192
223
|
void nstable::destroy()
|
|
193
224
|
{
|
|
194
|
-
|
|
195
|
-
|
|
225
|
+
if (!m_impl->shared)
|
|
226
|
+
delete this;
|
|
196
227
|
}
|
|
197
228
|
|
|
198
229
|
void nstable::doClose()
|
|
@@ -306,6 +337,11 @@ void nstable::seekLessThan(bool orEqual, ushort_td LockBias)
|
|
|
306
337
|
onReadAfter();
|
|
307
338
|
}
|
|
308
339
|
|
|
340
|
+
char_td nstable::mode() const
|
|
341
|
+
{
|
|
342
|
+
return m_impl->mode;
|
|
343
|
+
}
|
|
344
|
+
|
|
309
345
|
void nstable::doOpen(const _TCHAR* name, char_td mode, const _TCHAR* ownerName)
|
|
310
346
|
{
|
|
311
347
|
void* svm_keybuf = m_keybuf;
|
|
@@ -324,7 +360,7 @@ void nstable::doOpen(const _TCHAR* name, char_td mode, const _TCHAR* ownerName)
|
|
|
324
360
|
else
|
|
325
361
|
#endif
|
|
326
362
|
if (m_impl->uri != name)
|
|
327
|
-
|
|
363
|
+
_tcscpy_s(m_impl->uri, MAX_PATH, name);
|
|
328
364
|
|
|
329
365
|
// for trnasctd
|
|
330
366
|
if (m_impl->nsdb->isTransactdUri(m_impl->uri))
|
|
@@ -336,8 +372,9 @@ void nstable::doOpen(const _TCHAR* name, char_td mode, const _TCHAR* ownerName)
|
|
|
336
372
|
}
|
|
337
373
|
}
|
|
338
374
|
|
|
339
|
-
char tmpName[MAX_PATH]={0x00};
|
|
340
|
-
const char* p = nsdatabase::toServerUri(tmpName, MAX_PATH, m_impl->uri,
|
|
375
|
+
char tmpName[MAX_PATH] = { 0x00 };
|
|
376
|
+
const char* p = nsdatabase::toServerUri(tmpName, MAX_PATH, m_impl->uri,
|
|
377
|
+
m_impl->nsdb->isUseTransactd());
|
|
341
378
|
m_keybuf = (void*)p;
|
|
342
379
|
m_keylen = (keylen_td)strlen(p) + 1;
|
|
343
380
|
|
|
@@ -346,25 +383,27 @@ void nstable::doOpen(const _TCHAR* name, char_td mode, const _TCHAR* ownerName)
|
|
|
346
383
|
else
|
|
347
384
|
m_keynum = mode;
|
|
348
385
|
|
|
349
|
-
char ownerNameBuf[OWNERNAME_SIZE+1] = {0x00};
|
|
386
|
+
char ownerNameBuf[OWNERNAME_SIZE + 1] = { 0x00 };
|
|
350
387
|
if (NULL != ownerName && 0x00 != ownerName[0])
|
|
351
388
|
{
|
|
352
|
-
const char*
|
|
353
|
-
m_pdata = (void*)
|
|
354
|
-
m_datalen = (uint_td)strlen(
|
|
389
|
+
const char* p2 = toChar(ownerNameBuf, ownerName, 22);
|
|
390
|
+
m_pdata = (void*)p2;
|
|
391
|
+
m_datalen = (uint_td)strlen(p2) + 1;
|
|
355
392
|
if (m_datalen > 11)
|
|
356
393
|
{
|
|
357
394
|
m_stat = STATUS_TOO_LONG_OWNERNAME;
|
|
358
395
|
return;
|
|
359
396
|
}
|
|
360
|
-
|
|
361
397
|
}
|
|
362
398
|
else
|
|
363
399
|
m_datalen = 0;
|
|
364
400
|
|
|
365
401
|
tdap(TD_OPENTABLE);
|
|
366
402
|
if (m_stat == STATUS_SUCCESS)
|
|
403
|
+
{
|
|
367
404
|
m_impl->isOpen = true;
|
|
405
|
+
m_impl->mode = mode;
|
|
406
|
+
}
|
|
368
407
|
m_keybuf = svm_keybuf;
|
|
369
408
|
m_keynum = svm_keynum;
|
|
370
409
|
m_keylen = svm_keybuflen;
|
|
@@ -379,8 +418,6 @@ void nstable::doUpdate(eUpdateType type)
|
|
|
379
418
|
return;
|
|
380
419
|
}
|
|
381
420
|
|
|
382
|
-
|
|
383
|
-
|
|
384
421
|
if (onUpdateCheck(type) == false)
|
|
385
422
|
return;
|
|
386
423
|
|
|
@@ -390,7 +427,7 @@ void nstable::doUpdate(eUpdateType type)
|
|
|
390
427
|
{
|
|
391
428
|
if (trnCount < nsdb()->enableTrn())
|
|
392
429
|
nsdb()->abortTrn();
|
|
393
|
-
return
|
|
430
|
+
return;
|
|
394
431
|
}
|
|
395
432
|
char_td keynum = m_keynum;
|
|
396
433
|
m_keylen = m_keybuflen;
|
|
@@ -416,7 +453,7 @@ void nstable::doDel(bool inkey)
|
|
|
416
453
|
m_stat = STATUS_NO_ACR_UPDATE_DELETE;
|
|
417
454
|
return;
|
|
418
455
|
}
|
|
419
|
-
if (onDeleteCheck(inkey)==false)
|
|
456
|
+
if (onDeleteCheck(inkey) == false)
|
|
420
457
|
return;
|
|
421
458
|
|
|
422
459
|
m_datalen = m_buflen;
|
|
@@ -441,7 +478,6 @@ void nstable::doDel(bool inkey)
|
|
|
441
478
|
}
|
|
442
479
|
tdap(TD_REC_DELETE);
|
|
443
480
|
}
|
|
444
|
-
|
|
445
481
|
}
|
|
446
482
|
|
|
447
483
|
void nstable::onInsertAfter(int beforeResult)
|
|
@@ -473,7 +509,8 @@ ushort_td nstable::doInsert(bool ncc)
|
|
|
473
509
|
m_stat = STATUS_INVALID_VALLEN;
|
|
474
510
|
m_datalen = getWriteImageLen();
|
|
475
511
|
if (m_impl->bulkIns)
|
|
476
|
-
ins_rows =
|
|
512
|
+
ins_rows =
|
|
513
|
+
m_impl->bulkIns->insert((const char*)data(), m_datalen, this);
|
|
477
514
|
else
|
|
478
515
|
{
|
|
479
516
|
tdap(TD_REC_INSERT);
|
|
@@ -612,7 +649,6 @@ void nstable::seekByPercentage()
|
|
|
612
649
|
tdap(TD_MOVE_PER);
|
|
613
650
|
if (m_stat == STATUS_SUCCESS)
|
|
614
651
|
onReadAfter();
|
|
615
|
-
|
|
616
652
|
}
|
|
617
653
|
|
|
618
654
|
void nstable::seekByPercentage(percentage_td pc)
|
|
@@ -627,7 +663,6 @@ void nstable::seekByPercentage(percentage_td pc)
|
|
|
627
663
|
tdap(TD_MOVE_PER);
|
|
628
664
|
if (m_stat == STATUS_SUCCESS)
|
|
629
665
|
onReadAfter();
|
|
630
|
-
|
|
631
666
|
}
|
|
632
667
|
|
|
633
668
|
void nstable::setOwnerName(const _TCHAR* Owner_p, char_td mode)
|
|
@@ -660,7 +695,10 @@ void nstable::setOwnerName(const _TCHAR* Owner_p, char_td mode)
|
|
|
660
695
|
m_keynum = svm_keynum;
|
|
661
696
|
}
|
|
662
697
|
|
|
663
|
-
void nstable::clearOwnerName()
|
|
698
|
+
void nstable::clearOwnerName()
|
|
699
|
+
{
|
|
700
|
+
tdap(TD_CLEAR_OWNERNAME);
|
|
701
|
+
}
|
|
664
702
|
|
|
665
703
|
void nstable::stats(void* dataBuf, uint_td len, bool estimate)
|
|
666
704
|
{
|
|
@@ -684,9 +722,9 @@ void nstable::stats(void* dataBuf, uint_td len, bool estimate)
|
|
|
684
722
|
m_keynum = svm_keynum;
|
|
685
723
|
}
|
|
686
724
|
|
|
687
|
-
uint_td nstable::doRecordCount(bool estimate, bool fromCurrent
|
|
725
|
+
uint_td nstable::doRecordCount(bool estimate, bool fromCurrent)
|
|
688
726
|
{
|
|
689
|
-
fileSpec
|
|
727
|
+
fileSpec* fs;
|
|
690
728
|
uint_td Count;
|
|
691
729
|
|
|
692
730
|
fs = (fileSpec*)malloc(1920);
|
|
@@ -698,7 +736,7 @@ uint_td nstable::doRecordCount(bool estimate, bool fromCurrent, eFindType /*dire
|
|
|
698
736
|
|
|
699
737
|
ushort_td nstable::recordLength()
|
|
700
738
|
{
|
|
701
|
-
fileSpec
|
|
739
|
+
fileSpec* fs;
|
|
702
740
|
ushort_td len = 0;
|
|
703
741
|
|
|
704
742
|
fs = (fileSpec*)malloc(1920);
|
|
@@ -716,7 +754,6 @@ void nstable::doCreateIndex(bool specifyKeyNum)
|
|
|
716
754
|
tdap(TD_BUILD_INDEX);
|
|
717
755
|
if (specifyKeyNum)
|
|
718
756
|
m_keynum -= ((uchar_td)0x80);
|
|
719
|
-
|
|
720
757
|
}
|
|
721
758
|
|
|
722
759
|
void nstable::dropIndex(bool NoRenumber)
|
|
@@ -726,7 +763,6 @@ void nstable::dropIndex(bool NoRenumber)
|
|
|
726
763
|
tdap(TD_DROP_INDEX);
|
|
727
764
|
if (NoRenumber)
|
|
728
765
|
m_keynum -= ((uchar_td)0x80);
|
|
729
|
-
|
|
730
766
|
}
|
|
731
767
|
|
|
732
768
|
short_td nstable::doBtrvErr(HWND hWnd, _TCHAR* retbuf)
|
|
@@ -757,72 +793,77 @@ void nstable::tdap(ushort_td op)
|
|
|
757
793
|
return;
|
|
758
794
|
}
|
|
759
795
|
BTRCALLID_PTR func = m_impl->nsdb->btrvFunc();
|
|
760
|
-
m_stat = func(m_op, m_impl->posblk, m_pdata, &m_datalen, m_keybuf,
|
|
761
|
-
|
|
796
|
+
m_stat = func(m_op, m_impl->posblk, m_pdata, &m_datalen, m_keybuf,
|
|
797
|
+
m_keylen, m_keynum, m_impl->nsdb->clientID());
|
|
762
798
|
|
|
763
799
|
// Wait for record lock or file lock.
|
|
764
|
-
//LoopCount++;
|
|
800
|
+
// LoopCount++;
|
|
765
801
|
switch (m_stat)
|
|
766
802
|
{
|
|
767
|
-
case STATUS_LOCK_ERROR:
|
|
803
|
+
case STATUS_LOCK_ERROR:
|
|
804
|
+
Sleep(m_impl->nsdb->lockWaitTime());
|
|
768
805
|
break;
|
|
769
|
-
case STATUS_FILE_LOCKED:
|
|
806
|
+
case STATUS_FILE_LOCKED:
|
|
807
|
+
Sleep(m_impl->nsdb->lockWaitTime());
|
|
770
808
|
break;
|
|
771
809
|
|
|
772
|
-
default:
|
|
810
|
+
default:
|
|
811
|
+
return;
|
|
773
812
|
}
|
|
774
|
-
}
|
|
775
|
-
|
|
776
|
-
&& (m_impl->nsdb->lockWaitCount() != LoopCount++));
|
|
777
|
-
|
|
813
|
+
} while ((m_stat != STATUS_SUCCESS) &&
|
|
814
|
+
(m_impl->nsdb->lockWaitCount() != LoopCount++));
|
|
778
815
|
}
|
|
779
816
|
|
|
780
817
|
/* tdap error handling
|
|
781
818
|
*/
|
|
782
|
-
short_td nstable::tdapErr(HWND hWnd, short_td status, const _TCHAR* TableName,
|
|
819
|
+
short_td nstable::tdapErr(HWND hWnd, short_td status, const _TCHAR* TableName,
|
|
820
|
+
_TCHAR* retbuf)
|
|
783
821
|
{
|
|
784
|
-
if (status == STATUS_SUCCESS)
|
|
785
|
-
|
|
786
|
-
else if (status ==
|
|
822
|
+
if (status == STATUS_SUCCESS)
|
|
823
|
+
return 0;
|
|
824
|
+
else if (status == STATUS_EOF)
|
|
825
|
+
return 0;
|
|
826
|
+
else if (status == STATUS_NOT_FOUND_TI)
|
|
827
|
+
return 0;
|
|
787
828
|
|
|
788
|
-
|
|
829
|
+
_TCHAR buf[512];
|
|
789
830
|
short_td errorCode = status;
|
|
790
|
-
|
|
831
|
+
getErrorMessage(errorCode, buf, 512);
|
|
791
832
|
|
|
792
|
-
#pragma warning(disable:4996)
|
|
833
|
+
#pragma warning(disable : 4996)
|
|
793
834
|
if (retbuf)
|
|
794
835
|
_stprintf(retbuf, _T("table_name:%s \n%s"), TableName, buf);
|
|
795
|
-
#pragma warning(default:4996)
|
|
836
|
+
#pragma warning(default : 4996)
|
|
837
|
+
|
|
838
|
+
if ((int)hWnd <= 0)
|
|
839
|
+
return errorCode;
|
|
796
840
|
|
|
797
|
-
if ((int)hWnd <= 0) return errorCode;
|
|
798
|
-
|
|
799
841
|
#ifdef _WIN32
|
|
800
842
|
if (TableName)
|
|
801
843
|
MessageBox(hWnd, buf, TableName, MB_OK | MB_ICONSTOP | MB_SYSTEMMODAL);
|
|
802
844
|
else
|
|
803
|
-
|
|
845
|
+
MessageBox(hWnd, buf, _T("tdapErr"),
|
|
846
|
+
MB_OK | MB_ICONSTOP | MB_SYSTEMMODAL);
|
|
804
847
|
#endif
|
|
805
848
|
return errorCode;
|
|
806
849
|
}
|
|
807
850
|
|
|
808
|
-
|
|
809
851
|
void nstable::throwError(const _TCHAR* caption, short statusCode)
|
|
810
852
|
{
|
|
811
|
-
_TCHAR tmp[1024]={0x00};
|
|
812
|
-
nstable::tdapErr(0x00, statusCode,
|
|
813
|
-
_TCHAR tmp2[1024]={0x00};
|
|
814
|
-
_stprintf_s(tmp2, 1024, _T("%s\n%s\n"),caption, tmp);
|
|
853
|
+
_TCHAR tmp[1024] = { 0x00 };
|
|
854
|
+
nstable::tdapErr(0x00, statusCode, _T("unknown"), tmp);
|
|
855
|
+
_TCHAR tmp2[1024] = { 0x00 };
|
|
856
|
+
_stprintf_s(tmp2, 1024, _T("%s\n%s\n"), caption, tmp);
|
|
815
857
|
THROW_BZS_ERROR_WITH_CODEMSG(statusCode, tmp2);
|
|
816
858
|
}
|
|
817
859
|
|
|
818
860
|
void nstable::throwError(const _TCHAR* caption, nstable* tb)
|
|
819
861
|
{
|
|
820
|
-
_TCHAR tmp[1024]={0x00};
|
|
862
|
+
_TCHAR tmp[1024] = { 0x00 };
|
|
821
863
|
nstable::tdapErr(0x00, tb->stat(), tb->uri(), tmp);
|
|
822
|
-
_TCHAR tmp2[1024]={0x00};
|
|
823
|
-
_stprintf_s(tmp2, 1024, _T("[%s]\n%s\n"),caption, tmp);
|
|
864
|
+
_TCHAR tmp2[1024] = { 0x00 };
|
|
865
|
+
_stprintf_s(tmp2, 1024, _T("[%s]\n%s\n"), caption, tmp);
|
|
824
866
|
THROW_BZS_ERROR_WITH_CODEMSG(tb->stat(), tmp2);
|
|
825
|
-
|
|
826
867
|
}
|
|
827
868
|
|
|
828
869
|
_TCHAR* nstable::getDirURI(const _TCHAR* path, _TCHAR* buf)
|
|
@@ -836,8 +877,8 @@ _TCHAR* nstable::getDirURI(const _TCHAR* path, _TCHAR* buf)
|
|
|
836
877
|
else
|
|
837
878
|
#endif
|
|
838
879
|
_tcscpy(buf, path);
|
|
839
|
-
_TUCHAR* p = _tcsmrchr((_TUCHAR*)buf, PSEPARATOR_C);
|
|
840
|
-
_TUCHAR* p2 = _tcsmrchr((_TUCHAR*)buf, '=');
|
|
880
|
+
_TUCHAR* p = (_TUCHAR*)_tcsmrchr((const _TUCHAR*)buf, PSEPARATOR_C);
|
|
881
|
+
_TUCHAR* p2 = (_TUCHAR*)_tcsmrchr((const _TUCHAR*)buf, '=');
|
|
841
882
|
if (p && p2)
|
|
842
883
|
{
|
|
843
884
|
if (p2 > p)
|
|
@@ -846,9 +887,9 @@ _TCHAR* nstable::getDirURI(const _TCHAR* path, _TCHAR* buf)
|
|
|
846
887
|
p2 = NULL;
|
|
847
888
|
}
|
|
848
889
|
if (p)
|
|
849
|
-
*
|
|
890
|
+
*p = 0x00;
|
|
850
891
|
if (p2)
|
|
851
|
-
*
|
|
892
|
+
*(p2 + 1) = 0x00;
|
|
852
893
|
return buf;
|
|
853
894
|
}
|
|
854
895
|
|
|
@@ -858,8 +899,8 @@ _TCHAR* nstable::getDirURI(const _TCHAR* path, _TCHAR* buf)
|
|
|
858
899
|
_TCHAR* nstable::getFileName(const _TCHAR* path, _TCHAR* filename)
|
|
859
900
|
{
|
|
860
901
|
|
|
861
|
-
_TUCHAR* p = _tcsmrchr((_TUCHAR*)path, PSEPARATOR_C);
|
|
862
|
-
_TUCHAR* p2 = _tcsmrchr((_TUCHAR*)path, '=');
|
|
902
|
+
_TUCHAR* p = (_TUCHAR*)_tcsmrchr((const _TUCHAR*)path, PSEPARATOR_C);
|
|
903
|
+
_TUCHAR* p2 = (_TUCHAR*)_tcsmrchr((const _TUCHAR*)path, '=');
|
|
863
904
|
filename[0] = 0x00;
|
|
864
905
|
if (p2 > p)
|
|
865
906
|
p = p2;
|
|
@@ -883,27 +924,29 @@ bool nstable::existsFile(const _TCHAR* filename)
|
|
|
883
924
|
|
|
884
925
|
bool nstable::test(nstable* p)
|
|
885
926
|
{
|
|
886
|
-
|
|
887
|
-
|
|
927
|
+
try
|
|
928
|
+
{
|
|
888
929
|
|
|
889
|
-
|
|
930
|
+
char* pp = (char*)(p);
|
|
890
931
|
#ifdef _WIN32
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
932
|
+
_TCHAR buf[256];
|
|
933
|
+
wsprintf(buf, _T("test(%p) = %p\n"), p, *((nstimpl**)(pp + 4)));
|
|
934
|
+
OutputDebugString(buf);
|
|
894
935
|
#endif
|
|
895
|
-
#ifdef __x86_64__
|
|
896
|
-
|
|
936
|
+
#ifdef __x86_64__
|
|
937
|
+
return (MEM_FREED_MAGIC_NUMBER != *((nstimpl**)(pp + sizeof(char*))));
|
|
897
938
|
#else
|
|
898
|
-
|
|
939
|
+
return (MEM_FREED_MAGIC_NUMBER != *((nstimpl**)(pp + sizeof(char*))));
|
|
899
940
|
#endif
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
941
|
+
}
|
|
942
|
+
catch (...)
|
|
943
|
+
{
|
|
944
|
+
};
|
|
945
|
+
return false;
|
|
903
946
|
}
|
|
904
947
|
|
|
905
|
-
}// namespace client
|
|
906
|
-
}// namespace tdap
|
|
907
|
-
}// namespace protocol
|
|
908
|
-
}// namespace db
|
|
909
|
-
}// namespace bzs
|
|
948
|
+
} // namespace client
|
|
949
|
+
} // namespace tdap
|
|
950
|
+
} // namespace protocol
|
|
951
|
+
} // namespace db
|
|
952
|
+
} // namespace bzs
|