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
data/source/bzs/env/tstring.h
CHANGED
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
GNU General Public License for more details.
|
|
15
15
|
|
|
16
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
|
|
17
|
+
along with this program; if not, write to the Free Software
|
|
18
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
19
19
|
02111-1307, USA.
|
|
20
20
|
=================================================================*/
|
|
21
21
|
|
|
22
|
-
#ifndef __TSTRING_H //old tstring.h is used
|
|
22
|
+
#ifndef __TSTRING_H // old tstring.h is used
|
|
23
23
|
|
|
24
24
|
#include <string.h>
|
|
25
25
|
#include <string>
|
|
@@ -34,150 +34,145 @@
|
|
|
34
34
|
#ifdef LINUX
|
|
35
35
|
#include <bzs/env/mbcswchrLinux.h>
|
|
36
36
|
#endif
|
|
37
|
+
#include <bzs/env/crosscompile.h>
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
namespace std
|
|
40
|
+
{
|
|
40
41
|
#ifdef _UNICODE
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
typedef wstring _tstring;
|
|
43
|
+
typedef wstringstream _tstringstream;
|
|
43
44
|
#else
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
typedef string _tstring;
|
|
46
|
+
typedef stringstream _tstringstream;
|
|
46
47
|
#endif
|
|
47
|
-
} //std
|
|
48
|
-
|
|
48
|
+
} // std
|
|
49
49
|
|
|
50
50
|
#ifdef _UNICODE
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
#define tPos Pos
|
|
52
|
+
#define tcout wcout
|
|
53
53
|
#else
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
#define tPos AnsiPos
|
|
55
|
+
#define tcout cout
|
|
56
56
|
#endif
|
|
57
57
|
|
|
58
|
-
|
|
59
58
|
#ifdef _UNICODE
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
59
|
+
#define _tcsmcmp _tcscmp
|
|
60
|
+
#define _tcsmclen _tcsclen
|
|
61
|
+
#define _tcsmnextc _tcsnextc
|
|
62
|
+
#define _tcsmrchr _tcsrchr
|
|
63
|
+
#define _tcsmstr _tcsstr
|
|
64
|
+
#define _tcsmupr _tcsupr
|
|
65
|
+
|
|
66
|
+
typedef char _NTCHAR;
|
|
68
67
|
#else
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
68
|
+
#define _tcsmcmp _mbscmp
|
|
69
|
+
#define _tcsmclen _mbslen
|
|
70
|
+
#define _tcsmnextc _mbsnextc
|
|
71
|
+
#define _tcsmrchr _mbsrchr
|
|
72
|
+
#define _tcsmstr _mbsstr
|
|
73
|
+
#define _tcsmupr _mbsupr
|
|
74
|
+
typedef wchar_t _NTCHAR;
|
|
76
75
|
#endif
|
|
77
76
|
|
|
78
77
|
#define __BEGIN_NO_TCHAR_CONVERT__
|
|
79
78
|
#define __END_NO_TCHAR_CONVERT__
|
|
80
79
|
|
|
81
|
-
|
|
82
80
|
inline const char* toChar(char* buf, const _TCHAR* w, int size)
|
|
83
|
-
{
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
81
|
+
{ // If w becomes in Ansi, a pointer will be returned without doing anything.
|
|
82
|
+
#ifdef _UNICODE
|
|
83
|
+
WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, buf, size, NULL,
|
|
84
|
+
NULL);
|
|
85
|
+
return buf;
|
|
86
|
+
#else
|
|
87
|
+
return w;
|
|
88
|
+
#endif
|
|
90
89
|
}
|
|
91
90
|
|
|
92
91
|
inline const char* wtoa(char* buf, const WCHAR* w, int size)
|
|
93
92
|
{
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, buf, size, NULL,
|
|
94
|
+
NULL);
|
|
95
|
+
return buf;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
inline const WCHAR* toWChar(WCHAR* buf, const _TCHAR* w, int size)
|
|
99
|
-
{//If w becomes in WCHAR, a pointer will be returned without doing anything.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
99
|
+
{ // If w becomes in WCHAR, a pointer will be returned without doing anything.
|
|
100
|
+
#ifdef _UNICODE
|
|
101
|
+
return w;
|
|
102
|
+
#else
|
|
103
|
+
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, w, -1, buf, size);
|
|
104
|
+
return buf;
|
|
105
|
+
#endif
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
|
|
109
108
|
#ifdef _UNICODE
|
|
110
109
|
inline const WCHAR* toWChar(WCHAR* buf, const char* a, int size)
|
|
111
110
|
{
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, a, -1, buf, size);
|
|
112
|
+
return buf;
|
|
114
113
|
}
|
|
115
114
|
#endif
|
|
116
115
|
|
|
117
116
|
inline const WCHAR* toWChar_n(WCHAR* buf, const char* a, int size)
|
|
118
117
|
{
|
|
119
|
-
|
|
120
|
-
|
|
118
|
+
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, a, size, buf, size);
|
|
119
|
+
return buf;
|
|
121
120
|
}
|
|
122
121
|
|
|
123
122
|
inline const _TCHAR* toTChar(_TCHAR* t, const WCHAR* w, int size)
|
|
124
123
|
{
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
124
|
+
#ifdef _UNICODE
|
|
125
|
+
return w;
|
|
126
|
+
#else
|
|
127
|
+
WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, t, size, NULL, NULL);
|
|
128
|
+
return t;
|
|
129
|
+
#endif
|
|
131
130
|
}
|
|
132
131
|
|
|
133
132
|
inline const _TCHAR* toTCharCopy(_TCHAR* t, const WCHAR* w, int size)
|
|
134
|
-
{ //It returns, after certainly copying, even if w is _TCHAR.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
133
|
+
{ // It returns, after certainly copying, even if w is _TCHAR.
|
|
134
|
+
#ifdef _UNICODE
|
|
135
|
+
_tcscpy_s(t, size, w);
|
|
136
|
+
return t;
|
|
137
|
+
#else
|
|
138
|
+
WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, t, size, NULL, NULL);
|
|
139
|
+
return t;
|
|
140
|
+
|
|
141
|
+
#endif
|
|
143
142
|
}
|
|
144
143
|
|
|
145
|
-
#pragma warning(disable:4996)
|
|
146
144
|
inline const char* toCharCpy(char* buf, const _TCHAR* w, int size)
|
|
147
|
-
{
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
145
|
+
{
|
|
146
|
+
#ifdef _UNICODE
|
|
147
|
+
WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, buf, size, NULL,
|
|
148
|
+
NULL);
|
|
149
|
+
return buf;
|
|
150
|
+
#else
|
|
151
|
+
strncpy_s(buf, size, w, size - 1);
|
|
152
|
+
return buf;
|
|
153
|
+
#endif
|
|
155
154
|
}
|
|
156
|
-
#pragma warning(default:4996)
|
|
157
155
|
|
|
158
156
|
inline const _TCHAR* toTChar(_TCHAR* t, const char* a, int size)
|
|
159
157
|
{
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
158
|
+
#ifdef _UNICODE
|
|
159
|
+
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, a, -1, t, size);
|
|
160
|
+
return t;
|
|
161
|
+
#else
|
|
162
|
+
return a;
|
|
163
|
+
#endif
|
|
166
164
|
}
|
|
167
165
|
|
|
168
|
-
#pragma warning(disable:4996)
|
|
169
166
|
inline const _TCHAR* toTCharCopy(_TCHAR* t, const char* a, int size)
|
|
170
167
|
{
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
168
|
+
#ifdef _UNICODE
|
|
169
|
+
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, a, -1, t, size);
|
|
170
|
+
return t;
|
|
171
|
+
#else
|
|
172
|
+
_tcsncpy_s(t, size, a, size - 1);
|
|
173
|
+
return t;
|
|
174
|
+
#endif
|
|
178
175
|
}
|
|
179
|
-
#pragma warning(default:4996)
|
|
180
|
-
|
|
181
176
|
|
|
182
177
|
#endif //__TSTRING_H
|
|
183
|
-
#endif //BZS_ENV_TSTRING_H
|
|
178
|
+
#endif // BZS_ENV_TSTRING_H
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
using namespace bzs::db::protocol::tdap::client;
|
|
7
7
|
using namespace bzs::db::protocol::tdap;
|
|
8
8
|
|
|
9
|
-
|
|
10
9
|
/** @brief change schema and convert table example
|
|
11
10
|
|
|
12
11
|
This program change "user" table.
|
|
@@ -20,14 +19,13 @@ Please execute the "create database" example before execute this example.
|
|
|
20
19
|
static const short tablenum_user = 1;
|
|
21
20
|
static const short fieldnum_name = 1;
|
|
22
21
|
|
|
23
|
-
|
|
24
22
|
/** show database operation error
|
|
25
23
|
*/
|
|
26
|
-
void showError(const _TCHAR* caption,const _TCHAR* tableName, short statusCode)
|
|
24
|
+
void showError(const _TCHAR* caption, const _TCHAR* tableName, short statusCode)
|
|
27
25
|
{
|
|
28
|
-
_TCHAR tmp[1024]={0x00};
|
|
26
|
+
_TCHAR tmp[1024] = { 0x00 };
|
|
29
27
|
nstable::tdapErr(0x00, statusCode, tableName, tmp);
|
|
30
|
-
_tprintf(_T("%s
|
|
28
|
+
_tprintf(_T("[ERROR] %s No.%ld %s\n"), caption, statusCode, tmp);
|
|
31
29
|
}
|
|
32
30
|
|
|
33
31
|
/** Change user table schema
|
|
@@ -35,20 +33,20 @@ void showError(const _TCHAR* caption,const _TCHAR* tableName, short statusCode)
|
|
|
35
33
|
bool changeUserTable(dbdef* def)
|
|
36
34
|
{
|
|
37
35
|
|
|
38
|
-
//change name size
|
|
39
|
-
tabledef
|
|
40
|
-
fielddef* fd = &
|
|
36
|
+
// change name size
|
|
37
|
+
tabledef* td = def->tableDefs(tablenum_user);
|
|
38
|
+
fielddef* fd = &td->fieldDefs[fieldnum_name];
|
|
41
39
|
fd->setLenByCharnum(64);
|
|
42
40
|
|
|
43
|
-
//add tel field
|
|
44
|
-
fd = def->insertField(
|
|
41
|
+
// add tel field
|
|
42
|
+
fd = def->insertField(tablenum_user, td->fieldCount);
|
|
45
43
|
fd->setName(_T("tel"));
|
|
46
44
|
fd->type = ft_mychar;
|
|
47
|
-
fd->setCharsetIndex(
|
|
45
|
+
fd->setCharsetIndex(CHARSET_LATIN1);
|
|
48
46
|
fd->setLenByCharnum(16);
|
|
49
47
|
|
|
50
|
-
//write user table schema
|
|
51
|
-
def->updateTableDef(
|
|
48
|
+
// write user table schema
|
|
49
|
+
def->updateTableDef(tablenum_user);
|
|
52
50
|
if (def->stat() != 0)
|
|
53
51
|
{
|
|
54
52
|
showError(_T("edit schema table"), NULL, def->stat());
|
|
@@ -70,12 +68,12 @@ bool openDbExclusive(database* db, const _TCHAR* uri)
|
|
|
70
68
|
return true;
|
|
71
69
|
}
|
|
72
70
|
|
|
73
|
-
void __STDCALL
|
|
71
|
+
void __STDCALL
|
|
72
|
+
onCopyData(database* db, int recordCount, int count, bool& cancel)
|
|
74
73
|
{
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
if (count == 0)
|
|
75
|
+
_tprintf(_T("\n"));
|
|
76
|
+
_tprintf(_T("."));
|
|
79
77
|
}
|
|
80
78
|
|
|
81
79
|
#pragma argsused
|
|
@@ -87,12 +85,12 @@ int _tmain(int argc, _TCHAR* argv[])
|
|
|
87
85
|
|
|
88
86
|
if (openDbExclusive(db, uri))
|
|
89
87
|
{
|
|
90
|
-
//backup current user table schema
|
|
88
|
+
// backup current user table schema
|
|
91
89
|
db->dbDef()->pushBackup(tablenum_user);
|
|
92
90
|
|
|
93
91
|
if (changeUserTable(db->dbDef()))
|
|
94
92
|
{
|
|
95
|
-
//convert table if table exist;
|
|
93
|
+
// convert table if table exist;
|
|
96
94
|
if (db->existsTableFile(tablenum_user, NULL))
|
|
97
95
|
{
|
|
98
96
|
db->setOnCopyData(onCopyData);
|
|
@@ -106,10 +104,11 @@ int _tmain(int argc, _TCHAR* argv[])
|
|
|
106
104
|
if (db->stat())
|
|
107
105
|
{
|
|
108
106
|
result = db->stat();
|
|
109
|
-
//restore user table schema
|
|
107
|
+
// restore user table schema
|
|
110
108
|
db->dbDef()->popBackup(tablenum_user);
|
|
111
|
-
}
|
|
112
|
-
|
|
109
|
+
}
|
|
110
|
+
else
|
|
111
|
+
_tprintf(_T("\nchange schema success. \n"));
|
|
113
112
|
db->close();
|
|
114
113
|
}
|
|
115
114
|
database::destroy(db);
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
using namespace bzs::db::protocol::tdap::client;
|
|
4
4
|
using namespace bzs::db::protocol::tdap;
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
/**
|
|
8
7
|
@brief change schema and convert table example
|
|
9
8
|
|
|
@@ -18,61 +17,60 @@ Please execute the "create database" example before execute this example.
|
|
|
18
17
|
static const short tablenum_user = 1;
|
|
19
18
|
static const short fieldnum_name = 1;
|
|
20
19
|
|
|
21
|
-
|
|
22
|
-
|
|
23
20
|
/** Change user table schema
|
|
24
21
|
*/
|
|
25
22
|
void changeUserTable(dbdef* def)
|
|
26
23
|
{
|
|
27
|
-
//change name size
|
|
28
|
-
tabledef
|
|
29
|
-
fielddef* fd = &
|
|
24
|
+
// change name size
|
|
25
|
+
tabledef* td = def->tableDefs(tablenum_user);
|
|
26
|
+
fielddef* fd = &td->fieldDefs[fieldnum_name];
|
|
30
27
|
fd->setLenByCharnum(64);
|
|
31
28
|
|
|
32
|
-
//add tel field
|
|
29
|
+
// add tel field
|
|
33
30
|
int size = lenByCharnum(ft_mychar, CHARSET_LATIN1, 16);
|
|
34
|
-
fd = insertField(def,
|
|
31
|
+
fd = insertField(def, tablenum_user, td->fieldCount, _T("tel"), ft_mychar,
|
|
32
|
+
size);
|
|
35
33
|
fd->setCharsetIndex(CHARSET_LATIN1);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
updateTableDef(def, (*td)->id);
|
|
34
|
+
// write user table schema
|
|
35
|
+
updateTableDef(def, tablenum_user);
|
|
39
36
|
}
|
|
40
37
|
|
|
41
|
-
void
|
|
38
|
+
void __STDCALL
|
|
39
|
+
onCopyData(database* db, int recordCount, int count, bool& cancel)
|
|
42
40
|
{
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
if (count == 0)
|
|
42
|
+
std::cout << std::endl;
|
|
43
|
+
std::cout << ".";
|
|
47
44
|
}
|
|
48
45
|
|
|
49
46
|
#pragma argsused
|
|
50
47
|
int _tmain(int argc, _TCHAR* argv[])
|
|
51
48
|
{
|
|
52
|
-
database_ptr db =
|
|
49
|
+
database_ptr db = createDatabaseObject();
|
|
53
50
|
try
|
|
54
51
|
{
|
|
55
|
-
connectParams prams(_T("tdap"), _T("localhost"), _T("test"),
|
|
52
|
+
connectParams prams(_T("tdap"), _T("localhost"), _T("test"),
|
|
53
|
+
_T("test"));
|
|
56
54
|
prams.setMode(TD_OPEN_EXCLUSIVE);
|
|
57
55
|
|
|
58
56
|
openDatabase(db, prams);
|
|
59
57
|
|
|
60
|
-
//backup current user table schema
|
|
58
|
+
// backup current user table schema
|
|
61
59
|
db->dbDef()->pushBackup(tablenum_user);
|
|
62
60
|
|
|
63
61
|
changeUserTable(db->dbDef());
|
|
64
62
|
|
|
65
|
-
//convert table
|
|
66
|
-
//If an error ouccered then restore the table schema automaticaly.
|
|
63
|
+
// convert table
|
|
64
|
+
// If an error ouccered then restore the table schema automaticaly.
|
|
67
65
|
convertTable(db, _T("user"), onCopyData);
|
|
68
66
|
|
|
69
|
-
std::cout << "change
|
|
67
|
+
std::cout << "change schema success." << std::endl;
|
|
70
68
|
return 0;
|
|
71
69
|
}
|
|
72
70
|
|
|
73
|
-
catch(bzs::rtl::exception& e)
|
|
71
|
+
catch (bzs::rtl::exception& e)
|
|
74
72
|
{
|
|
75
|
-
std::tcout << *bzs::rtl::getMsg(e) << std::endl;
|
|
73
|
+
std::tcout << _T("[ERROR] ") << *bzs::rtl::getMsg(e) << std::endl;
|
|
76
74
|
}
|
|
77
75
|
return 1;
|
|
78
76
|
}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
#include <bzs/db/protocol/tdap/client/
|
|
1
|
+
#include <bzs/db/protocol/tdap/client/pooledDatabaseManager.h>
|
|
2
2
|
#include <iostream>
|
|
3
|
-
#include <vector>
|
|
4
|
-
#include <boost/thread/thread.hpp>
|
|
5
|
-
#include <boost/thread/condition.hpp>
|
|
6
|
-
|
|
7
|
-
|
|
8
3
|
|
|
9
4
|
using namespace bzs::db::protocol::tdap::client;
|
|
10
5
|
using namespace bzs::db::protocol::tdap;
|
|
@@ -19,147 +14,97 @@ And execute ten worker jobs with each thread.
|
|
|
19
14
|
Each worker shows the connection object pointer.
|
|
20
15
|
|
|
21
16
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
17
|
struct clientID
|
|
25
18
|
{
|
|
26
19
|
void* con;
|
|
27
|
-
char_td reserved[12 - sizeof(void*)]
|
|
28
|
-
char_td
|
|
29
|
-
ushort_td
|
|
20
|
+
char_td reserved[12 - sizeof(void*)]; // 32bit = 8 64bit = 4
|
|
21
|
+
char_td aid[2];
|
|
22
|
+
ushort_td id;
|
|
30
23
|
};
|
|
31
24
|
|
|
32
|
-
|
|
33
|
-
/** connection pool class
|
|
34
|
-
Hold database instance and delivery.
|
|
35
|
-
*/
|
|
36
|
-
class connectionPool
|
|
25
|
+
class worker
|
|
37
26
|
{
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
mutable condition m_busy;
|
|
27
|
+
int m_id;
|
|
28
|
+
int m_worktime;
|
|
29
|
+
static mutex m_mutex;
|
|
43
30
|
|
|
44
31
|
public:
|
|
45
|
-
|
|
32
|
+
worker(int id, int worktime) : m_id(id), m_worktime(worktime){};
|
|
46
33
|
|
|
47
|
-
|
|
48
|
-
database_ptr get()const
|
|
34
|
+
void execute()
|
|
49
35
|
{
|
|
50
|
-
|
|
51
|
-
while (1)
|
|
36
|
+
try
|
|
52
37
|
{
|
|
53
|
-
|
|
38
|
+
pooledDbManager db;
|
|
39
|
+
db.use();
|
|
40
|
+
|
|
41
|
+
clientID* cid = (clientID*)db.clientID();
|
|
42
|
+
|
|
54
43
|
{
|
|
55
|
-
|
|
56
|
-
|
|
44
|
+
mutex::scoped_lock lck(m_mutex);
|
|
45
|
+
std::cout << "worker strat id = " << m_id << " connection = 0x"
|
|
46
|
+
<< std::hex << cid->con << std::endl;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
Sleep(m_worktime);
|
|
50
|
+
if (m_id == 4)
|
|
51
|
+
throw "error"; // throw error example
|
|
57
52
|
|
|
53
|
+
{
|
|
54
|
+
mutex::scoped_lock lck(m_mutex);
|
|
55
|
+
std::cout << "worker finish id = " << m_id << " connection = 0x"
|
|
56
|
+
<< std::hex << cid->con << std::endl;
|
|
58
57
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
db.unUse();
|
|
59
|
+
delete this;
|
|
62
60
|
}
|
|
63
|
-
}
|
|
64
61
|
|
|
65
|
-
|
|
66
|
-
void create(size_t size, const connectParams& param)
|
|
67
|
-
{
|
|
68
|
-
for (size_t i =0;i<size;++i)
|
|
62
|
+
catch (bzs::rtl::exception& e)
|
|
69
63
|
{
|
|
70
|
-
|
|
71
|
-
connect(db, param, true/* new connection*/);
|
|
72
|
-
openDatabase(db, param);
|
|
73
|
-
m_dbs.push_back(db);
|
|
64
|
+
std::tcout << _T("[ERROR] ") << *bzs::rtl::getMsg(e) << std::endl;
|
|
74
65
|
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
void releaseOne()
|
|
78
|
-
{
|
|
79
|
-
m_busy.notify_one();
|
|
80
|
-
}
|
|
81
66
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
connectionPool cpool;
|
|
85
|
-
|
|
86
|
-
void releaseConnection(connectionPool* pool)
|
|
87
|
-
{
|
|
88
|
-
pool->releaseOne();
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
class worker
|
|
92
|
-
{
|
|
93
|
-
int m_id;
|
|
94
|
-
int m_worktime;
|
|
95
|
-
static mutex m_mutex;
|
|
96
|
-
public:
|
|
97
|
-
worker(int id, int worktime):m_id(id),m_worktime(worktime){};
|
|
98
|
-
void execute()
|
|
99
|
-
{
|
|
100
|
-
try
|
|
101
|
-
{
|
|
102
|
-
shared_ptr<connectionPool> pool(&cpool, releaseConnection);
|
|
103
|
-
{
|
|
104
|
-
database_ptr db = pool->get();
|
|
105
|
-
|
|
106
|
-
clientID* cid = (clientID*)db->clientID();
|
|
107
|
-
|
|
108
|
-
{
|
|
109
|
-
mutex::scoped_lock lck(m_mutex);
|
|
110
|
-
std::cout << "worker strat id = " << m_id
|
|
111
|
-
<< " connection = 0x" << std::hex << cid->con << std::endl;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
Sleep(m_worktime);
|
|
115
|
-
if (m_id == 4) throw "error"; //throw error example
|
|
116
|
-
|
|
117
|
-
{
|
|
118
|
-
mutex::scoped_lock lck(m_mutex);
|
|
119
|
-
std::cout << "worker finish id = " << m_id
|
|
120
|
-
<< " connection = 0x" << std::hex << cid->con << std::endl;
|
|
121
|
-
}
|
|
122
|
-
} // release database
|
|
123
|
-
|
|
124
|
-
delete this;
|
|
125
|
-
} //call releaseConnection
|
|
126
|
-
|
|
127
|
-
catch(...)
|
|
67
|
+
catch (...)
|
|
128
68
|
{
|
|
129
69
|
mutex::scoped_lock lck(m_mutex);
|
|
130
70
|
std::cout << "worker error id = " << m_id << std::endl;
|
|
131
71
|
delete this;
|
|
132
72
|
}
|
|
133
73
|
}
|
|
134
|
-
|
|
135
74
|
};
|
|
136
75
|
mutex worker::m_mutex;
|
|
137
76
|
|
|
138
|
-
static const worktime[10] = {5, 1, 3, 5, 4, 1, 2, 5, 4, 1};
|
|
77
|
+
static const int worktime[10] = { 5, 1, 3, 5, 4, 1, 2, 5, 4, 1 };
|
|
139
78
|
|
|
140
79
|
#pragma argsused
|
|
141
80
|
int _tmain(int argc, _TCHAR* argv[])
|
|
142
81
|
{
|
|
143
82
|
try
|
|
144
83
|
{
|
|
145
|
-
connectParams param(_T("tdap"), _T("localhost"), _T("test"),
|
|
146
|
-
|
|
147
|
-
|
|
84
|
+
connectParams param(_T("tdap"), _T("localhost"), _T("test"),
|
|
85
|
+
_T("test"));
|
|
86
|
+
// create four databases
|
|
87
|
+
pooledDbManager::reserve(4, param);
|
|
148
88
|
|
|
149
|
-
//Execute 10 workers with each thread.
|
|
89
|
+
// Execute 10 workers with each thread.
|
|
150
90
|
thread_group threads;
|
|
151
|
-
for (int i=0;i<10
|
|
91
|
+
for (int i = 0; i < 10; ++i)
|
|
152
92
|
{
|
|
153
|
-
worker* w = new worker(i+1, worktime[i]*100);
|
|
154
|
-
threads.create_thread(
|
|
93
|
+
worker* w = new worker(i + 1, worktime[i] * 100);
|
|
94
|
+
threads.create_thread(bind(&worker::execute, w));
|
|
155
95
|
}
|
|
156
96
|
threads.join_all();
|
|
97
|
+
|
|
98
|
+
// release all connection.
|
|
99
|
+
pooledDbManager().reset(0);
|
|
100
|
+
|
|
101
|
+
std::cout << "Connection pool test success." << std::endl;
|
|
157
102
|
return 0;
|
|
158
103
|
}
|
|
159
104
|
|
|
160
|
-
catch(bzs::rtl::exception& e)
|
|
105
|
+
catch (bzs::rtl::exception& e)
|
|
161
106
|
{
|
|
162
|
-
std::tcout << *bzs::rtl::getMsg(e) << std::endl;
|
|
107
|
+
std::tcout << _T("[ERROR] ") << *bzs::rtl::getMsg(e) << std::endl;
|
|
163
108
|
}
|
|
164
109
|
return 1;
|
|
165
110
|
}
|