[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Powerguru-commit] [SCM] powerguru branch, master, updated. 85026303f4b3
From: |
Rob Savoye |
Subject: |
[Powerguru-commit] [SCM] powerguru branch, master, updated. 85026303f4b30f43a327a66cf46d1e2f53ab4e80 |
Date: |
Mon, 7 Jan 2019 23:26:41 -0500 (EST) |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "powerguru".
The branch, master has been updated
via 85026303f4b30f43a327a66cf46d1e2f53ab4e80 (commit)
via 3e388e260a3fc1130a5f3a763da7d7d1fafd457b (commit)
via 1182d34c759285a0af33e8a6f120fae602436235 (commit)
via 892413e0514151317beaf152569137bceb089512 (commit)
via 0f246e27cf0189d4b627d5cf4b9aaffb4eb1482f (commit)
via 1840c3340498a92ae24342bf1df2fdb2dcbc0b14 (commit)
via 66448601b9fc3c85e5286670ab613f1c1bff3f56 (commit)
via a442bf158dd0a690f30d885726aa09636fff27f5 (commit)
from 5757462fc948d67b22047c1d5542136a1aa5eeb5 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit/powerguru.git/commit/?id=85026303f4b30f43a327a66cf46d1e2f53ab4e80
commit 85026303f4b30f43a327a66cf46d1e2f53ab4e80
Author: Rob Savoye <address@hidden>
Date: Mon Jan 7 21:26:31 2019 -0700
Siightly improved plot
diff --git a/python/chart.py b/python/chart.py
index 0955363..0337945 100755
--- a/python/chart.py
+++ b/python/chart.py
@@ -57,10 +57,9 @@ for temperature,timestamp in dbcursor:
plt.plot(x, y, label="foo")
plt.xlabel("Timestamps")
plt.xticks(rotation='vertical')
-
-#plt.yticks(np.arange(1, step=0.5))
+plt.grid(which='both')
plt.ylabel("Temperature in F")
#plt.xticks(np.arange(min(y), max(y)+1, 1.0))
-
+plt.minorticks_on()
plt.title("Test")
plt.show()
http://git.savannah.gnu.org/cgit/powerguru.git/commit/?id=3e388e260a3fc1130a5f3a763da7d7d1fafd457b
commit 3e388e260a3fc1130a5f3a763da7d7d1fafd457b
Author: Rob Savoye <address@hidden>
Date: Mon Jan 7 21:17:09 2019 -0700
Add matplotlib
diff --git a/python/requirements.txt b/python/requirements.txt
index 658fa3b..16944e8 100644
--- a/python/requirements.txt
+++ b/python/requirements.txt
@@ -4,3 +4,4 @@ logging
glob
pyownet
pyowfs
+matplotlib
http://git.savannah.gnu.org/cgit/powerguru.git/commit/?id=1182d34c759285a0af33e8a6f120fae602436235
commit 1182d34c759285a0af33e8a6f120fae602436235
Author: Rob Savoye <address@hidden>
Date: Mon Jan 7 20:52:43 2019 -0700
Plot the temperatures
diff --git a/python/chart.py b/python/chart.py
new file mode 100755
index 0000000..0955363
--- /dev/null
+++ b/python/chart.py
@@ -0,0 +1,66 @@
+#!/usr/bin/python3
+
+#
+# Copyright (C) 2019 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+# API documentation at: https://pyownet.readthedocs.io/en/latest/
+
+import epdb
+import logging
+import time
+import psycopg2
+import matplotlib.pyplot as plt
+import numpy as np
+
+dbname = "";
+connect = " dbname=" + dbname
+
+try:
+ dbname = "powerguru"
+ connect = "dbname=" + dbname
+ dbshell = psycopg2.connect(connect)
+ if dbshell.closed == 0:
+ dbshell.autocommit = True
+ logging.info("Opened connection to %r" % dbname)
+
+ dbcursor = dbshell.cursor()
+ if dbcursor.closed == 0:
+ logging.info("Opened cursor in %r" % dbname)
+except Exception as e:
+ print("Couldn't connect to database: %r" % e)
+
+fig = plt.figure()
+
+x = list()
+y = list()
+query = "SELECT temperature,timestamp FROM temperature ORDER BY timestamp"
+dbcursor.execute(query)
+for temperature,timestamp in dbcursor:
+ # print("%r, %r" % (temperature,timestamp))
+ x.append(timestamp)
+ y.append(temperature)
+
+plt.plot(x, y, label="foo")
+plt.xlabel("Timestamps")
+plt.xticks(rotation='vertical')
+
+#plt.yticks(np.arange(1, step=0.5))
+plt.ylabel("Temperature in F")
+#plt.xticks(np.arange(min(y), max(y)+1, 1.0))
+
+plt.title("Test")
+plt.show()
http://git.savannah.gnu.org/cgit/powerguru.git/commit/?id=892413e0514151317beaf152569137bceb089512
commit 892413e0514151317beaf152569137bceb089512
Author: Rob Savoye <address@hidden>
Date: Mon Jan 7 18:28:18 2019 -0700
parse the incoming XML message
diff --git a/daemon/threads.cc b/daemon/threads.cc
index 16d79ce..26d0b4a 100644
--- a/daemon/threads.cc
+++ b/daemon/threads.cc
@@ -141,11 +141,9 @@ client_handler(Tcpip &net)
tcp::socket tcp_socket{ioservice};
std::string data;
tcp::resolver resolv{ioservice};
- //tcp::socket tcp_socket{ioservice};
std::array<char, 4096> bytes;
tcp_acceptor.listen();
- //tcp_acceptor.async_accept(tcp_socket, accept_handler);
tcp_acceptor.accept(tcp_socket);
ioservice.run();
bool loop = true;
@@ -176,6 +174,7 @@ client_handler(Tcpip &net)
}
while (loop) {
+ std::memset(bytes.data(), 0, bytes.size());
tcp_socket.read_some(buffer(bytes), error);
std::cerr << bytes.data();
// Client dropped connection
@@ -185,17 +184,20 @@ client_handler(Tcpip &net)
XML xml;
if (bytes[0] == '<') {
std::string str(std::begin(bytes), std::end(bytes));
- xml.parseMem(str);
- if (xml[0]->nameGet() == "helo") {
- hostname = xml[0]->childGet(0)->valueGet();
- user = "foo";// xml[data]->childGet(1)->valueGet();
- BOOST_LOG(lg) << "Incoming connection from user " << user
- << " on host " << hostname;
- } else {
- cmd.execCommand(xml, str);
- std::lock_guard<std::mutex> guard(queue_lock);
- tqueue.push(xml);
- queue_cond.notify_one();
+ if (!str.empty()) {
+ xml.parseMem(str);
+ if (xml[0]->nameGet() == "helo") {
+ hostname = xml[0]->childGet(0)->valueGet();
+ user = "foo";// xml[data]->childGet(1)->valueGet();
+ BOOST_LOG(lg) << "Incoming connection from user " << user
+ << " on host " << hostname;
+ } else {
+ cmd.execCommand(xml, str);
+ std::lock_guard<std::mutex> guard(queue_lock);
+ tqueue.push(xml);
+ queue_cond.notify_one();
+ }
+ str.clear();
}
}
}
@@ -342,7 +344,7 @@ outback_handler(Ownet &ownet)
}
#endif
- BOOST_LOG(lg) << "FIXME: outback_handler() unimplemented"<< std::endl;
+ BOOST_LOG(lg) << "FIXME: outback_handler() unimplemented";
// Don't eat up all the cpu cycles!
std::this_thread::sleep_for(std::chrono::seconds(ownet.getPollSleep()));
}
@@ -363,7 +365,7 @@ xantrex_handler(Ownet &ownet)
hostname = "localhost";
#endif
- BOOST_LOG(lg) << "FIXME: xantrext_handler() unimplemented"<< std::endl;
+ BOOST_LOG(lg) << "FIXME: xantrext_handler() unimplemented";
// Don't eat up all the cpu cycles!
std::this_thread::sleep_for(std::chrono::seconds(ownet.getPollSleep()));
}
http://git.savannah.gnu.org/cgit/powerguru.git/commit/?id=0f246e27cf0189d4b627d5cf4b9aaffb4eb1482f
commit 0f246e27cf0189d4b627d5cf4b9aaffb4eb1482f
Author: Rob Savoye <address@hidden>
Date: Mon Jan 7 18:27:39 2019 -0700
Use command line for remotehost
diff --git a/client/cmd.cc b/client/cmd.cc
index b5be10b..7854a06 100644
--- a/client/cmd.cc
+++ b/client/cmd.cc
@@ -25,6 +25,7 @@
#include <mutex>
#include <queue>
#include <condition_variable>
+#include <boost/asio.hpp>
#include "tcpip.h"
#include "console.h"
#include "msgs.h"
@@ -98,27 +99,31 @@ main(int argc, char *argv[])
// Connect to the PowerGuru daemon. Note that this is currently
// only allows a single connection at a time.
+#if 1
boost::asio::io_service ioservice;
tcp::resolver resolver{ioservice};
tcp::resolver::query query{tcp::v4(), pserver, "7654"};
tcp::resolver::iterator iterator = resolver.resolve(query);
tcp::socket tcp_socket{ioservice};
- // resolv.resolve(q);
- tcp::endpoint
tcp_endpoint(boost::asio::ip::address::from_string("192.168.0.50"), 7654);
boost::system::error_code error;
- // resolv.resolve(q);
- // std::array<char, 1024> bytes;
- // std::memset(bytes.data(), 0, bytes.size());
try {
- //boost::asio::connect(tcp_socket, iterator);
- tcp_socket.connect(tcp_endpoint);
+ boost::asio::connect(tcp_socket, iterator);
} catch (const std::exception& e) {
BOOST_LOG_SEV(lg, severity_level::error)
<< "Couldn't connect to PowerGuru server! " << e.what();
exit(-1);
}
+ ioservice.run();
+#else
+ // New API, not supported by Raspbian
+ boost::asio::io_context io_context;
+ tcp::resolver resolver(io_context);
+ tcp::resolver::results_type endpoints =
+ resolver.resolve(tcp::v4(),pserver, "7654");
+ tcp::socket tcp_socket(io_context);
+ boost::asio::connect(tcp_socket, endpoints);
+#endif
- ioservice.run();
std::thread daemon_thread (daemon_handler, std::ref(tcp_socket));
std::thread console_thread (console_handler, std::ref(tcp_socket));
http://git.savannah.gnu.org/cgit/powerguru.git/commit/?id=1840c3340498a92ae24342bf1df2fdb2dcbc0b14
commit 1840c3340498a92ae24342bf1df2fdb2dcbc0b14
Author: Rob Savoye <address@hidden>
Date: Mon Jan 7 18:10:55 2019 -0700
Drop Tcpip for boost::asio
diff --git a/client/cmd.cc b/client/cmd.cc
index 182a6f2..b5be10b 100644
--- a/client/cmd.cc
+++ b/client/cmd.cc
@@ -23,6 +23,7 @@
#include <thread>
#include <mutex>
+#include <queue>
#include <condition_variable>
#include "tcpip.h"
#include "console.h"
@@ -34,15 +35,23 @@
static void usage (const char *);
const int INBUFSIZE = 1024;
-extern void daemon_handler(Tcpip &net);
-extern void console_handler(Tcpip &net);
+extern void daemon_handler(boost::asio::ip::tcp::socket &sock);
+extern void console_handler(boost::asio::ip::tcp::socket &sock);
+extern void damn_handler(boost::asio::ip::tcp::socket &sock);
+
+using namespace boost::asio;
+using namespace boost::asio::ip;
+
+std::mutex queue_lock;
+std::queue <XML> tqueue;
+std::condition_variable queue_cond;
int
main(int argc, char *argv[])
{
int c;
std::string dbhost = "localhost";
- std::string pserver = "localhost:" + 7654;
+ std::string pserver = "pi";
retcode_t ret;
log_init("pguru");
@@ -87,30 +96,53 @@ main(int argc, char *argv[])
}
}
-#ifdef BUILD_OWNET_XXX
- // Talk directly to the OW daemon
- Ownet ownet(pserver + ":4304");
- if (ownet.isConnected()) {
- if (ownet.hasSensors()) {
- BOOST_LOG(lg) << "and has sensors attached" << std::endl;
- ownet.dump();
- } else {
- BOOST_LOG(lg) << "and has no sensors attached" << std::endl;
- }
+ // Connect to the PowerGuru daemon. Note that this is currently
+ // only allows a single connection at a time.
+ boost::asio::io_service ioservice;
+ tcp::resolver resolver{ioservice};
+ tcp::resolver::query query{tcp::v4(), pserver, "7654"};
+ tcp::resolver::iterator iterator = resolver.resolve(query);
+ tcp::socket tcp_socket{ioservice};
+ // resolv.resolve(q);
+ tcp::endpoint
tcp_endpoint(boost::asio::ip::address::from_string("192.168.0.50"), 7654);
+ boost::system::error_code error;
+ // resolv.resolve(q);
+ // std::array<char, 1024> bytes;
+ // std::memset(bytes.data(), 0, bytes.size());
+ try {
+ //boost::asio::connect(tcp_socket, iterator);
+ tcp_socket.connect(tcp_endpoint);
+ } catch (const std::exception& e) {
+ BOOST_LOG_SEV(lg, severity_level::error)
+ << "Couldn't connect to PowerGuru server! " << e.what();
+ exit(-1);
+ }
+
+ ioservice.run();
+ std::thread daemon_thread (daemon_handler, std::ref(tcp_socket));
+
+ std::thread console_thread (console_handler, std::ref(tcp_socket));
+
+#if 0
+ // Commands from the client via the client_handler get processed here
+ // so messages can be passed between threads.
+ while (true) {
+ std::unique_lock<std::mutex> guard(queue_lock);
+ queue_cond.wait(guard, [] { return !tqueue.empty(); });
+ XML xml = tqueue.front();
+ tqueue.pop();
+ // if (xml[0]->nameGet() == "list") {
+ std::vector<std::string> devs;
+ //ownet.listDevices(devs);
+ //std::vector<std::string>::iterator sit;
+ //for (sit = devs.begin(); sit != devs.end(); sit++) {
+ std::cerr << "FIXME: " << xml[0]->nameGet() <<std::endl;
+ //}
}
#endif
- Tcpip net;
- //if (net.createNetClient(pserver) == ERROR) {
- // std::cerr << "ERROR: Can't connect to Powerguru daemon!" <<
std::endl;
- // exit(-1);
- //}
-
- daemon_handler(std::ref(net));
- //std::thread daemon_thread (daemon_handler, std::ref(net));
- //std::thread console_thread (console_handler, std::ref(net));
-
- //daemon_thread.join(); // pauses until second finishes
- //console_thread.join(); // pauses until second finishes
+
+ daemon_thread.join(); // pauses until second finishes
+ console_thread.join(); // pauses until second finishes
#ifdef BUILD_OWNET
//third.join(); // pauses until second finishes
diff --git a/client/threads.cc b/client/threads.cc
index 4409655..4f36940 100644
--- a/client/threads.cc
+++ b/client/threads.cc
@@ -20,6 +20,7 @@
# include "config.h"
#endif
+#include <sys/select.h>
#include <cstring>
#include <vector>
#include <stdlib.h>
@@ -37,6 +38,9 @@
#include <boost/asio/write.hpp>
#include <boost/asio/buffer.hpp>
#include <boost/asio/ip/tcp.hpp>
+#include <boost/date_time/posix_time/posix_time.hpp>
+#include <boost/date_time/posix_time/posix_time_io.hpp>
+#include <iostream>
#include "log.h"
#include "ownet.h"
#include "console.h"
@@ -49,8 +53,13 @@ using namespace std::chrono_literals;
using namespace boost::asio;
using namespace boost::asio::ip;
+// This queue is used to pass data between the threads.
+extern std::mutex queue_lock;
+extern std::queue <XML> tqueue;
+extern std::condition_variable queue_cond;
+
void
-console_handler(Tcpip &net)
+console_handler(boost::asio::ip::tcp::socket &tcp_socket)
{
DEBUGLOG_REPORT_FUNCTION;
@@ -60,16 +69,9 @@ console_handler(Tcpip &net)
int loop = true;
std::string line;
Commands cmd;
-
- // Send a HELO message to the server so it knows who we are
std::string args;
- std::string str;
- args = net.getHostname();
- args += " ";
- args += std::getenv("USER");
- cmd.createCommand(Commands::HELO, args, str);
- // net.writeNet(str);
+ std::string str;
while(loop) {
// Don't eat up all the cpu cycles!
while(std::cin) {
@@ -86,42 +88,28 @@ console_handler(Tcpip &net)
action = line;
}
cmd.createCommand(cmd.convertAction(action), args, str);
- //net.writeNet(str);
+
+ boost::system::error_code error;
+ boost::asio::write(tcp_socket, buffer(str), error);
}
}
}
void
-daemon_handler(Tcpip &net)
+daemon_handler(boost::asio::ip::tcp::socket &tcp_socket)
{
DEBUGLOG_REPORT_FUNCTION;
retcode_t ret;
boost::asio::io_service ioservice;
tcp::resolver resolv{ioservice};
- tcp::socket tcp_socket{ioservice};
std::array<char, 1024> bytes;
std::memset(bytes.data(), 0, bytes.size());
- //tcp::endpoint tcp_endpoint{tcp::v4(), 2014};
- tcp::endpoint
tcp_endpoint(boost::asio::ip::address::from_string("192.168.0.50"), 7654);
-
Commands cmd;
bool loop = true;
int retries = 10;
while (retries-- > 0) {
- //std::vector<unsigned char> data;
boost::system::error_code error;
- tcp::resolver::query q{"pi", "7654"};
- resolv.resolve(q);
- try {
- tcp_socket.connect(tcp_endpoint);
- } catch (const std::exception& e) {
- BOOST_LOG_SEV(lg, severity_level::error)
- << "Couldn't connect to PowerGuru server! " << e.what();
- exit(-1);
- }
-
- ioservice.run();
// Send a HELO message to the server to authenticate
std::string str;
std::string args = boost::asio::ip::host_name();
http://git.savannah.gnu.org/cgit/powerguru.git/commit/?id=66448601b9fc3c85e5286670ab613f1c1bff3f56
commit 66448601b9fc3c85e5286670ab613f1c1bff3f56
Author: Rob Savoye <address@hidden>
Date: Mon Jan 7 12:39:31 2019 -0700
Create and send HELO message to the client
diff --git a/daemon/threads.cc b/daemon/threads.cc
index 267f62b..16d79ce 100644
--- a/daemon/threads.cc
+++ b/daemon/threads.cc
@@ -148,12 +148,34 @@ client_handler(Tcpip &net)
//tcp_acceptor.async_accept(tcp_socket, accept_handler);
tcp_acceptor.accept(tcp_socket);
ioservice.run();
- //std::array<char, 4096> bytes;
- //tcp_socket.async_read_some(buffer(bytes), read_handler);
bool loop = true;
+ boost::system::error_code error;
+
+ BOOST_LOG_SEV(lg, severity_level::info) << "PowerGuru ready for incoming
connections";
+
+ // Wait for a simple handshake from the client, a HELO message
+ try {
+ tcp_socket.read_some(buffer(bytes), error);
+ } catch (const std::exception& e) {
+ BOOST_LOG_SEV(lg, severity_level::error)
+ << "Couldn't read data from PowerGuru client! " << e.what();
+ exit(-1);
+ }
+ // Send a HELO back to Acknowledge the client
+ std::string str;
+ std::string args = boost::asio::ip::host_name();
+ args += " ";
+ args += std::getenv("USER");
+ cmd.createCommand(Commands::HELO, args, str);
+ try {
+ boost::asio::write(tcp_socket, buffer(str), error);
+ } catch (const std::exception& e) {
+ BOOST_LOG_SEV(lg, severity_level::error)
+ << "Couldn't write data to PowerGuru server! " << e.what();
+ exit(-1);
+ }
+
while (loop) {
- boost::system::error_code error;
- boost::asio::write(tcp_socket, buffer("Hello World!\n"), error);
tcp_socket.read_some(buffer(bytes), error);
std::cerr << bytes.data();
// Client dropped connection
http://git.savannah.gnu.org/cgit/powerguru.git/commit/?id=a442bf158dd0a690f30d885726aa09636fff27f5
commit a442bf158dd0a690f30d885726aa09636fff27f5
Author: Rob Savoye <address@hidden>
Date: Mon Jan 7 12:23:27 2019 -0700
Create and send HELO message to server
diff --git a/client/threads.cc b/client/threads.cc
index aa1b875..4409655 100644
--- a/client/threads.cc
+++ b/client/threads.cc
@@ -32,6 +32,7 @@
#include <condition_variable>
#include <mutex>
#include <chrono>
+#include <boost/asio.hpp>
#include <boost/asio/io_service.hpp>
#include <boost/asio/write.hpp>
#include <boost/asio/buffer.hpp>
@@ -51,7 +52,7 @@ using namespace boost::asio::ip;
void
console_handler(Tcpip &net)
{
- DEBUGLOG_REPORT_FUNCTION;
+ DEBUGLOG_REPORT_FUNCTION;
// This is the main command loop for user input. Commands in
// a simple XML format, but for the user simple text strings
@@ -104,6 +105,7 @@ daemon_handler(Tcpip &net)
//tcp::endpoint tcp_endpoint{tcp::v4(), 2014};
tcp::endpoint
tcp_endpoint(boost::asio::ip::address::from_string("192.168.0.50"), 7654);
+ Commands cmd;
bool loop = true;
int retries = 10;
while (retries-- > 0) {
@@ -111,13 +113,38 @@ daemon_handler(Tcpip &net)
boost::system::error_code error;
tcp::resolver::query q{"pi", "7654"};
resolv.resolve(q);
- tcp_socket.connect(tcp_endpoint);
+ try {
+ tcp_socket.connect(tcp_endpoint);
+ } catch (const std::exception& e) {
+ BOOST_LOG_SEV(lg, severity_level::error)
+ << "Couldn't connect to PowerGuru server! " << e.what();
+ exit(-1);
+ }
+
ioservice.run();
- //boost::asio::write(tcp_socket, buffer("Hello World!\n"), error);
+ // Send a HELO message to the server to authenticate
+ std::string str;
+ std::string args = boost::asio::ip::host_name();
+ args += " ";
+ args += std::getenv("USER");
+ cmd.createCommand(Commands::HELO, args, str);
+ try {
+ boost::asio::write(tcp_socket, buffer(str), error);
+ } catch (const std::exception& e) {
+ BOOST_LOG_SEV(lg, severity_level::error)
+ << "Couldn't write data to PowerGuru server! " << e.what();
+ exit(-1);
+ }
while (loop) {
- tcp_socket.read_some(buffer(bytes), error);
+ try {
+ tcp_socket.read_some(buffer(bytes), error);
+ } catch (const std::exception& e) {
+ BOOST_LOG_SEV(lg, severity_level::error)
+ << "Couldn't read data from PowerGuru server! " <<
e.what();
+ exit(-1);
+ }
// if the first character is a <, assume it's in XML formst.
- std::string str = bytes.data();
+ str = bytes.data();
if (bytes[0] == '<') {
XML xml;
// the data buffer is padded with zeros, so we can safely
convert
@@ -128,11 +155,12 @@ daemon_handler(Tcpip &net)
if (xml.nameGet() == "command") {
//std::cerr << "FIXME2: Command: " << xml.valueGet() <<
std::endl;
if (xml.valueGet() == "help") {
- boost::asio::write(tcp_socket, buffer("Hello World
Again!\n"), error);
+ boost::asio::write(tcp_socket, buffer("Hello
World!\n"), error);
}
} else if (xml.nameGet() == "data") {
std::cerr << "FIXME: DATA: " << xml.valueGet() <<
std::endl;
} else {
+ std::cerr << "FIXME: JUNK: " << xml.nameGet() << std::endl;
std::cerr << "FIXME: JUNK: " << xml.valueGet() <<
std::endl;
}
//xml.dump();
-----------------------------------------------------------------------
Summary of changes:
client/cmd.cc | 87 +++++++++++++++++++++++++++++++++++--------------
client/threads.cc | 66 +++++++++++++++++++++++--------------
daemon/threads.cc | 62 ++++++++++++++++++++++++-----------
python/chart.py | 65 ++++++++++++++++++++++++++++++++++++
python/requirements.txt | 1 +
5 files changed, 212 insertions(+), 69 deletions(-)
create mode 100755 python/chart.py
hooks/post-receive
--
powerguru
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Powerguru-commit] [SCM] powerguru branch, master, updated. 85026303f4b30f43a327a66cf46d1e2f53ab4e80,
Rob Savoye <=