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,292 @@
|
|
|
1
|
+
#ifndef BZS_DB_PROTOCOL_TDAP_CLIENT_CLIENT_H
|
|
2
|
+
#define BZS_DB_PROTOCOL_TDAP_CLIENT_CLIENT_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
|
+
#include "sqlBuilder.h"
|
|
22
|
+
#include "request.h"
|
|
23
|
+
#include <bzs/db/blobBuffer.h>
|
|
24
|
+
#include <boost/thread/mutex.hpp>
|
|
25
|
+
#include <bzs/db/protocol/tdap/tdapSchema.h>
|
|
26
|
+
#include <bzs/netsvc/client/tcpClient.h>
|
|
27
|
+
#include <bzs/db/protocol/tdap/tdapcapi.h>
|
|
28
|
+
#include <bzs/db/protocol/tdap/mysql/characterset.h>
|
|
29
|
+
#include <bzs/env/compiler.h>
|
|
30
|
+
#include <bzs/rtl/stl_uty.h>
|
|
31
|
+
#include <vector>
|
|
32
|
+
#ifdef _WIN32
|
|
33
|
+
#include <mbstring.h>
|
|
34
|
+
#endif
|
|
35
|
+
extern bzs::netsvc::client::connections* m_cons;
|
|
36
|
+
|
|
37
|
+
namespace bzs
|
|
38
|
+
{
|
|
39
|
+
namespace db
|
|
40
|
+
{
|
|
41
|
+
namespace protocol
|
|
42
|
+
{
|
|
43
|
+
namespace tdap
|
|
44
|
+
{
|
|
45
|
+
namespace client
|
|
46
|
+
{
|
|
47
|
+
#define TABELNAME_PREFIX "dbfile="
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class client
|
|
52
|
+
{
|
|
53
|
+
|
|
54
|
+
mutex m_mutex;
|
|
55
|
+
request m_req;
|
|
56
|
+
posblk m_tmpPbk;
|
|
57
|
+
ushort_td m_op;
|
|
58
|
+
ushort_td m_preResult;
|
|
59
|
+
int m_charsetIndexServer;
|
|
60
|
+
std::string m_sql;
|
|
61
|
+
std::string m_serverCharData;
|
|
62
|
+
std::string m_serverCharData2;
|
|
63
|
+
|
|
64
|
+
uint_td m_tmplen;
|
|
65
|
+
bool m_logout;
|
|
66
|
+
blobBuffer m_blobBuffer;
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
std::vector<char> m_sendbuf;
|
|
70
|
+
inline bzs::netsvc::client::connection* con(){return m_req.cid->con;};
|
|
71
|
+
inline void setCon(bzs::netsvc::client::connection* con){m_req.cid->con=con;};
|
|
72
|
+
|
|
73
|
+
inline void disconnect()
|
|
74
|
+
{
|
|
75
|
+
m_req.result = !m_cons->disconnect(con());
|
|
76
|
+
if (m_req.result==0)
|
|
77
|
+
setCon(NULL);
|
|
78
|
+
}
|
|
79
|
+
std::string getHostName(const char* uri)
|
|
80
|
+
{
|
|
81
|
+
std::vector<std::string> ss ;
|
|
82
|
+
split(ss, uri, "/"); /* btrv://serverName/dbName?dbfile=xxx */
|
|
83
|
+
if (ss.size()<3)
|
|
84
|
+
return "";
|
|
85
|
+
return ss[2];
|
|
86
|
+
}
|
|
87
|
+
std::string getTableName(const char* uri)
|
|
88
|
+
{
|
|
89
|
+
if (uri)
|
|
90
|
+
{
|
|
91
|
+
mbchar* en = (mbchar*)uri;
|
|
92
|
+
mbchar* st = _mbsstr(en, (mbchar*)TABELNAME_PREFIX);
|
|
93
|
+
if (st)
|
|
94
|
+
{
|
|
95
|
+
st +=strlen(TABELNAME_PREFIX);
|
|
96
|
+
mbchar* tmp = _mbsstr(st, (mbchar*)PSEPARATOR_A);
|
|
97
|
+
if (tmp)
|
|
98
|
+
st = tmp+1;
|
|
99
|
+
en = _mbsstr(st, (mbchar*)".");
|
|
100
|
+
if (en==NULL)
|
|
101
|
+
en = st + strlen((char*)st);
|
|
102
|
+
return std::string((const char*)st, en-st);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return "";
|
|
106
|
+
}
|
|
107
|
+
static void addSecondCharsetData(unsigned int destCodePage, std::string& src);
|
|
108
|
+
public:
|
|
109
|
+
client():m_charsetIndexServer(-1)
|
|
110
|
+
{
|
|
111
|
+
}
|
|
112
|
+
request& req(){return m_req;}
|
|
113
|
+
inline void setParam(ushort_td op, posblk* pbk,
|
|
114
|
+
void_td* data, uint_td* datalen,
|
|
115
|
+
void_td* keybuf, keylen_td keylen,
|
|
116
|
+
char_td keyNum, clientID* cid)
|
|
117
|
+
{
|
|
118
|
+
m_op = op;
|
|
119
|
+
m_req.op = op;
|
|
120
|
+
m_req.pbk = pbk;
|
|
121
|
+
m_req.data = data;
|
|
122
|
+
m_req.datalen = datalen;
|
|
123
|
+
m_req.keybuf = keybuf;
|
|
124
|
+
m_req.keylen = keylen;
|
|
125
|
+
m_req.keyNum = keyNum;
|
|
126
|
+
m_req.cid = cid;
|
|
127
|
+
m_req.paramMask = 0;
|
|
128
|
+
m_preResult = 0;
|
|
129
|
+
m_logout = false;
|
|
130
|
+
if (m_req.pbk==NULL) m_req.pbk = &m_tmpPbk;
|
|
131
|
+
|
|
132
|
+
}
|
|
133
|
+
inline short_td result(){return m_preResult;}
|
|
134
|
+
|
|
135
|
+
inline bool stop_if()
|
|
136
|
+
{
|
|
137
|
+
if (m_op==TD_STOP_ENGINE)
|
|
138
|
+
{
|
|
139
|
+
m_req.result = !m_cons->disconnect(con());
|
|
140
|
+
if (m_req.result==0)
|
|
141
|
+
setCon(NULL);
|
|
142
|
+
return !m_req.result;
|
|
143
|
+
}
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
inline void connect()
|
|
147
|
+
{
|
|
148
|
+
if (!m_req.cid->con)
|
|
149
|
+
{
|
|
150
|
+
std::string host = getHostName((const char*)m_req.keybuf);
|
|
151
|
+
if (host=="")
|
|
152
|
+
m_req.result = ERROR_TD_HOSTNAME_NOT_FOUND;
|
|
153
|
+
setCon(m_cons->connect(host)); //if error throw exception
|
|
154
|
+
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
}
|
|
158
|
+
inline void create()
|
|
159
|
+
{
|
|
160
|
+
m_req.paramMask = P_MASK_ALL;
|
|
161
|
+
if ((m_req.datalen==NULL) || *m_req.datalen == 0)
|
|
162
|
+
m_req.paramMask = P_MASK_KEYONLY;
|
|
163
|
+
else if (m_req.keyNum > CR_SUBOP_SWAPNAME) //-126 swap -127 is rename. -128 is drop.
|
|
164
|
+
{
|
|
165
|
+
m_req.paramMask &= ~P_MASK_POSBLK;
|
|
166
|
+
std::string name = getTableName((const char*)m_req.keybuf);
|
|
167
|
+
if ((m_req.keyNum==1)|| (m_req.keyNum==2)) //make by tabledef
|
|
168
|
+
{
|
|
169
|
+
m_sql = sqlCreateTable(name.c_str(), (tabledef*)m_req.data, m_charsetIndexServer);
|
|
170
|
+
m_req.keyNum -= 2; // 1= exists check 2 = no exists check
|
|
171
|
+
}else
|
|
172
|
+
m_sql = sqlCreateTable(name.c_str(), (fileSpec*)m_req.data, m_charsetIndexServer);
|
|
173
|
+
m_req.data =(ushort_td*) m_sql.c_str();
|
|
174
|
+
m_tmplen = (uint_td)(m_sql.size()+1);
|
|
175
|
+
m_req.datalen = &m_tmplen;
|
|
176
|
+
}else if ((m_req.keyNum == CR_SUBOP_SWAPNAME)||(m_req.keyNum == CR_SUBOP_RENAME))
|
|
177
|
+
{
|
|
178
|
+
readServerCharsetIndex();
|
|
179
|
+
//m_sql = std::string((char*)m_req.data, *m_req.datalen);
|
|
180
|
+
m_sql = (char*)m_req.data;
|
|
181
|
+
addSecondCharsetData(mysql::codePage(m_charsetIndexServer), m_sql);
|
|
182
|
+
m_req.data =(ushort_td*) m_sql.c_str();
|
|
183
|
+
m_tmplen = (uint_td)(m_sql.size()+1);
|
|
184
|
+
m_req.datalen = &m_tmplen;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
inline void cmdConnect()
|
|
188
|
+
{
|
|
189
|
+
if ((m_req.keyNum == LG_SUBOP_CONNECT)|| (m_req.keyNum == LG_SUBOP_NEWCONNECT))
|
|
190
|
+
{
|
|
191
|
+
if (con() && con()->isConnected())
|
|
192
|
+
m_preResult = 1;
|
|
193
|
+
else
|
|
194
|
+
{
|
|
195
|
+
std::string host = getHostName((const char*)m_req.keybuf);
|
|
196
|
+
if (host=="")
|
|
197
|
+
m_preResult = ERROR_TD_HOSTNAME_NOT_FOUND;
|
|
198
|
+
setCon(m_cons->connect(host, (m_req.keyNum == LG_SUBOP_NEWCONNECT))); //if error throw exception
|
|
199
|
+
buildDualChasetKeybuf();
|
|
200
|
+
}
|
|
201
|
+
}else if (m_req.keyNum == LG_SUBOP_DISCONNECT)
|
|
202
|
+
{
|
|
203
|
+
if (con())
|
|
204
|
+
m_logout = true;
|
|
205
|
+
else if (m_op==TD_CONNECT)
|
|
206
|
+
m_preResult = 1;
|
|
207
|
+
}
|
|
208
|
+
m_req.paramMask = P_MASK_KEYONLY;
|
|
209
|
+
}
|
|
210
|
+
inline ushort_td execute()
|
|
211
|
+
{
|
|
212
|
+
if (result()==0)
|
|
213
|
+
{
|
|
214
|
+
//mutex::scoped_lock lck(m_mutex);
|
|
215
|
+
if (!con())
|
|
216
|
+
m_preResult = ERROR_TD_NOT_CONNECTED;
|
|
217
|
+
else
|
|
218
|
+
{
|
|
219
|
+
char* p = con()->sendBuffer();
|
|
220
|
+
unsigned int size = m_req.serialize(p);
|
|
221
|
+
if ((m_req.paramMask & P_MASK_BLOBBODY) && m_blobBuffer.blobs())
|
|
222
|
+
size = m_req.serializeBlobBody(&m_blobBuffer
|
|
223
|
+
, p, con()->sendBufferSize(), con()->optionalBuffers());
|
|
224
|
+
p = con()->asyncWriteRead(size);
|
|
225
|
+
m_req.parse(p);
|
|
226
|
+
if (m_logout)
|
|
227
|
+
disconnect();
|
|
228
|
+
m_preResult = m_req.result;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
}
|
|
232
|
+
return result();
|
|
233
|
+
}
|
|
234
|
+
inline ushort_td getBlobBuffer(const blobHeader** data)
|
|
235
|
+
{
|
|
236
|
+
*data = m_req.blobHeader;
|
|
237
|
+
return *data ? 0:1;;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
inline ushort_td addBlob(const blob* data, bool endRow)
|
|
241
|
+
{
|
|
242
|
+
if (endRow)
|
|
243
|
+
{
|
|
244
|
+
if (m_blobBuffer.fieldCount()==0)
|
|
245
|
+
m_blobBuffer.setFieldCount((unsigned int)m_blobBuffer.blobs());
|
|
246
|
+
return 0;
|
|
247
|
+
}
|
|
248
|
+
if (data==NULL)
|
|
249
|
+
m_blobBuffer.clear();
|
|
250
|
+
else
|
|
251
|
+
m_blobBuffer.addBlob(*data);
|
|
252
|
+
return 0;
|
|
253
|
+
}
|
|
254
|
+
bool readServerCharsetIndex();
|
|
255
|
+
|
|
256
|
+
bool buildDualChasetKeybuf();
|
|
257
|
+
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
#ifndef _MSC_VER
|
|
261
|
+
extern __THREAD client* __THREAD_BCB g_client;
|
|
262
|
+
#else
|
|
263
|
+
extern DWORD g_tlsiID;
|
|
264
|
+
#endif
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
inline client* getClientThread()
|
|
268
|
+
{
|
|
269
|
+
#ifdef _MSC_VER
|
|
270
|
+
return (client*)TlsGetValue(g_tlsiID);
|
|
271
|
+
#else
|
|
272
|
+
return g_client;
|
|
273
|
+
#endif
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
inline void setClientThread(client* v)
|
|
277
|
+
{
|
|
278
|
+
#ifdef _MSC_VER
|
|
279
|
+
TlsSetValue(g_tlsiID, v);
|
|
280
|
+
#else
|
|
281
|
+
g_client = v;
|
|
282
|
+
#endif
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
}//namespace client
|
|
287
|
+
}//namespace tdap
|
|
288
|
+
}//namespace protocol
|
|
289
|
+
}//namespace db
|
|
290
|
+
}//namespace bzs
|
|
291
|
+
|
|
292
|
+
#endif//BZS_DB_PROTOCOL_TDAP_CLIENT_CLIENT_H
|
|
@@ -0,0 +1,144 @@
|
|
|
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
|
+
#include <bzs/env/tstring.h>
|
|
20
|
+
#pragma hdrstop
|
|
21
|
+
|
|
22
|
+
#include "connMgr.h"
|
|
23
|
+
#include "database.h"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
#pragma package(smart_init)
|
|
27
|
+
|
|
28
|
+
namespace bzs
|
|
29
|
+
{
|
|
30
|
+
namespace db
|
|
31
|
+
{
|
|
32
|
+
namespace protocol
|
|
33
|
+
{
|
|
34
|
+
namespace tdap
|
|
35
|
+
{
|
|
36
|
+
namespace client
|
|
37
|
+
{
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
connMgr::connMgr(database* db):nstable(db)
|
|
41
|
+
{
|
|
42
|
+
m_db = db;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
connMgr::~connMgr()
|
|
46
|
+
{
|
|
47
|
+
|
|
48
|
+
}
|
|
49
|
+
database* connMgr::db()const{return m_db;}
|
|
50
|
+
|
|
51
|
+
void connMgr::connect(const _TCHAR* uri)
|
|
52
|
+
{
|
|
53
|
+
m_db->connect(uri, true);
|
|
54
|
+
m_stat = m_db->stat();
|
|
55
|
+
if (m_stat == 0)
|
|
56
|
+
m_uri = uri;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
void connMgr::disconnect()
|
|
60
|
+
{
|
|
61
|
+
if (m_uri != _T(""))
|
|
62
|
+
{
|
|
63
|
+
m_db->disconnect(m_uri.c_str());
|
|
64
|
+
m_stat = m_db->stat();
|
|
65
|
+
if (m_stat == 0)
|
|
66
|
+
m_uri = _T("");
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
void connMgr::allocBuffer()
|
|
71
|
+
{
|
|
72
|
+
m_records.resize(64000/sizeof(connMgr::record));
|
|
73
|
+
|
|
74
|
+
m_datalen = m_buflen = (uint_td)(m_records.size()*sizeof(connMgr::record));
|
|
75
|
+
m_pdata = (void*)&m_records[0];
|
|
76
|
+
memset(m_pdata, 0, m_datalen);
|
|
77
|
+
setIsOpen(true);
|
|
78
|
+
m_keybuf = &m_params[0];
|
|
79
|
+
m_params[0] = 0;
|
|
80
|
+
m_params[1] = 0;
|
|
81
|
+
m_keylen = sizeof(m_params);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const connMgr::records& connMgr::connections()
|
|
85
|
+
{
|
|
86
|
+
allocBuffer();
|
|
87
|
+
m_keynum = TD_STSTCS_READ;
|
|
88
|
+
tdap(TD_STASTISTICS);
|
|
89
|
+
if (m_stat == 0)
|
|
90
|
+
m_records.resize(m_datalen/sizeof(connMgr::record));
|
|
91
|
+
return m_records;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const connMgr::records& connMgr::databases(__int64 connid)
|
|
95
|
+
{
|
|
96
|
+
allocBuffer();
|
|
97
|
+
m_keynum = TD_STSTCS_READ;
|
|
98
|
+
m_params[0] = connid;
|
|
99
|
+
m_params[1] = -1;
|
|
100
|
+
tdap(TD_STASTISTICS);
|
|
101
|
+
if (m_stat == 0)
|
|
102
|
+
m_records.resize(m_datalen/sizeof(connMgr::record));
|
|
103
|
+
return m_records;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const connMgr::records& connMgr::tables(__int64 connid, int dbid)
|
|
107
|
+
{
|
|
108
|
+
allocBuffer();
|
|
109
|
+
m_keynum = TD_STSTCS_READ;
|
|
110
|
+
m_params[0] = connid;
|
|
111
|
+
m_params[1] = dbid;
|
|
112
|
+
tdap(TD_STASTISTICS);
|
|
113
|
+
if (m_stat == 0)
|
|
114
|
+
m_records.resize(m_datalen/sizeof(connMgr::record));
|
|
115
|
+
return m_records;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
void connMgr::disconnectOne(__int64 connid)
|
|
119
|
+
{
|
|
120
|
+
m_keynum = TD_STSTCS_DISCONNECT_ONE;
|
|
121
|
+
record& rec = m_records[0];
|
|
122
|
+
rec.conId = connid;
|
|
123
|
+
tdap(TD_STASTISTICS);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
void connMgr::disconnectAll()
|
|
127
|
+
{
|
|
128
|
+
m_keynum = TD_STSTCS_DISCONNECT_ALL;
|
|
129
|
+
tdap(TD_STASTISTICS);
|
|
130
|
+
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
short_td connMgr::stat()
|
|
134
|
+
{
|
|
135
|
+
return m_stat;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
}//namespace client
|
|
141
|
+
}//namespace tdap
|
|
142
|
+
}//namespace protocol
|
|
143
|
+
}//namespace db
|
|
144
|
+
}//namespace bzs
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
#ifndef BZS_DB_PROTOCOL_TDAP_CLIENT_CTDCONNMGR_H
|
|
2
|
+
#define BZS_DB_PROTOCOL_TDAP_CLIENT_CTDCONNMGR_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 "nsTable.h"
|
|
22
|
+
#include <bzs/db/transactd/connectionRecord.h>
|
|
23
|
+
#include <vector>
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
namespace bzs
|
|
27
|
+
{
|
|
28
|
+
namespace db
|
|
29
|
+
{
|
|
30
|
+
namespace protocol
|
|
31
|
+
{
|
|
32
|
+
namespace tdap
|
|
33
|
+
{
|
|
34
|
+
namespace client
|
|
35
|
+
{
|
|
36
|
+
|
|
37
|
+
class database;
|
|
38
|
+
#pragma warning(disable:4251)
|
|
39
|
+
|
|
40
|
+
class AGRPACK connMgr : private nstable
|
|
41
|
+
{
|
|
42
|
+
public:
|
|
43
|
+
typedef bzs::db::transactd::connection::record record;
|
|
44
|
+
typedef std::vector<record> records;
|
|
45
|
+
protected:
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
private:
|
|
49
|
+
std::vector<record> m_records;
|
|
50
|
+
__int64 m_params[2];
|
|
51
|
+
database* m_db;
|
|
52
|
+
std::_tstring m_uri;
|
|
53
|
+
void allocBuffer();
|
|
54
|
+
void writeRecordData(){};
|
|
55
|
+
void onReadAfter(){};
|
|
56
|
+
|
|
57
|
+
~connMgr();
|
|
58
|
+
public:
|
|
59
|
+
explicit connMgr(database* db);
|
|
60
|
+
|
|
61
|
+
void connect(const _TCHAR* uri);
|
|
62
|
+
void disconnect();
|
|
63
|
+
const records& connections();
|
|
64
|
+
const records& databases(__int64 connid);
|
|
65
|
+
const records& tables(__int64 connid, int dbid);
|
|
66
|
+
void disconnectOne(__int64 connid);
|
|
67
|
+
void disconnectAll();
|
|
68
|
+
short_td stat();
|
|
69
|
+
|
|
70
|
+
database* db()const;
|
|
71
|
+
using nstable::tdapErr;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
#pragma warning(default:4251)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
}//namespace client
|
|
78
|
+
}//namespace tdap
|
|
79
|
+
}//namespace protocol
|
|
80
|
+
}//namespace db
|
|
81
|
+
}//namespace bzs
|
|
82
|
+
#endif //BZS_DB_PROTOCOL_TDAP_CLIENT_CTDCONNMGR_H
|