transactd 1.0.1
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 +7 -0
- data/BUILD_UNIX-JA +174 -0
- data/BUILD_WIN-JA +256 -0
- data/CMakeLists.txt +96 -0
- data/COPYING +339 -0
- data/README +406 -0
- data/README-JA +424 -0
- data/bin/common/tdclc_32_1_0.dll +0 -0
- data/bin/common/tdclc_64_1_0.dll +0 -0
- data/build/common/check_for_link_iconv.cmake +73 -0
- data/build/common/copyifgreater.cmd +30 -0
- data/build/common/copyifgreater.js +290 -0
- data/build/common/get_boost_libs.cmake +106 -0
- data/build/common/get_ruby_path.cmake +115 -0
- data/build/common/options.cmake +127 -0
- data/build/common/smart_install.cmake +263 -0
- data/build/common/system.cmake +122 -0
- data/build/common/transactd.rc.in +52 -0
- data/build/common/transactd_cl_common.cmake +101 -0
- data/build/common/transactd_cl_output.cmake +93 -0
- data/build/common/transactd_common.cmake +237 -0
- data/build/common/transactd_required.cmake +28 -0
- data/build/swig/ruby/generate.cmake.in +35 -0
- data/build/swig/ruby/generate.cmd.in +19 -0
- data/build/swig/ruby/ruby.swg +101 -0
- data/build/swig/tdcl.i +188 -0
- data/build/tdclc/BUILDNUMBER.txt +1 -0
- data/build/tdclc/CMakeLists.txt +170 -0
- data/build/tdclc/tdclc_32.cbproj +181 -0
- data/build/tdclc/tdclc_64.cbproj +205 -0
- data/build/tdclcpp/BUILDNUMBER.txt +1 -0
- data/build/tdclcpp/CMakeLists.txt +142 -0
- data/build/tdclcpp/tdclcpp_bcb_32.cbproj +239 -0
- data/build/tdclcpp/tdclcpp_bcb_64.cbproj +304 -0
- data/build/tdclrb/BUILDNUMBER.txt +1 -0
- data/build/tdclrb/CMakeLists.txt +258 -0
- data/build/tdclrb/GEM_VERSION +3 -0
- data/build/tdclrb/bldgem/extconf.rb +123 -0
- data/build/tdclrb/gem/INSTALLLOG.win32 +9 -0
- data/build/tdclrb/gem/Makefile.win32-VS +65 -0
- data/build/tdclrb/gem/Makefile.win32-prebuilt +48 -0
- data/build/tdclrb/gem/detect.rb +31 -0
- data/build/tdclrb/gem/helper.rb +113 -0
- data/build/tdclrb/gem/transactd.rb +22 -0
- data/build/tdclrb/gem_output.cmake +44 -0
- data/source/bzs/db/IBlobBuffer.h +51 -0
- data/source/bzs/db/blobBuffer.h +177 -0
- data/source/bzs/db/blobStructs.h +85 -0
- data/source/bzs/db/engine/mysql/IReadRecords.h +52 -0
- data/source/bzs/db/engine/mysql/bookmark.h +195 -0
- data/source/bzs/db/engine/mysql/database.cpp +1882 -0
- data/source/bzs/db/engine/mysql/database.h +465 -0
- data/source/bzs/db/engine/mysql/dbManager.cpp +303 -0
- data/source/bzs/db/engine/mysql/dbManager.h +143 -0
- data/source/bzs/db/engine/mysql/errorMessage.cpp +75 -0
- data/source/bzs/db/engine/mysql/errorMessage.h +43 -0
- data/source/bzs/db/engine/mysql/fieldAccess.h +158 -0
- data/source/bzs/db/engine/mysql/mydebuglog.cpp +349 -0
- data/source/bzs/db/engine/mysql/mydebuglog.h +89 -0
- data/source/bzs/db/engine/mysql/mysqlInternal.h +171 -0
- data/source/bzs/db/engine/mysql/mysqlThd.cpp +169 -0
- data/source/bzs/db/engine/mysql/mysqlThd.h +35 -0
- data/source/bzs/db/engine/mysql/percentageKey.h +260 -0
- data/source/bzs/db/protocol/ICommandExecuter.h +49 -0
- data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +689 -0
- data/source/bzs/db/protocol/hs/hsCommandExecuter.h +228 -0
- data/source/bzs/db/protocol/tdap/btrDate.cpp +437 -0
- data/source/bzs/db/protocol/tdap/btrDate.h +227 -0
- data/source/bzs/db/protocol/tdap/client/bulkInsert.h +127 -0
- data/source/bzs/db/protocol/tdap/client/client.cpp +106 -0
- data/source/bzs/db/protocol/tdap/client/client.h +292 -0
- data/source/bzs/db/protocol/tdap/client/connMgr.cpp +144 -0
- data/source/bzs/db/protocol/tdap/client/connMgr.h +82 -0
- data/source/bzs/db/protocol/tdap/client/database.cpp +863 -0
- data/source/bzs/db/protocol/tdap/client/database.h +118 -0
- data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +100 -0
- data/source/bzs/db/protocol/tdap/client/dbDef.cpp +1640 -0
- data/source/bzs/db/protocol/tdap/client/dbDef.h +135 -0
- data/source/bzs/db/protocol/tdap/client/dllmain.cpp +434 -0
- data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +92 -0
- data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +98 -0
- data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +174 -0
- data/source/bzs/db/protocol/tdap/client/fieldDDF.h +91 -0
- data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +140 -0
- data/source/bzs/db/protocol/tdap/client/fileDDF.h +86 -0
- data/source/bzs/db/protocol/tdap/client/filter.cpp +527 -0
- data/source/bzs/db/protocol/tdap/client/filter.h +154 -0
- data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +137 -0
- data/source/bzs/db/protocol/tdap/client/indexDDF.h +84 -0
- data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +724 -0
- data/source/bzs/db/protocol/tdap/client/nsDatabase.h +123 -0
- data/source/bzs/db/protocol/tdap/client/nsTable.cpp +899 -0
- data/source/bzs/db/protocol/tdap/client/nsTable.h +199 -0
- data/source/bzs/db/protocol/tdap/client/request.h +198 -0
- data/source/bzs/db/protocol/tdap/client/sharedData.cpp +58 -0
- data/source/bzs/db/protocol/tdap/client/sharedData.h +56 -0
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +574 -0
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +53 -0
- data/source/bzs/db/protocol/tdap/client/stringConverter.h +627 -0
- data/source/bzs/db/protocol/tdap/client/table.cpp +2613 -0
- data/source/bzs/db/protocol/tdap/client/table.h +221 -0
- data/source/bzs/db/protocol/tdap/client/trdboostapi.h +1096 -0
- data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +179 -0
- data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +40 -0
- data/source/bzs/db/protocol/tdap/client/trnsctcl.def +11 -0
- data/source/bzs/db/protocol/tdap/myDateTime.cpp +500 -0
- data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +184 -0
- data/source/bzs/db/protocol/tdap/mysql/characterset.h +60 -0
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +284 -0
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +53 -0
- data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +383 -0
- data/source/bzs/db/protocol/tdap/mysql/debuglog.h +106 -0
- data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +680 -0
- data/source/bzs/db/protocol/tdap/mysql/request.h +202 -0
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1020 -0
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +141 -0
- data/source/bzs/db/protocol/tdap/tdapRequest.h +190 -0
- data/source/bzs/db/protocol/tdap/tdapSchema.cpp +295 -0
- data/source/bzs/db/protocol/tdap/tdapSchema.h +558 -0
- data/source/bzs/db/protocol/tdap/tdapcapi.h +423 -0
- data/source/bzs/db/transactd/appBuilderImple.h +55 -0
- data/source/bzs/db/transactd/appModule.cpp +183 -0
- data/source/bzs/db/transactd/appModule.h +80 -0
- data/source/bzs/db/transactd/connManager.cpp +201 -0
- data/source/bzs/db/transactd/connManager.h +60 -0
- data/source/bzs/db/transactd/connectionRecord.h +69 -0
- data/source/bzs/db/transactd/transactd.cpp +325 -0
- data/source/bzs/env/compiler.h +135 -0
- data/source/bzs/env/crosscompile.cpp +130 -0
- data/source/bzs/env/crosscompile.h +150 -0
- data/source/bzs/env/fileopen.h +36 -0
- data/source/bzs/env/mbcswchrLinux.cpp +40 -0
- data/source/bzs/env/mbcswchrLinux.h +88 -0
- data/source/bzs/env/tstring.h +183 -0
- data/source/bzs/example/changeSchema.cpp +117 -0
- data/source/bzs/example/changeSchema_c.cpp +78 -0
- data/source/bzs/example/connection_pool_c.cpp +171 -0
- data/source/bzs/example/createDatabase.cpp +305 -0
- data/source/bzs/example/createDatabase_c.cpp +202 -0
- data/source/bzs/example/deleteRecords.cpp +87 -0
- data/source/bzs/example/deleteRecords_c.cpp +57 -0
- data/source/bzs/example/dropDatabase.cpp +59 -0
- data/source/bzs/example/dropDatabase_c.cpp +34 -0
- data/source/bzs/example/insertRecords.cpp +212 -0
- data/source/bzs/example/insertRecords_c.cpp +153 -0
- data/source/bzs/example/readRecords.cpp +141 -0
- data/source/bzs/example/readRecords_c.cpp +107 -0
- data/source/bzs/example/updateRecords.cpp +99 -0
- data/source/bzs/example/updateRecords_c.cpp +71 -0
- data/source/bzs/example/update_with_transaction.cpp +104 -0
- data/source/bzs/example/update_with_transaction_c.cpp +80 -0
- data/source/bzs/netsvc/client/tcpClient.cpp +226 -0
- data/source/bzs/netsvc/client/tcpClient.h +489 -0
- data/source/bzs/netsvc/server/IAppModule.h +94 -0
- data/source/bzs/netsvc/server/iserver.h +65 -0
- data/source/bzs/netsvc/server/serverCpt.cpp +522 -0
- data/source/bzs/netsvc/server/serverCpt.h +88 -0
- data/source/bzs/netsvc/server/serverPipe.cpp +705 -0
- data/source/bzs/netsvc/server/serverPipe.h +96 -0
- data/source/bzs/netsvc/server/serverTpool.cpp +416 -0
- data/source/bzs/netsvc/server/serverTpool.h +84 -0
- data/source/bzs/rtl/benchmark.cpp +96 -0
- data/source/bzs/rtl/benchmark.h +65 -0
- data/source/bzs/rtl/datetime.cpp +375 -0
- data/source/bzs/rtl/datetime.h +53 -0
- data/source/bzs/rtl/debuglog.cpp +106 -0
- data/source/bzs/rtl/debuglog.h +97 -0
- data/source/bzs/rtl/exception.h +116 -0
- data/source/bzs/rtl/stl_uty.cpp +35 -0
- data/source/bzs/rtl/stl_uty.h +29 -0
- data/source/bzs/rtl/stringBuffers.cpp +101 -0
- data/source/bzs/rtl/stringBuffers.h +58 -0
- data/source/bzs/rtl/strtrim.cpp +135 -0
- data/source/bzs/rtl/strtrim.h +46 -0
- data/source/bzs/test/tdclatl/bench_tdclatl.js +445 -0
- data/source/bzs/test/tdclrb/bench_tdclcpp.rb +375 -0
- data/source/bzs/test/tdclrb/prepare.rb +226 -0
- data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +172 -0
- data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +208 -0
- data/source/bzs/test/tdclrb/transactd_spec.rb +1536 -0
- data/source/bzs/test/transactdBench/transactdBench.cpp +430 -0
- data/source/bzs/test/transactdBench/transactdBench2.cpp +342 -0
- data/source/bzs/test/trdclengn/test_trdclengn.cpp +2030 -0
- data/source/global/tdclatl/Database.cpp +503 -0
- data/source/global/tdclatl/Database.h +139 -0
- data/source/global/tdclatl/DbDef.cpp +242 -0
- data/source/global/tdclatl/DbDef.h +79 -0
- data/source/global/tdclatl/Field.cpp +92 -0
- data/source/global/tdclatl/Field.h +59 -0
- data/source/global/tdclatl/FieldDef.cpp +238 -0
- data/source/global/tdclatl/FieldDef.h +87 -0
- data/source/global/tdclatl/Flags.cpp +111 -0
- data/source/global/tdclatl/Flags.h +55 -0
- data/source/global/tdclatl/KeyDef.cpp +51 -0
- data/source/global/tdclatl/KeyDef.h +55 -0
- data/source/global/tdclatl/KeySegment.cpp +55 -0
- data/source/global/tdclatl/Table.cpp +600 -0
- data/source/global/tdclatl/Table.h +144 -0
- data/source/global/tdclatl/TableDef.cpp +291 -0
- data/source/global/tdclatl/TableDef.h +86 -0
- data/source/global/tdclatl/TdVersion.cpp +74 -0
- data/source/global/tdclatl/TdVersion.h +54 -0
- data/source/global/tdclatl/_IDatabaseEvents_CP.h +113 -0
- data/source/global/tdclatl/dllmain.cpp +30 -0
- data/source/global/tdclatl/dllmain.h +27 -0
- data/source/global/tdclatl/keySegment.h +57 -0
- data/source/global/tdclatl/resource.h +0 -0
- data/source/global/tdclatl/stdafx.cpp +2 -0
- data/source/global/tdclatl/stdafx.h +25 -0
- data/source/global/tdclatl/targetver.h +4 -0
- data/source/global/tdclatl/tdclatl.cpp +68 -0
- data/source/global/tdclatl/tdclatl.def +10 -0
- data/source/global/tdclatl/tdclatl.idl +1035 -0
- data/source/linux/charsetConvert.h +112 -0
- data/source/linux/linuxTypes.h +33 -0
- data/source/linux/tchar.h +428 -0
- data/transactd.gemspec +97 -0
- metadata +267 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
#ifndef BZS_DB_TRANSACTD_APPMODULE_H
|
|
2
|
+
#define BZS_DB_TRANSACTD_APPMODULE_H
|
|
3
|
+
/*=================================================================
|
|
4
|
+
Copyright (C) 2012 2013 BizStation Corp All rights reserved.
|
|
5
|
+
|
|
6
|
+
This program is free software; you can redistribute it and/or
|
|
7
|
+
modify it under the terms of the GNU General Public License
|
|
8
|
+
as published by the Free Software Foundation; either version 2
|
|
9
|
+
of the License, or (at your option) any later version.
|
|
10
|
+
|
|
11
|
+
This program is distributed in the hope that it will be useful,
|
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
GNU General Public License for more details.
|
|
15
|
+
|
|
16
|
+
You should have received a copy of the GNU General Public License
|
|
17
|
+
along with this program; if not, write to the Free Software
|
|
18
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
19
|
+
02111-1307, USA.
|
|
20
|
+
=================================================================*/
|
|
21
|
+
|
|
22
|
+
#include <bzs/netsvc/server/IAppModule.h>
|
|
23
|
+
#include <bzs/db/protocol/ICommandExecuter.h>
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class THD;
|
|
27
|
+
|
|
28
|
+
namespace bzs
|
|
29
|
+
{
|
|
30
|
+
namespace db
|
|
31
|
+
{
|
|
32
|
+
namespace transactd
|
|
33
|
+
{
|
|
34
|
+
|
|
35
|
+
/** Feature
|
|
36
|
+
* -Client authentication.
|
|
37
|
+
* -Check tcp recieve of end of data.
|
|
38
|
+
* -Tcp connection disconnect function.
|
|
39
|
+
* -Execute client command.
|
|
40
|
+
* -Anser of shutdown.
|
|
41
|
+
*/
|
|
42
|
+
class module :public netsvc::server::IAppModule, private boost::noncopyable
|
|
43
|
+
{
|
|
44
|
+
friend class connManager;
|
|
45
|
+
mutable boost::mutex m_mutex;
|
|
46
|
+
boost::shared_ptr<protocol::ICommandExecuter> m_commandExecuter;
|
|
47
|
+
bool m_useThreadPool;
|
|
48
|
+
const boost::asio::ip::tcp::endpoint m_endpoint;
|
|
49
|
+
bzs::netsvc::server::iconnection* m_connection;
|
|
50
|
+
const char* m_readBuf;
|
|
51
|
+
size_t m_readSize;
|
|
52
|
+
bool perseLineEnd(const char* p, size_t size)const;
|
|
53
|
+
size_t onRead(const char* data, size_t size, bool& complete);
|
|
54
|
+
size_t onAccept(char* message, size_t bufsize);
|
|
55
|
+
public:
|
|
56
|
+
module(const boost::asio::ip::tcp::endpoint& endpoint
|
|
57
|
+
, bzs::netsvc::server::iconnection* connection
|
|
58
|
+
, bool tpool,int type);
|
|
59
|
+
~module();
|
|
60
|
+
void reset();
|
|
61
|
+
int execute(char* result, size_t& size, netsvc::server::buffers* optionalData);
|
|
62
|
+
void cleanup(){ m_commandExecuter->cleanup();};
|
|
63
|
+
bool isShutDown(){return m_commandExecuter->isShutDown();}
|
|
64
|
+
bool checkHost(const char* hostCheckname);
|
|
65
|
+
void disconnect();
|
|
66
|
+
boost::mutex& mutex()const{return m_mutex;};
|
|
67
|
+
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
}//namespace transactd
|
|
71
|
+
}//namespace db
|
|
72
|
+
}//namespace bzs
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
#endif //BZS_DB_TRANSACTD_APPMODULE_H
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/*=================================================================
|
|
2
|
+
Copyright (C) 2013 BizStation Corp All rights reserved.
|
|
3
|
+
|
|
4
|
+
This program is free software; you can redistribute it and/or
|
|
5
|
+
modify it under the terms of the GNU General Public License
|
|
6
|
+
as published by the Free Software Foundation; either version 2
|
|
7
|
+
of the License, or (at your option) any later version.
|
|
8
|
+
|
|
9
|
+
This program is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with this program; if not, write to the Free Software
|
|
16
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
17
|
+
02111-1307, USA.
|
|
18
|
+
=================================================================*/
|
|
19
|
+
|
|
20
|
+
#include "appModule.h"
|
|
21
|
+
#include <bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h>
|
|
22
|
+
#include "connManager.h"
|
|
23
|
+
|
|
24
|
+
namespace bzs
|
|
25
|
+
{
|
|
26
|
+
using namespace netsvc::server;
|
|
27
|
+
namespace db
|
|
28
|
+
{
|
|
29
|
+
using namespace protocol::tdap::mysql;
|
|
30
|
+
using namespace engine::mysql;
|
|
31
|
+
|
|
32
|
+
namespace transactd
|
|
33
|
+
{
|
|
34
|
+
|
|
35
|
+
connManager::~connManager()
|
|
36
|
+
{
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const module* getMod(unsigned __int64 conid)
|
|
42
|
+
{
|
|
43
|
+
for (size_t i=0;i<modules.size();i++)
|
|
44
|
+
{
|
|
45
|
+
const module* mod = dynamic_cast<module*>(modules[i]);
|
|
46
|
+
if ((unsigned __int64)mod == conid)
|
|
47
|
+
return mod;
|
|
48
|
+
}
|
|
49
|
+
return NULL;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const database* connManager::getDatabase(const module* mod, int dbid)const
|
|
53
|
+
{
|
|
54
|
+
|
|
55
|
+
igetDatabases* dbm = dynamic_cast<igetDatabases*>(mod->m_commandExecuter.get());
|
|
56
|
+
const databases& dbs = dbm->dbs();
|
|
57
|
+
if (dbid < (int)dbs.size())
|
|
58
|
+
return dbs[dbid].get();
|
|
59
|
+
return NULL;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
void connManager::getConnectionList()const
|
|
63
|
+
{
|
|
64
|
+
for (size_t i=0;i<modules.size();i++)
|
|
65
|
+
{
|
|
66
|
+
const module* mod = dynamic_cast<module*>(modules[i]);
|
|
67
|
+
if (mod && ((unsigned __int64)mod != m_me))
|
|
68
|
+
{
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
m_records.push_back(connection::record());
|
|
72
|
+
connection::record& rec = m_records[m_records.size()-1];
|
|
73
|
+
rec.conId = (unsigned __int64)mod;
|
|
74
|
+
boost::asio::ip::address adr = mod->m_endpoint.address();
|
|
75
|
+
strncpy_s(rec.name,64, adr.to_string().c_str(), 64);
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
void connManager::getDatabaseList(const module* mod)const
|
|
82
|
+
{
|
|
83
|
+
igetDatabases* dbm = dynamic_cast<igetDatabases*>(mod->m_commandExecuter.get());
|
|
84
|
+
const databases& dbs = dbm->dbs();
|
|
85
|
+
for (size_t j=0;j<dbs.size();j++)
|
|
86
|
+
{
|
|
87
|
+
|
|
88
|
+
if (dbs[j])
|
|
89
|
+
{
|
|
90
|
+
m_records.push_back(connection::record());
|
|
91
|
+
connection::record& rec = m_records[m_records.size()-1];
|
|
92
|
+
rec.conId = (unsigned __int64)mod;
|
|
93
|
+
rec.cid = dbs[j]->clientID();
|
|
94
|
+
rec.dbid = (unsigned short)j;
|
|
95
|
+
strncpy_s(rec.name, 64, dbs[j]->name().c_str(),64);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const connManager::records& connManager::getRecords(unsigned __int64 conid, int dbid) const
|
|
101
|
+
{
|
|
102
|
+
boost::mutex::scoped_lock lck(modulesMutex);
|
|
103
|
+
|
|
104
|
+
if (conid==0)
|
|
105
|
+
getConnectionList();
|
|
106
|
+
else
|
|
107
|
+
{
|
|
108
|
+
const module* mod = getMod(conid);
|
|
109
|
+
if (mod)
|
|
110
|
+
{
|
|
111
|
+
boost::try_mutex::scoped_try_lock m(mod->mutex(), boost::try_to_lock_t());
|
|
112
|
+
if (m.owns_lock())
|
|
113
|
+
{
|
|
114
|
+
if (dbid < 0)
|
|
115
|
+
getDatabaseList(mod);
|
|
116
|
+
else
|
|
117
|
+
{
|
|
118
|
+
const database* db = getDatabase(mod, dbid);
|
|
119
|
+
if (db)
|
|
120
|
+
{
|
|
121
|
+
const std::vector<boost::shared_ptr<table> >& tables = db->tables();
|
|
122
|
+
for (size_t k=0;k<tables.size();k++)
|
|
123
|
+
{
|
|
124
|
+
const table* tb = tables[k].get();
|
|
125
|
+
if (tb)
|
|
126
|
+
{
|
|
127
|
+
m_records.push_back(connection::record());
|
|
128
|
+
connection::record& rec = m_records[m_records.size()-1];
|
|
129
|
+
rec.conId = (unsigned __int64)mod;
|
|
130
|
+
rec.cid = db->clientID();
|
|
131
|
+
|
|
132
|
+
strncpy_s(rec.name, 64, tb->name().c_str(),64);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return m_records;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
void connManager::doDisconnect(unsigned __int64 conid)
|
|
144
|
+
{
|
|
145
|
+
module* mod = const_cast<module*>(getMod(conid));
|
|
146
|
+
if (mod)
|
|
147
|
+
{
|
|
148
|
+
igetDatabases* dbm = dynamic_cast<igetDatabases*>(mod->m_commandExecuter.get());
|
|
149
|
+
const databases& dbs = dbm->dbs();
|
|
150
|
+
if (dbs.size())
|
|
151
|
+
mod->disconnect();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
void connManager::disconnect(unsigned __int64 conid)
|
|
156
|
+
{
|
|
157
|
+
boost::try_mutex::scoped_lock m(modulesMutex, boost::try_to_lock_t());
|
|
158
|
+
|
|
159
|
+
if (m.owns_lock())
|
|
160
|
+
doDisconnect(conid);
|
|
161
|
+
else
|
|
162
|
+
{
|
|
163
|
+
for (int i=0;i<20;i++)
|
|
164
|
+
{
|
|
165
|
+
if (m.try_lock())
|
|
166
|
+
return doDisconnect(conid);
|
|
167
|
+
Sleep(100);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
void connManager::doDisconnectAll()
|
|
173
|
+
{
|
|
174
|
+
for (size_t i=0;i<modules.size();i++)
|
|
175
|
+
{
|
|
176
|
+
const module* mod = dynamic_cast<module*>(modules[i]);
|
|
177
|
+
doDisconnect((unsigned __int64)mod);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
void connManager::disconnectAll()
|
|
182
|
+
{
|
|
183
|
+
boost::try_mutex::scoped_lock m(modulesMutex, boost::try_to_lock_t());
|
|
184
|
+
|
|
185
|
+
if (m.owns_lock())
|
|
186
|
+
doDisconnectAll();
|
|
187
|
+
else
|
|
188
|
+
{
|
|
189
|
+
for (int i=0;i<20;i++)
|
|
190
|
+
{
|
|
191
|
+
if (m.try_lock())
|
|
192
|
+
return doDisconnectAll();;
|
|
193
|
+
Sleep(100);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
}//namespace transactd
|
|
200
|
+
}//namespace db
|
|
201
|
+
}//namespace bzs
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#ifndef BZS_DB_TRANSACTD_CONNMANAGER_H
|
|
2
|
+
#define BZS_DB_TRANSACTD_CONNMANAGER_H
|
|
3
|
+
/*=================================================================
|
|
4
|
+
Copyright (C) 2013 BizStation Corp All rights reserved.
|
|
5
|
+
|
|
6
|
+
This program is free software; you can redistribute it and/or
|
|
7
|
+
modify it under the terms of the GNU General Public License
|
|
8
|
+
as published by the Free Software Foundation; either version 2
|
|
9
|
+
of the License, or (at your option) any later version.
|
|
10
|
+
|
|
11
|
+
This program is distributed in the hope that it will be useful,
|
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
GNU General Public License for more details.
|
|
15
|
+
|
|
16
|
+
You should have received a copy of the GNU General Public License
|
|
17
|
+
along with this program; if not, write to the Free Software
|
|
18
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
19
|
+
02111-1307, USA.
|
|
20
|
+
=================================================================*/
|
|
21
|
+
#include "connectionRecord.h"
|
|
22
|
+
#include <bzs/netsvc/server/IAppModule.h>
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
namespace bzs
|
|
26
|
+
{
|
|
27
|
+
namespace db
|
|
28
|
+
{
|
|
29
|
+
namespace engine{namespace mysql{class database;}}
|
|
30
|
+
namespace transactd
|
|
31
|
+
{
|
|
32
|
+
|
|
33
|
+
class module;
|
|
34
|
+
|
|
35
|
+
class connManager
|
|
36
|
+
{
|
|
37
|
+
public:
|
|
38
|
+
|
|
39
|
+
typedef std::vector<connection::record> records;
|
|
40
|
+
private:
|
|
41
|
+
mutable records m_records;
|
|
42
|
+
__int64 m_me;
|
|
43
|
+
void getConnectionList()const;
|
|
44
|
+
void getDatabaseList(const module* mod) const;
|
|
45
|
+
const bzs::db::engine::mysql::database* getDatabase(const module* mod, int dbid)const;
|
|
46
|
+
void doDisconnect(unsigned __int64 conid);
|
|
47
|
+
void doDisconnectAll();
|
|
48
|
+
public:
|
|
49
|
+
connManager(unsigned __int64 me):m_me(me){};
|
|
50
|
+
virtual ~connManager();
|
|
51
|
+
const records& getRecords(unsigned __int64 conid, int dbid) const;
|
|
52
|
+
void disconnect(unsigned __int64 conid);
|
|
53
|
+
void disconnectAll();
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
}//namespace transactd
|
|
57
|
+
}//namespace db
|
|
58
|
+
}//namespace bzs
|
|
59
|
+
|
|
60
|
+
#endif//BZS_DB_TRANSACTD_CONNMANAGER_H
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#ifndef BZS_DB_TRANSACTD_CONNECTIONRECORD_H
|
|
2
|
+
#define BZS_DB_TRANSACTD_CONNECTIONRECORD_H
|
|
3
|
+
/*=================================================================
|
|
4
|
+
Copyright (C) 2013 BizStation Corp All rights reserved.
|
|
5
|
+
|
|
6
|
+
This program is free software; you can redistribute it and/or
|
|
7
|
+
modify it under the terms of the GNU General Public License
|
|
8
|
+
as published by the Free Software Foundation; either version 2
|
|
9
|
+
of the License, or (at your option) any later version.
|
|
10
|
+
|
|
11
|
+
This program is distributed in the hope that it will be useful,
|
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
GNU General Public License for more details.
|
|
15
|
+
|
|
16
|
+
You should have received a copy of the GNU General Public License
|
|
17
|
+
along with this program; if not, write to the Free Software
|
|
18
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
19
|
+
02111-1307, USA.
|
|
20
|
+
=================================================================*/
|
|
21
|
+
#include <bzs/env/compiler.h>
|
|
22
|
+
#include <bzs/env/crosscompile.h>
|
|
23
|
+
|
|
24
|
+
#pragma option -a-
|
|
25
|
+
pragma_pack1
|
|
26
|
+
|
|
27
|
+
namespace bzs
|
|
28
|
+
{
|
|
29
|
+
namespace db
|
|
30
|
+
{
|
|
31
|
+
namespace transactd
|
|
32
|
+
{
|
|
33
|
+
namespace connection
|
|
34
|
+
{
|
|
35
|
+
struct record
|
|
36
|
+
{
|
|
37
|
+
record():conId(0),dbid(0),cid(0)
|
|
38
|
+
{
|
|
39
|
+
name[0] = 0x00;
|
|
40
|
+
status = 0;
|
|
41
|
+
}
|
|
42
|
+
__int64 conId;
|
|
43
|
+
unsigned int cid;
|
|
44
|
+
unsigned short dbid;
|
|
45
|
+
char name[64];
|
|
46
|
+
union
|
|
47
|
+
{
|
|
48
|
+
char status;
|
|
49
|
+
struct
|
|
50
|
+
{
|
|
51
|
+
char inTransaction:1;
|
|
52
|
+
char inSnapshot :1;
|
|
53
|
+
char openNormal :1;
|
|
54
|
+
char openReadOnly :1;
|
|
55
|
+
char openEx :1;
|
|
56
|
+
char dummy :3;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
}//connection
|
|
62
|
+
}//transactd
|
|
63
|
+
}//db
|
|
64
|
+
}//bzs
|
|
65
|
+
|
|
66
|
+
#pragma option -a
|
|
67
|
+
pragma_pop
|
|
68
|
+
|
|
69
|
+
#endif //BZS_DB_TRANSACTD_CONNECTIONRECORD_H
|