From: Carl Hetherington Date: Tue, 14 Aug 2018 14:39:33 +0000 (+0100) Subject: Basics of job analytics storage. X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=f3555ed48dcd8a12598888399f6f7bb6a670467d Basics of job analytics storage. --- 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 +#include #include #include #include @@ -60,6 +61,16 @@ Event::set (string k, string v) _data[k] = v; } +string +Event::get (string k) const +{ + map::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) { 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(_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 _events; static Analytics* _instance; static int const _current_version;