summaryrefslogtreecommitdiffstats
path: root/gui/muxconfig.py
diff options
context:
space:
mode:
Diffstat (limited to 'gui/muxconfig.py')
-rw-r--r--gui/muxconfig.py47
1 files changed, 37 insertions, 10 deletions
diff --git a/gui/muxconfig.py b/gui/muxconfig.py
index 64321a2..4b307fd 100644
--- a/gui/muxconfig.py
+++ b/gui/muxconfig.py
@@ -20,7 +20,7 @@
#
# You should have received a copy of the GNU General Public License
# along with ODR-DabMux. If not, see <http://www.gnu.org/licenses/>.
-import socket
+import zmq
import json
class General(object):
@@ -95,23 +95,45 @@ class ConfigurationHandler(object):
# local copy of the configuration
self._server_version = None
self._config = None
+ self._statistics = None
+
+ self._ctx = zmq.Context()
+ self.sock = zmq.Socket(self._ctx, zmq.REQ)
+ self.sock.connect("tcp://{}:{}".format(self._host, self._port))
def load(self):
"""Load the configuration from the multiplexer and
save it locally"""
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ self.sock.send(b'info')
+ server_info = self.sock.recv()
+
+ self.sock.send(b'getptree')
+ config_info = self.sock.recv()
+
+ print("Config '%r'" % config_info)
+
+ self._server_version = json.loads(server_info)['service']
+ self._config = json.loads(config_info)
- s.connect((self._host, self._port))
- s.sendall(b'getptree\n')
- server_info = s.recv(32768)
- config_info = s.recv(32768)
- s.close()
+ def update_stats(self):
+ """Load the statistics from the multiplexer and
+ save them locally"""
- self._server_version = json.loads(server_info.decode())['service']
- self._config = json.loads(config_info.decode())
+ self.sock.send(b'info')
+ server_info = self.sock.recv()
+
+ self.sock.send(b'values')
+ stats_info = self.sock.recv()
+
+ self._statistics = json.loads(stats_info)['values']
def get_full_configuration(self):
- return self._config
+ return json.dumps(self._config, indent=4)
+
+ def set_full_configuration(self, config_json):
+ self.sock.send(b'setptree', flags=zmq.SNDMORE)
+ self.sock.send(config_json)
+ return self.sock.recv() == "OK"
def get_mux_version(self):
return self._server_version
@@ -130,3 +152,8 @@ class ConfigurationHandler(object):
def get_general_options(self):
return General(self._config)
+
+ def get_stats_dict(self):
+ """Return a dictionary with all stats"""
+ self.update_stats()
+ return self._statistics