summaryrefslogtreecommitdiffstats
path: root/pica-client/nodes.cpp
diff options
context:
space:
mode:
authorme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2012-06-17 21:15:12 +0000
committerme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2012-06-17 21:15:12 +0000
commit8df9466ada46e4b07990b9cb7e8b1cd61b96844a (patch)
tree2cb652e5839bed672133ffa90e7ad477f55cfb6b /pica-client/nodes.cpp
downloadpica-pica-8df9466ada46e4b07990b9cb7e8b1cd61b96844a.tar.gz
pica-pica-8df9466ada46e4b07990b9cb7e8b1cd61b96844a.zip
todo list update
git-svn-id: svn://localhost/project_picapica/trunk@128 fb96df88-216d-11de-830c-f3023f12d8ac
Diffstat (limited to 'pica-client/nodes.cpp')
-rw-r--r--pica-client/nodes.cpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/pica-client/nodes.cpp b/pica-client/nodes.cpp
new file mode 100644
index 0000000..eb8bfcc
--- /dev/null
+++ b/pica-client/nodes.cpp
@@ -0,0 +1,73 @@
+#include "nodes.h"
+
+Nodes::Nodes(QString storage)
+{
+ dbconn=QSqlDatabase::addDatabase("QSQLITE");
+ dbconn.setDatabaseName(storage);
+
+ if (!dbconn.open())
+ {
+ lasterr=dbconn.lastError();
+ return;
+ }
+//check if table nodes exists
+}
+
+void Nodes::Add(NodeRecord &n)
+{
+ QSqlQuery query;
+
+ query.prepare("insert into nodes (address, port, last_active, inactive_count) values (:addr, :port, strftime('%s','now'), 0)");
+ query.bindValue(":addr",n.address);
+ query.bindValue(":port",n.port);
+ query.exec();
+
+ lasterr=query.lastError();
+}
+
+QList<Nodes::NodeRecord> Nodes::GetNodes()
+{
+ QList<NodeRecord> L;
+ NodeRecord r;
+ QSqlQuery query;
+
+ query.setForwardOnly(true);
+ query.exec("select address, port from nodes order by inactive_count asc, last_active desc");
+ lasterr=query.lastError();
+
+ if (lasterr.isValid())
+ return L;
+
+ while(query.next())
+ {
+ r.address =query.value(0).toString();
+ r.port =query.value(1).toUInt();
+
+ L<<r;
+ }
+
+ return L;
+}
+
+void Nodes::MakeClean()
+{
+
+}
+
+void Nodes::UpdateStatus(NodeRecord &n, bool alive)
+{
+ QSqlQuery query;
+
+ if (alive)
+ query.prepare("update nodes set last_active = strftime('%s','now'), inactive_count = 0 where address = :addr and port = :port");
+ else
+ query.prepare("update nodes set inactive_count = inactive_count + 1 where address = :addr and port = :port");
+
+ query.bindValue(":addr",n.address);
+ query.bindValue(":port",n.port);
+ query.exec();
+
+ lasterr=query.lastError();
+}
+
+