From 4167c483f5bbfa2cc06a7952d15c0d902beb5c59 Mon Sep 17 00:00:00 2001 From: Eelke Klein Date: Wed, 23 Aug 2017 17:41:10 +0200 Subject: [PATCH] Most seems to work. Multi threading is not optimal however some points use a timeout with select or wait_for to poll a condition at the same time. --- pglab/ASyncDBConnection.cpp | 51 +++++++++++++++--------------- pglab/ConnectionManagerWindow.ui | 27 ++++++++-------- pglab/MainWindow.cpp | 3 ++ pglab/MainWindow.ui | 50 ++++++++++++++--------------- pglab/icons/about.png | Bin 0 -> 436 bytes pglab/icons/add_connection.png | Bin 0 -> 416 bytes pglab/icons/backup_database.png | Bin 0 -> 471 bytes pglab/icons/backups.png | Bin 2377 -> 0 bytes pglab/icons/delete_connection.png | Bin 0 -> 473 bytes pglab/icons/information.png | Bin 2112 -> 0 bytes pglab/icons/manage_server.png | Bin 0 -> 618 bytes pglab/icons/new_query_tab.png | Bin 0 -> 419 bytes pglab/icons/open_query_window.png | Bin 0 -> 525 bytes pglab/icons/server_add.png | Bin 1480 -> 0 bytes pglab/resources.qrc | 10 ++++-- pglab/tsqueue.h | 2 +- 16 files changed, 76 insertions(+), 67 deletions(-) create mode 100644 pglab/icons/about.png create mode 100644 pglab/icons/add_connection.png create mode 100644 pglab/icons/backup_database.png delete mode 100644 pglab/icons/backups.png create mode 100644 pglab/icons/delete_connection.png delete mode 100644 pglab/icons/information.png create mode 100644 pglab/icons/manage_server.png create mode 100644 pglab/icons/new_query_tab.png create mode 100644 pglab/icons/open_query_window.png delete mode 100644 pglab/icons/server_add.png diff --git a/pglab/ASyncDBConnection.cpp b/pglab/ASyncDBConnection.cpp index 29366e4..7166502 100644 --- a/pglab/ASyncDBConnection.cpp +++ b/pglab/ASyncDBConnection.cpp @@ -130,7 +130,11 @@ bool ASyncDBConnection::Thread::makeConnection() auto keywords = m_config.getKeywords(); auto values = m_config.getValues(); #if true - return m_connection.connect(keywords, values, 0); + bool result = m_connection.connect(keywords, values, 0); + if (result) { + doStateCallback(State::Connected); + } + return result; #else while (!terminateRequested) { @@ -234,11 +238,12 @@ void ASyncDBConnection::Thread::doStateCallback(State state) void ASyncDBConnection::Thread::waitForAndSendCommand() { + using namespace std::chrono_literals; // lock the data std::unique_lock lk(m_commandQueue.m_mutex); if (m_commandQueue.m_queue.empty()) { // no data wait till there is data - m_commandQueue.m_newEvent.wait(lk); + m_commandQueue.m_newEvent.wait_for(lk, 1000ms); // can we use the predicate to reimplement the stop function???, []{return ready;}); } @@ -266,30 +271,26 @@ void ASyncDBConnection::Thread::waitForAndSendCommand() void ASyncDBConnection::Thread::doNewCommand() { - // todo: send command // get command from top of queue (but leave it in the queue, we need the callback) - { - std::lock_guard lg(m_commandQueue.m_mutex); - if (! m_commandQueue.m_queue.empty()) { - const Command &command = m_commandQueue.m_queue.front(); - if (!command.command.empty()) { - bool query_send = false; - if (command.params.empty()) - query_send = m_connection.sendQuery(command.command.c_str()); - else - query_send = m_connection.sendQueryParams(command.command.c_str(), command.params); + if (! m_commandQueue.m_queue.empty()) { + const Command &command = m_commandQueue.m_queue.front(); + if (!command.command.empty()) { + bool query_send = false; + if (command.params.empty()) + query_send = m_connection.sendQuery(command.command.c_str()); + else + query_send = m_connection.sendQueryParams(command.command.c_str(), command.params); - if (query_send) { - m_timer.start(); - doStateCallback(State::QuerySend); - } - else { - std::string error = m_connection.getErrorMessage(); - // todo: need to report the error - } - } - } - } + if (query_send) { + m_timer.start(); + doStateCallback(State::QuerySend); + } + else { + std::string error = m_connection.getErrorMessage(); + // todo: need to report the error + } + } + } } @@ -336,7 +337,7 @@ void ASyncDBConnection::Thread::waitForResult() timeout.tv_sec = 5; timeout.tv_usec = 0; - int select_result = select(1, &readfds, nullptr, nullptr, &timeout); + int select_result = select(sock + 1, &readfds, nullptr, nullptr, &timeout); if (select_result > 0) { if (FD_ISSET(sock, &readfds)) { if (consumeResultInput()) { diff --git a/pglab/ConnectionManagerWindow.ui b/pglab/ConnectionManagerWindow.ui index c98eafd..225e2af 100644 --- a/pglab/ConnectionManagerWindow.ui +++ b/pglab/ConnectionManagerWindow.ui @@ -201,12 +201,12 @@ 0 0 800 - 23 + 24 - File + Fi&le @@ -240,7 +240,7 @@ - :/icons/server_add.png:/icons/server_add.png + :/icons/add_connection.png:/icons/add_connection.png Add Connection @@ -248,9 +248,9 @@ - - :/icons/server_delete.png - + + :/icons/delete_connection.png + :/icons/delete_connection.png:/icons/delete_connection.png Delete connection @@ -261,8 +261,9 @@ - - :/icons/server_go.png:/icons/server_go.png + + :/icons/open_query_window.png + Connect @@ -270,14 +271,14 @@ - Quit application + &Quit application - - :/icons/backups.png - + + :/icons/backup_database.png + :/icons/backups.png:/icons/backup_database.png Backup database @@ -286,7 +287,7 @@ - :/icons/server_edit.png + :/icons/manage_server.png diff --git a/pglab/MainWindow.cpp b/pglab/MainWindow.cpp index f830664..aa4f038 100644 --- a/pglab/MainWindow.cpp +++ b/pglab/MainWindow.cpp @@ -131,6 +131,9 @@ void MainWindow::on_actionAbout_triggered() "\n" "Icons by fatcow http://www.fatcow.com/free-icons provided under Creative Commons " "attribution 3.0 license\n" + "\n" + "More icons by https://icons8.com/ under Creative Commons Attribution-NoDerivs 3.0 Unported " + "license." )); } diff --git a/pglab/MainWindow.ui b/pglab/MainWindow.ui index 7a19461..d3e2cf3 100644 --- a/pglab/MainWindow.ui +++ b/pglab/MainWindow.ui @@ -45,12 +45,12 @@ 0 0 993 - 22 + 24 - File + Fi&le @@ -69,7 +69,7 @@ - Query + &Query @@ -79,7 +79,7 @@ - Window + Wi&ndow @@ -126,7 +126,7 @@ :/icons/folder.png:/icons/folder.png - Load SQL + &Load SQL Ctrl+O @@ -138,7 +138,7 @@ :/icons/script_save.png:/icons/script_save.png - Save SQL + &Save SQL Ctrl+S @@ -150,7 +150,7 @@ :/icons/table_save.png:/icons/table_save.png - Export data + &Export data @@ -160,7 +160,7 @@ - Close + &Close Ctrl+F4 @@ -168,12 +168,12 @@ - - :/icons/information.png - + + :/icons/about.png + :/icons/information.png:/icons/about.png - About + &About @@ -183,7 +183,7 @@ - Execute queries + &Execute queries Execute the (selected) queries @@ -199,7 +199,7 @@ - Cancel + &Cancel Alt+Pause @@ -211,7 +211,7 @@ :/icons/lightbulb.png:/icons/lightbulb.png - Explain Analyze + Ex&plain Analyze Shift+F7 @@ -219,22 +219,22 @@ - Save SQL as + Sa&ve SQL as - Save copy of SQL as + Save copy &of SQL as - - :/icons/page_white_add.png - + + :/icons/new_query_tab.png + :/icons/page_white_add.png:/icons/new_query_tab.png - New SQL + &New SQL Ctrl+N @@ -247,7 +247,7 @@ - Explain + E&xplain Explain the (selected) query @@ -258,7 +258,7 @@ - Show connection manager + &Show connection manager @@ -268,7 +268,7 @@ - Copy + &Copy Ctrl+C @@ -281,7 +281,7 @@ - Copy as C-string + Copy as C-&string Ctrl+Alt+C diff --git a/pglab/icons/about.png b/pglab/icons/about.png new file mode 100644 index 0000000000000000000000000000000000000000..1a02d2bd7d2cc56b26440197f30eead86dc1c3c7 GIT binary patch literal 436 zcmV;l0ZaagP)!cw011o@XeEcBH9W;-1TuSH@vrijy}B$&WE3jg262QyQlpQPcV@z+9AL@&7QgnyV{s~H zuA2=PVwXi@mqlZT3k}4B?uf|jTsK-3jlIOGXfy!Zd#8^z>GTD-Ye=^E1wLk+XhsgVwzT;9+;+;It#xKKwE+k0I+O=O&AE! zVM1ja1_5-oq4FXM1Gw`tYOZ2$05ZEy@pBfOA0yxObX0rsbKEvx3m~Zxu{rb)U=Ggn z;g61Fw-9|~!W_K+3g@xh+Y?~Py~pw!5H@2?i$-L2y?jhsAXLU6nS&+2emlUj0ZR^& e`AfcLe>#q-EW5q9It73L0000`cyVCV0Yk|F1DpsM z7$Dh@nwTWZVGbBA2S#!(7psXC2vt?aG z=#rT2&I{cCBV(rpZttBIy45?(cMu@T0p#TO#`QheD@6qOWhwh&v#pZ9_#=V?MxVFRpw{_0000< KMNUMnLSTZ@nY?fR;1+J_CV`C4M6H@ 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 diff --git a/pglab/icons/delete_connection.png b/pglab/icons/delete_connection.png new file mode 100644 index 0000000000000000000000000000000000000000..556398415d250dd7238581fbf1ff5d93d9e90591 GIT binary patch literal 473 zcmV;~0Ve*5P)YU6vp!ieFPt&ORjFl8=b@sPC}P1cJ1IIE~cZC_yiWKI0*#>krpgeT(uU5{zDz? zA3A80YZN8<9BR{~(vrk0Ma+S-WXSis=ljkPgrI^NQKdphy1DGk@@h}w#X?&tUbMlr z3vI;%Kr7E5pp_2*{u021LnsKnHRRcz#QOlj9r({%5CHHAVJTZjC7nYhox{WS-mYr^ zLHOAnxZ62cd0t*RWio-iH7Y*6P_hXr9C8KVXWtte$%HyTqYaBYTf7 literal 0 HcmV?d00001 diff --git a/pglab/icons/information.png b/pglab/icons/information.png deleted file mode 100644 index 93c67f2bf0e6e07da700bc508b7b9f55e5c6f89a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2112 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 N002ovPDHLkV1mjwwQ2wW literal 0 HcmV?d00001 diff --git a/pglab/icons/open_query_window.png b/pglab/icons/open_query_window.png new file mode 100644 index 0000000000000000000000000000000000000000..46cd65a5489c6a5da93eef268491acb85c0256cd GIT binary patch literal 525 zcmV+o0`mQdP)fUv*F1x%QMH+Owc@Sig3dxC#@ z*L)hj9mN7D^hW%tmt{NZ1s}q746O^+Sh%rg>2H6@w*C<+bCckNS z3SFaUoVyZG*XU*dyOd%3lB1lp(7bq*?mjCLv@f}wuM})`009#q#ss=XWe8RQs(FO~ zx<+AjLIg}m1A7fYtIkj<*r=6ysOD|BWVV!q&RP=IN4#zgA!+KtNai#N7tMBIr$yVLZIDC{qCJ`=Y-n?LwW40r5$-!-A( z=bpD=f06rV~)Zyf%2{F?!O&6Vt6m(o3j;J^=)Oy=Whrcx7)|4DfVL&rCLE&cP9 P00000NkvXXu0mjf|GDpA literal 0 HcmV?d00001 diff --git a/pglab/icons/server_add.png b/pglab/icons/server_add.png deleted file mode 100644 index 210979f31ca08af75bb0ceda8cc97bb07c1e444b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1480 zcmV;(1vmPMP)HNysR=|AMDPzlFeuWfph1jcj3mYnq80bh%w=)b-i%UPDWXZ^E_7tyDQel%WR^fEwyY3q)XF=Iy;WlWw3X-o8F0!s)@;8epo zTxkAt*DK4Oc$9{$fg0di_x5MIY-scDyyG?)h6{EA2xw$@Flgdr-EYuff4kwiCyNqA zLh0ro$B3b8-}zix^x+FwvZFI7+Y{(KkLR--%kw(@LBJL9?XfKjfuM~;wP%sQ<|B9j z%)EONSf1CR-j=9rqyfUFAKSLo$E~so@Egm?!5Y9jFr`g#ZDV@+n1mPM`7C#R z5HP!=B5zu{19DsnqO7JNEH^j<*r&7;PA;#P99A(Nmjk4f(PFv&tB-+zX>~)%{?~*S z*8t%_&vJuDfaERa01;~1#8HWJfabH@0Q5&AV41dJbbeNbvMAnJz*(sD*eQ~ez+eqf zd4QC&?>Cot=@}=jNag?ttu&PnAYIoX3fQM2!~qf40Kr|;>BE37QwM1PDKp6hOsFa2 zZcL~a&}a!wCZoRj5KhaL$a@VfTIi@2D!(7HJF&X#WmLtA>liLzT!A^+Q{u3iLR2&0 zrp>STcmaOBvIp~WAH&oM%i%Fn)Qqm6A152DAKYJCQc+Os`>=EkmiDd}qQlTOX<^{a zuZ}{9K9oa;E>ckQ*E6t4J?H zMd^!J5^01M6$J!8>(w;^SJ$uUhVG)yyLKbV<-yfpHTZ2AO8e&2{Cb5>*cu+*m>Sc#lSYR61O90?h>47-MZA%E+d2mB_4ft^2pfWoZD zQG4MdT=t!Zi?$OG*VYLO5QP971VTudk=6{!A)1 zgDAK!lgc!D=4PTR;K!_-4EVZQQIIo6+14ItR4~VDy4F2c^s1Vo!Z2u>%8=a$enjES z8Q5Ls#r)a1;peXXUM$F`?}H6Wp*$mHH5O&wBi>#*(_{ zT%x%_A8H~KlGgihk(7cBw}H~~8hDbEu-_Z&>Be{7I%H3H9%s)Hyd+2>psR#Z6lzJ% z82`s}cy99vYzaj`Zx=|vukGl*?~mjpbR|=XXefpnvr&2C0CKWO3GJBD2Z}317y&kb zSz2)%xN;s}*L{O>8u5qMiMSc@g+Kb(7mjJldR@#*PjZBHJ?i1d8S7@v)$?i(;Q>|t6Za23BaR^k0K zW$@BSGxgR`DvotI9Z2J|m`|S(4tlB17#v0I)Gtye3Zf(O9JpQvg!pSX2)ZK>ln&w8 i=fU2`G3)+MfB^u<+UI7ii(}US0000 - icons/server_add.png icons/server_delete.png icons/server_go.png icons/script_delete.png @@ -12,13 +11,18 @@ icons/page_white_add.png icons/page_white_delete.png icons/lightbulb_off.png - icons/information.png icons/16x16/document_green.png icons/16x16/document_red.png icons/16x16/document_yellow.png - icons/backups.png icons/page_white_copy.png icons/token_shortland_character.png icons/server_edit.png + icons/new_query_tab.png + icons/about.png + icons/backup_database.png + icons/add_connection.png + icons/delete_connection.png + icons/open_query_window.png + icons/manage_server.png diff --git a/pglab/tsqueue.h b/pglab/tsqueue.h index 8b93d34..12a915e 100644 --- a/pglab/tsqueue.h +++ b/pglab/tsqueue.h @@ -15,7 +15,7 @@ public: bool empty(); t_Callable pop(); - //HANDLE getNewDataEventHandle(); + //HANDLE getNewDataEventHandle(); Looks like this wasn't use at all so we can leave the event out. private: using t_CallableQueue = std::deque;