From f34ca68cf2742d6dbe4f6df3d990fd5c519bbcde Mon Sep 17 00:00:00 2001 From: Thorvald Natvig Date: Wed, 10 Sep 2008 14:59:20 +0000 Subject: [PATCH] getVersion() for DBus/ICE git-svn-id: https://mumble.svn.sourceforge.net/svnroot/mumble/trunk@1302 05730e5d-ab1b-0410-a4ac-84af385074fa --- src/mumble.pri | 1 + src/murmur/DBus.cpp | 4 ++++ src/murmur/DBus.h | 1 + src/murmur/Meta.h | 1 + src/murmur/Murmur.ice | 1 + src/murmur/MurmurI.h | 3 +++ src/murmur/MurmurIce.cpp | 7 +++++++ src/murmur/MurmurIceWrapper.cpp | 4 ++++ src/murmur/RPC.cpp | 12 ++++++++++++ 9 files changed, 34 insertions(+) diff --git a/src/mumble.pri b/src/mumble.pri index 00b2abb59..9ef18b097 100644 --- a/src/mumble.pri +++ b/src/mumble.pri @@ -3,6 +3,7 @@ include(../compiler.pri) VERSION = 1.1.6 DIST = mumble.pro murmur.pro mumble.pri mumble.ico Message.h mumble_plugin.h PacketDataStream.h CryptState.h Timer.h Version.h CONFIG += qt thread debug_and_release warn_on +DEFINES *= MUMBLE_VERSION_STRING=$$VERSION INCLUDEPATH += $$PWD diff --git a/src/murmur/DBus.cpp b/src/murmur/DBus.cpp index 2b78e5995..4e0b559b4 100644 --- a/src/murmur/DBus.cpp +++ b/src/murmur/DBus.cpp @@ -1108,3 +1108,7 @@ void MetaDBus::quit() { qWarning("Quit requested from D-Bus"); QCoreApplication::instance()->quit(); } + +void MetaDBus::getVersion(int &major, int &minor, int &patch, QString &text) { + Meta::getVersion(major, minor, patch, text); +} diff --git a/src/murmur/DBus.h b/src/murmur/DBus.h index 4fcec4229..bac8eeeb8 100644 --- a/src/murmur/DBus.h +++ b/src/murmur/DBus.h @@ -245,6 +245,7 @@ class MetaDBus : public QDBusAbstractAdaptor { void setSuperUserPassword(int server_id, const QString &pw, const QDBusMessage &); void rotateLogs(const QDBusMessage &); void getLog(int server_id, int min_offset, int max_offset, const QDBusMessage &, QList &entries); + void getVersion(int &major, int &minor, int &patch, QString &string); void quit(); signals: void started(int server_id); diff --git a/src/murmur/Meta.h b/src/murmur/Meta.h index 934565bb6..ce30c161d 100644 --- a/src/murmur/Meta.h +++ b/src/murmur/Meta.h @@ -96,6 +96,7 @@ class Meta : public QObject { bool banCheck(const QHostAddress &); void kill(int); void killAll(); + static void getVersion(int &major, int &minor, int &patch, QString &string); }; extern Meta *meta; diff --git a/src/murmur/Murmur.ice b/src/murmur/Murmur.ice index 246ff2ec0..f6365d6da 100644 --- a/src/murmur/Murmur.ice +++ b/src/murmur/Murmur.ice @@ -149,5 +149,6 @@ module Murmur idempotent ServerList getBootedServers(); idempotent ServerList getAllServers(); idempotent ConfigMap getDefaultConf(); + idempotent void getVersion(out int major, out int minor, out int patch, out string text); }; }; diff --git a/src/murmur/MurmurI.h b/src/murmur/MurmurI.h index 48eee6cd3..25add8d5a 100644 --- a/src/murmur/MurmurI.h +++ b/src/murmur/MurmurI.h @@ -175,6 +175,9 @@ class MetaI : virtual public Meta { virtual void getDefaultConf_async(const ::Murmur::AMD_Meta_getDefaultConfPtr&, const Ice::Current&); + + virtual void getVersion_async(const ::Murmur::AMD_Meta_getVersionPtr&, + const Ice::Current&); }; } diff --git a/src/murmur/MurmurIce.cpp b/src/murmur/MurmurIce.cpp index 25822360f..9095e9173 100644 --- a/src/murmur/MurmurIce.cpp +++ b/src/murmur/MurmurIce.cpp @@ -778,4 +778,11 @@ static void impl_Meta_getBootedServers(const ::Murmur::AMD_Meta_getBootedServers cb->ice_response(sl); } +static void impl_Meta_getVersion(const ::Murmur::AMD_Meta_getVersionPtr cb, const Ice::ObjectAdapterPtr) { + int major, minor, patch; + QString txt; + ::Meta::getVersion(major, minor, patch, txt); + cb->ice_response(major, minor, patch, toStdUtf8String(txt)); +} + #include "MurmurIceWrapper.cpp" diff --git a/src/murmur/MurmurIceWrapper.cpp b/src/murmur/MurmurIceWrapper.cpp index e789e5fa9..85b17bccf 100644 --- a/src/murmur/MurmurIceWrapper.cpp +++ b/src/murmur/MurmurIceWrapper.cpp @@ -162,3 +162,7 @@ void ::Murmur::MetaI::getDefaultConf_async(const ::Murmur::AMD_Meta_getDefaultCo IceEvent *ie = new IceEvent(boost::bind(&impl_Meta_getDefaultConf, cb, current.adapter)); QCoreApplication::instance()->postEvent(mi, ie); }; +void ::Murmur::MetaI::getVersion_async(const ::Murmur::AMD_Meta_getVersionPtr &cb, const ::Ice::Current ¤t) { + IceEvent *ie = new IceEvent(boost::bind(&impl_Meta_getVersion, cb, current.adapter)); + QCoreApplication::instance()->postEvent(mi, ie); +}; diff --git a/src/murmur/RPC.cpp b/src/murmur/RPC.cpp index 814055807..15827ae36 100644 --- a/src/murmur/RPC.cpp +++ b/src/murmur/RPC.cpp @@ -29,6 +29,7 @@ */ #include "Server.h" +#include "Version.h" void Server::setPlayerState(Player *pPlayer, Channel *cChannel, bool mute, bool deaf, bool suppressed) { bool changed = false; @@ -184,3 +185,14 @@ void Server::sendTextMessage(Channel *cChannel, User *pPlayer, bool tree, const } } } + +void Meta::getVersion(int &major, int &minor, int &patch, QString &string) { + string = QLatin1String(MUMBLE_RELEASE); + major = minor = patch = 0; + QRegExp rx(QLatin1String("(\\d+)\\.(\\d+)\\.(\\d+)")); + if (rx.exactMatch(QLatin1String(MUMTEXT(MUMBLE_VERSION_STRING)))) { + major = rx.cap(1).toInt(); + minor = rx.cap(2).toInt(); + patch = rx.cap(3).toInt(); + } +}