summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-08-14 15:39:33 +0100
committerCarl Hetherington <cth@carlh.net>2018-08-14 15:39:33 +0100
commitf3555ed48dcd8a12598888399f6f7bb6a670467d (patch)
treec6353df8b2b10be5c145423897121aaf61762318
parente32f443c7ad4a9e163e76648623de45bec2f4f84 (diff)
Basics of job analytics storage.
-rw-r--r--src/lib/analytics.cc23
-rw-r--r--src/lib/analytics.h4
2 files changed, 23 insertions, 4 deletions
diff --git a/src/lib/analytics.cc b/src/lib/analytics.cc
index 624c61fed..cbb884302 100644
--- a/src/lib/analytics.cc
+++ b/src/lib/analytics.cc
@@ -22,6 +22,7 @@
#include "exceptions.h"
#include "job.h"
#include <dcp/raw_convert.h>
+#include <dcp/util.h>
#include <libcxml/cxml.h>
#include <libxml++/libxml++.h>
#include <boost/filesystem.hpp>
@@ -60,6 +61,16 @@ Event::set (string k, string v)
_data[k] = v;
}
+string
+Event::get (string k) const
+{
+ map<string, string>::const_iterator i = _data.find (k);
+ if (i == _data.end()) {
+ return "";
+ }
+ return i->second;
+}
+
void
Event::as_xml (xmlpp::Element* parent) const
{
@@ -82,6 +93,7 @@ Event::dump () const
}
Analytics::Analytics ()
+ : _id (dcp::make_uuid())
{
}
@@ -90,17 +102,20 @@ int
Analytics::successful_dcp_encodes () const
{
boost::mutex::scoped_lock lm (_mutex);
+ int n = 0;
BOOST_FOREACH (Event e, _events) {
- std::cout << e.dump() << "\n";
+ if (e.get("type") == "job_state" && e.get("json_name") == "transcode" && e.get("status") == "finished_ok") {
+ ++n;
+ }
}
- return 0;
+ return n;
}
void
Analytics::job_state_changed (shared_ptr<Job> job)
{
Event ev;
- ev.set ("type", "job-state");
+ ev.set ("type", "job_state");
ev.set ("json_name", job->json_name());
ev.set ("sub_name", job->sub_name());
ev.set ("error-summary", job->error_summary());
@@ -152,6 +167,7 @@ Analytics::write () const
root->add_child("Version")->add_child_text(raw_convert<string>(_current_version));
boost::mutex::scoped_lock lm (_mutex);
+ root->add_child("Id")->add_child_text(_id);
BOOST_FOREACH (Event e, _events) {
e.as_xml (root->add_child("Event"));
}
@@ -172,6 +188,7 @@ try
cxml::Document f ("Analytics");
f.read_file (path("analytics.xml"));
boost::mutex::scoped_lock lm (_mutex);
+ _id = f.string_child("Id");
BOOST_FOREACH (cxml::ConstNodePtr i, f.node_children("Event")) {
_events.push_back (Event(i));
}
diff --git a/src/lib/analytics.h b/src/lib/analytics.h
index fcb349e54..36519ea80 100644
--- a/src/lib/analytics.h
+++ b/src/lib/analytics.h
@@ -35,6 +35,7 @@ public:
Event (cxml::ConstNodePtr node);
void set (std::string k, std::string v);
+ std::string get (std::string k) const;
void as_xml (xmlpp::Element* parent) const;
std::string dump () const;
@@ -61,8 +62,9 @@ public:
private:
int successful_dcp_encodes () const;
- /** Mutex to protect _events */
+ /** Mutex to protect _id and _events */
mutable boost::mutex _mutex;
+ std::string _id;
std::list<Event> _events;
static Analytics* _instance;
static int const _current_version;