some debugging of database on bluemonkey
authorKevron Rees <tripzero.kev@gmail.com>
Fri, 30 Aug 2013 00:01:39 +0000 (17:01 -0700)
committerKevron Rees <tripzero.kev@gmail.com>
Fri, 30 Aug 2013 00:01:39 +0000 (17:01 -0700)
plugins/bluemonkey/bluemonkey.cpp
plugins/bluemonkey/bluemonkey.h
plugins/database/databasesink.cpp
plugins/database/databasesink.h
plugins/database/sqlitedatabase.cpp

index 60498c1..3fd3c45 100644 (file)
 
 #include <QJsonDocument>
 #include <QScriptEngine>
+#include <QDateTime>
 #include <QString>
 #include <QFile>
 #include <QTimer>
 
 Q_SCRIPT_DECLARE_QMETAOBJECT(QTimer, QObject*)
 
+#define foreach Q_FOREACH
+
 extern "C" AbstractSinkManager * create(AbstractRoutingEngine* routingengine, map<string, string> config)
 {
        return new BluemonkeySinkManager(routingengine, config);
@@ -255,6 +258,51 @@ void BluemonkeySink::log(QString str)
        DebugOut()<<str.toStdString()<<endl;
 }
 
+void BluemonkeySink::getHistory(QStringList properties, QDateTime begin, QDateTime end, QScriptValue cbFunction)
+{
+       double b = (double)begin.toMSecsSinceEpoch() / 1000.0;
+       double e = (double)end.toMSecsSinceEpoch() / 1000.0;
+       AsyncRangePropertyRequest request;
+       request.timeBegin = b;
+       request.timeEnd = e;
+
+       PropertyList reqlist;
+
+       foreach(QString prop, properties)
+       {
+               reqlist.push_back(prop.toStdString());
+       }
+
+       request.properties = reqlist;
+       request.completed = [&cbFunction](AsyncRangePropertyReply* reply)
+       {
+               if(!reply->success)
+               {
+                       DebugOut(DebugOut::Error)<<"bluemoney get history call failed"<<endl;
+                       return;
+               }
+
+               if(cbFunction.isFunction())
+               {
+                       QVariantList list;
+
+                       for(auto itr = reply->values.begin(); itr != reply->values.end(); itr++)
+                       {
+                               AbstractPropertyType *val = *itr;
+
+                               list.append(gvariantToQVariant(val->toVariant()));
+                       }
+
+                       cbFunction.call(QScriptValue(),cbFunction.engine()->newVariant(list));
+
+               }
+
+               delete reply;
+       };
+
+       routingEngine->getRangePropertyAsync(request);
+}
+
 
 QVariant Property::value()
 {
@@ -306,6 +354,12 @@ void Property::getHistory(QDateTime begin, QDateTime end, QScriptValue cbFunctio
        request.properties = reqlist;
        request.completed = [&cbFunction](AsyncRangePropertyReply* reply)
        {
+               if(!reply->success)
+               {
+                       DebugOut(DebugOut::Error)<<"bluemoney get history call failed"<<endl;
+                       return;
+               }
+
                if(cbFunction.isFunction())
                {
                        QVariantList list;
index 78defa2..3fadba1 100644 (file)
@@ -24,6 +24,7 @@
 #include <QObject>
 #include <QVariant>
 #include <QJsonDocument>
+#include <QDateTime>
 #include <QScriptValue>
 #include "uuidhelper.h"
 
@@ -97,6 +98,8 @@ public Q_SLOTS:
 
        void log(QString str);
 
+       void getHistory(QStringList properties, QDateTime begin, QDateTime end, QScriptValue cbFunction);
+
 private Q_SLOTS: /// methods:
 
        void loadConfigPriv();
index cac1408..14c4046 100644 (file)
@@ -240,7 +240,7 @@ void DatabaseSink::parseConfig()
                DebugOut()<<"DatabaseSink logging: "<<prop<<endl;
        }
 
-       json_object_put(propobject);
+       //json_object_put(propobject);
        json_object_put(rootobject);
 }
 
index f32862e..57f87d4 100644 (file)
@@ -41,6 +41,10 @@ public:
                g_mutex_init(&mutex);
                g_cond_init(&cond);
        }
+       ~Queue()
+       {
+               g_mutex_free(&mutex);
+       }
 
        int count()
        {
index 7dccc0d..05aed13 100644 (file)
@@ -32,6 +32,7 @@ sqlitedatabase::init(const std::string & d)
 sqlitedatabase::~sqlitedatabase()
 {
        sqlite3_close((sqlite3 *)m_odb->db);
+       delete m_odb;
 }
 
 bool sqlitedatabase::Connected()