diff --git a/src/redis/CommandMonitor.cc b/src/redis/CommandMonitor.cc index de70e80f431b2d9af8e1b39992b8698bc11e4b45..a9a51b4bafa2ec056fccb8b76236cf389782e5ff 100644 --- a/src/redis/CommandMonitor.cc +++ b/src/redis/CommandMonitor.cc @@ -30,14 +30,14 @@ CommandMonitor::CommandMonitor() { } -void CommandMonitor::broadcast(const std::string& linkDescription, const RedisRequest &received) { +void CommandMonitor::broadcast(const std::string& linkDescription, const std::string& printableString) { if(!active) return; std::lock_guard<std::mutex> lock(mtx); auto it = monitors.begin(); while(it != monitors.end()) { - bool stillAlive = (*it)->appendIfAttached(Formatter::status(SSTR(linkDescription << ": " << received.toPrintableString()))); + bool stillAlive = (*it)->appendIfAttached(Formatter::status(SSTR(linkDescription << ": " << printableString))); if(!stillAlive) { it = monitors.erase(it); @@ -50,6 +50,16 @@ void CommandMonitor::broadcast(const std::string& linkDescription, const RedisRe if(monitors.size() == 0) active = false; } +void CommandMonitor::broadcast(const std::string& linkDescription, const RedisRequest& req) { + if(!active) return; + return broadcast(linkDescription, req.toPrintableString()); +} + +void CommandMonitor::broadcast(const std::string& linkDescription, const MultiOp& multiOp) { + if(!active) return; + return broadcast(linkDescription, multiOp.toPrintableString()); +} + void CommandMonitor::addRegistration(Connection *c) { std::lock_guard<std::mutex> lock(mtx); diff --git a/src/redis/CommandMonitor.hh b/src/redis/CommandMonitor.hh index 72e192bead1b2adfd11c26c69146e579104905d2..1a320461812589694d3aa9d5099ec8ea2170f46c 100644 --- a/src/redis/CommandMonitor.hh +++ b/src/redis/CommandMonitor.hh @@ -21,23 +21,29 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>.* ************************************************************************/ -#ifndef __QUARKDB_COMMAND_MONITOR_H__ -#define __QUARKDB_COMMAND_MONITOR_H__ +#ifndef QUARKDB_COMMAND_MONITOR_H +#define QUARKDB_COMMAND_MONITOR_H #include <list> #include "../Connection.hh" namespace quarkdb { +class MultiOp; + class CommandMonitor { public: CommandMonitor(); - void broadcast(const std::string& linkDescription, const RedisRequest &received); + void broadcast(const std::string& linkDescription, const RedisRequest& received); + void broadcast(const std::string& linkDescription, const MultiOp& multiOp); + void addRegistration(Connection *c); size_t size(); private: + void broadcast(const std::string& linkDescription, const std::string& printableString); + std::atomic<int64_t> active {false}; std::mutex mtx;