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.
Files changed (218) hide show
  1. checksums.yaml +7 -0
  2. data/BUILD_UNIX-JA +174 -0
  3. data/BUILD_WIN-JA +256 -0
  4. data/CMakeLists.txt +96 -0
  5. data/COPYING +339 -0
  6. data/README +406 -0
  7. data/README-JA +424 -0
  8. data/bin/common/tdclc_32_1_0.dll +0 -0
  9. data/bin/common/tdclc_64_1_0.dll +0 -0
  10. data/build/common/check_for_link_iconv.cmake +73 -0
  11. data/build/common/copyifgreater.cmd +30 -0
  12. data/build/common/copyifgreater.js +290 -0
  13. data/build/common/get_boost_libs.cmake +106 -0
  14. data/build/common/get_ruby_path.cmake +115 -0
  15. data/build/common/options.cmake +127 -0
  16. data/build/common/smart_install.cmake +263 -0
  17. data/build/common/system.cmake +122 -0
  18. data/build/common/transactd.rc.in +52 -0
  19. data/build/common/transactd_cl_common.cmake +101 -0
  20. data/build/common/transactd_cl_output.cmake +93 -0
  21. data/build/common/transactd_common.cmake +237 -0
  22. data/build/common/transactd_required.cmake +28 -0
  23. data/build/swig/ruby/generate.cmake.in +35 -0
  24. data/build/swig/ruby/generate.cmd.in +19 -0
  25. data/build/swig/ruby/ruby.swg +101 -0
  26. data/build/swig/tdcl.i +188 -0
  27. data/build/tdclc/BUILDNUMBER.txt +1 -0
  28. data/build/tdclc/CMakeLists.txt +170 -0
  29. data/build/tdclc/tdclc_32.cbproj +181 -0
  30. data/build/tdclc/tdclc_64.cbproj +205 -0
  31. data/build/tdclcpp/BUILDNUMBER.txt +1 -0
  32. data/build/tdclcpp/CMakeLists.txt +142 -0
  33. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +239 -0
  34. data/build/tdclcpp/tdclcpp_bcb_64.cbproj +304 -0
  35. data/build/tdclrb/BUILDNUMBER.txt +1 -0
  36. data/build/tdclrb/CMakeLists.txt +258 -0
  37. data/build/tdclrb/GEM_VERSION +3 -0
  38. data/build/tdclrb/bldgem/extconf.rb +123 -0
  39. data/build/tdclrb/gem/INSTALLLOG.win32 +9 -0
  40. data/build/tdclrb/gem/Makefile.win32-VS +65 -0
  41. data/build/tdclrb/gem/Makefile.win32-prebuilt +48 -0
  42. data/build/tdclrb/gem/detect.rb +31 -0
  43. data/build/tdclrb/gem/helper.rb +113 -0
  44. data/build/tdclrb/gem/transactd.rb +22 -0
  45. data/build/tdclrb/gem_output.cmake +44 -0
  46. data/source/bzs/db/IBlobBuffer.h +51 -0
  47. data/source/bzs/db/blobBuffer.h +177 -0
  48. data/source/bzs/db/blobStructs.h +85 -0
  49. data/source/bzs/db/engine/mysql/IReadRecords.h +52 -0
  50. data/source/bzs/db/engine/mysql/bookmark.h +195 -0
  51. data/source/bzs/db/engine/mysql/database.cpp +1882 -0
  52. data/source/bzs/db/engine/mysql/database.h +465 -0
  53. data/source/bzs/db/engine/mysql/dbManager.cpp +303 -0
  54. data/source/bzs/db/engine/mysql/dbManager.h +143 -0
  55. data/source/bzs/db/engine/mysql/errorMessage.cpp +75 -0
  56. data/source/bzs/db/engine/mysql/errorMessage.h +43 -0
  57. data/source/bzs/db/engine/mysql/fieldAccess.h +158 -0
  58. data/source/bzs/db/engine/mysql/mydebuglog.cpp +349 -0
  59. data/source/bzs/db/engine/mysql/mydebuglog.h +89 -0
  60. data/source/bzs/db/engine/mysql/mysqlInternal.h +171 -0
  61. data/source/bzs/db/engine/mysql/mysqlThd.cpp +169 -0
  62. data/source/bzs/db/engine/mysql/mysqlThd.h +35 -0
  63. data/source/bzs/db/engine/mysql/percentageKey.h +260 -0
  64. data/source/bzs/db/protocol/ICommandExecuter.h +49 -0
  65. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +689 -0
  66. data/source/bzs/db/protocol/hs/hsCommandExecuter.h +228 -0
  67. data/source/bzs/db/protocol/tdap/btrDate.cpp +437 -0
  68. data/source/bzs/db/protocol/tdap/btrDate.h +227 -0
  69. data/source/bzs/db/protocol/tdap/client/bulkInsert.h +127 -0
  70. data/source/bzs/db/protocol/tdap/client/client.cpp +106 -0
  71. data/source/bzs/db/protocol/tdap/client/client.h +292 -0
  72. data/source/bzs/db/protocol/tdap/client/connMgr.cpp +144 -0
  73. data/source/bzs/db/protocol/tdap/client/connMgr.h +82 -0
  74. data/source/bzs/db/protocol/tdap/client/database.cpp +863 -0
  75. data/source/bzs/db/protocol/tdap/client/database.h +118 -0
  76. data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +100 -0
  77. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +1640 -0
  78. data/source/bzs/db/protocol/tdap/client/dbDef.h +135 -0
  79. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +434 -0
  80. data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +92 -0
  81. data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +98 -0
  82. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +174 -0
  83. data/source/bzs/db/protocol/tdap/client/fieldDDF.h +91 -0
  84. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +140 -0
  85. data/source/bzs/db/protocol/tdap/client/fileDDF.h +86 -0
  86. data/source/bzs/db/protocol/tdap/client/filter.cpp +527 -0
  87. data/source/bzs/db/protocol/tdap/client/filter.h +154 -0
  88. data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +137 -0
  89. data/source/bzs/db/protocol/tdap/client/indexDDF.h +84 -0
  90. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +724 -0
  91. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +123 -0
  92. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +899 -0
  93. data/source/bzs/db/protocol/tdap/client/nsTable.h +199 -0
  94. data/source/bzs/db/protocol/tdap/client/request.h +198 -0
  95. data/source/bzs/db/protocol/tdap/client/sharedData.cpp +58 -0
  96. data/source/bzs/db/protocol/tdap/client/sharedData.h +56 -0
  97. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +574 -0
  98. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +53 -0
  99. data/source/bzs/db/protocol/tdap/client/stringConverter.h +627 -0
  100. data/source/bzs/db/protocol/tdap/client/table.cpp +2613 -0
  101. data/source/bzs/db/protocol/tdap/client/table.h +221 -0
  102. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +1096 -0
  103. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +179 -0
  104. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +40 -0
  105. data/source/bzs/db/protocol/tdap/client/trnsctcl.def +11 -0
  106. data/source/bzs/db/protocol/tdap/myDateTime.cpp +500 -0
  107. data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +184 -0
  108. data/source/bzs/db/protocol/tdap/mysql/characterset.h +60 -0
  109. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +284 -0
  110. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +53 -0
  111. data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +383 -0
  112. data/source/bzs/db/protocol/tdap/mysql/debuglog.h +106 -0
  113. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +680 -0
  114. data/source/bzs/db/protocol/tdap/mysql/request.h +202 -0
  115. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1020 -0
  116. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +141 -0
  117. data/source/bzs/db/protocol/tdap/tdapRequest.h +190 -0
  118. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +295 -0
  119. data/source/bzs/db/protocol/tdap/tdapSchema.h +558 -0
  120. data/source/bzs/db/protocol/tdap/tdapcapi.h +423 -0
  121. data/source/bzs/db/transactd/appBuilderImple.h +55 -0
  122. data/source/bzs/db/transactd/appModule.cpp +183 -0
  123. data/source/bzs/db/transactd/appModule.h +80 -0
  124. data/source/bzs/db/transactd/connManager.cpp +201 -0
  125. data/source/bzs/db/transactd/connManager.h +60 -0
  126. data/source/bzs/db/transactd/connectionRecord.h +69 -0
  127. data/source/bzs/db/transactd/transactd.cpp +325 -0
  128. data/source/bzs/env/compiler.h +135 -0
  129. data/source/bzs/env/crosscompile.cpp +130 -0
  130. data/source/bzs/env/crosscompile.h +150 -0
  131. data/source/bzs/env/fileopen.h +36 -0
  132. data/source/bzs/env/mbcswchrLinux.cpp +40 -0
  133. data/source/bzs/env/mbcswchrLinux.h +88 -0
  134. data/source/bzs/env/tstring.h +183 -0
  135. data/source/bzs/example/changeSchema.cpp +117 -0
  136. data/source/bzs/example/changeSchema_c.cpp +78 -0
  137. data/source/bzs/example/connection_pool_c.cpp +171 -0
  138. data/source/bzs/example/createDatabase.cpp +305 -0
  139. data/source/bzs/example/createDatabase_c.cpp +202 -0
  140. data/source/bzs/example/deleteRecords.cpp +87 -0
  141. data/source/bzs/example/deleteRecords_c.cpp +57 -0
  142. data/source/bzs/example/dropDatabase.cpp +59 -0
  143. data/source/bzs/example/dropDatabase_c.cpp +34 -0
  144. data/source/bzs/example/insertRecords.cpp +212 -0
  145. data/source/bzs/example/insertRecords_c.cpp +153 -0
  146. data/source/bzs/example/readRecords.cpp +141 -0
  147. data/source/bzs/example/readRecords_c.cpp +107 -0
  148. data/source/bzs/example/updateRecords.cpp +99 -0
  149. data/source/bzs/example/updateRecords_c.cpp +71 -0
  150. data/source/bzs/example/update_with_transaction.cpp +104 -0
  151. data/source/bzs/example/update_with_transaction_c.cpp +80 -0
  152. data/source/bzs/netsvc/client/tcpClient.cpp +226 -0
  153. data/source/bzs/netsvc/client/tcpClient.h +489 -0
  154. data/source/bzs/netsvc/server/IAppModule.h +94 -0
  155. data/source/bzs/netsvc/server/iserver.h +65 -0
  156. data/source/bzs/netsvc/server/serverCpt.cpp +522 -0
  157. data/source/bzs/netsvc/server/serverCpt.h +88 -0
  158. data/source/bzs/netsvc/server/serverPipe.cpp +705 -0
  159. data/source/bzs/netsvc/server/serverPipe.h +96 -0
  160. data/source/bzs/netsvc/server/serverTpool.cpp +416 -0
  161. data/source/bzs/netsvc/server/serverTpool.h +84 -0
  162. data/source/bzs/rtl/benchmark.cpp +96 -0
  163. data/source/bzs/rtl/benchmark.h +65 -0
  164. data/source/bzs/rtl/datetime.cpp +375 -0
  165. data/source/bzs/rtl/datetime.h +53 -0
  166. data/source/bzs/rtl/debuglog.cpp +106 -0
  167. data/source/bzs/rtl/debuglog.h +97 -0
  168. data/source/bzs/rtl/exception.h +116 -0
  169. data/source/bzs/rtl/stl_uty.cpp +35 -0
  170. data/source/bzs/rtl/stl_uty.h +29 -0
  171. data/source/bzs/rtl/stringBuffers.cpp +101 -0
  172. data/source/bzs/rtl/stringBuffers.h +58 -0
  173. data/source/bzs/rtl/strtrim.cpp +135 -0
  174. data/source/bzs/rtl/strtrim.h +46 -0
  175. data/source/bzs/test/tdclatl/bench_tdclatl.js +445 -0
  176. data/source/bzs/test/tdclrb/bench_tdclcpp.rb +375 -0
  177. data/source/bzs/test/tdclrb/prepare.rb +226 -0
  178. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +172 -0
  179. data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +208 -0
  180. data/source/bzs/test/tdclrb/transactd_spec.rb +1536 -0
  181. data/source/bzs/test/transactdBench/transactdBench.cpp +430 -0
  182. data/source/bzs/test/transactdBench/transactdBench2.cpp +342 -0
  183. data/source/bzs/test/trdclengn/test_trdclengn.cpp +2030 -0
  184. data/source/global/tdclatl/Database.cpp +503 -0
  185. data/source/global/tdclatl/Database.h +139 -0
  186. data/source/global/tdclatl/DbDef.cpp +242 -0
  187. data/source/global/tdclatl/DbDef.h +79 -0
  188. data/source/global/tdclatl/Field.cpp +92 -0
  189. data/source/global/tdclatl/Field.h +59 -0
  190. data/source/global/tdclatl/FieldDef.cpp +238 -0
  191. data/source/global/tdclatl/FieldDef.h +87 -0
  192. data/source/global/tdclatl/Flags.cpp +111 -0
  193. data/source/global/tdclatl/Flags.h +55 -0
  194. data/source/global/tdclatl/KeyDef.cpp +51 -0
  195. data/source/global/tdclatl/KeyDef.h +55 -0
  196. data/source/global/tdclatl/KeySegment.cpp +55 -0
  197. data/source/global/tdclatl/Table.cpp +600 -0
  198. data/source/global/tdclatl/Table.h +144 -0
  199. data/source/global/tdclatl/TableDef.cpp +291 -0
  200. data/source/global/tdclatl/TableDef.h +86 -0
  201. data/source/global/tdclatl/TdVersion.cpp +74 -0
  202. data/source/global/tdclatl/TdVersion.h +54 -0
  203. data/source/global/tdclatl/_IDatabaseEvents_CP.h +113 -0
  204. data/source/global/tdclatl/dllmain.cpp +30 -0
  205. data/source/global/tdclatl/dllmain.h +27 -0
  206. data/source/global/tdclatl/keySegment.h +57 -0
  207. data/source/global/tdclatl/resource.h +0 -0
  208. data/source/global/tdclatl/stdafx.cpp +2 -0
  209. data/source/global/tdclatl/stdafx.h +25 -0
  210. data/source/global/tdclatl/targetver.h +4 -0
  211. data/source/global/tdclatl/tdclatl.cpp +68 -0
  212. data/source/global/tdclatl/tdclatl.def +10 -0
  213. data/source/global/tdclatl/tdclatl.idl +1035 -0
  214. data/source/linux/charsetConvert.h +112 -0
  215. data/source/linux/linuxTypes.h +33 -0
  216. data/source/linux/tchar.h +428 -0
  217. data/transactd.gemspec +97 -0
  218. 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