summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/include/gnuradio/rpcserver_aggregator.h
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-runtime/include/gnuradio/rpcserver_aggregator.h')
-rw-r--r--gnuradio-runtime/include/gnuradio/rpcserver_aggregator.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/gnuradio-runtime/include/gnuradio/rpcserver_aggregator.h b/gnuradio-runtime/include/gnuradio/rpcserver_aggregator.h
index 98aae92b90..08426bb00c 100644
--- a/gnuradio-runtime/include/gnuradio/rpcserver_aggregator.h
+++ b/gnuradio-runtime/include/gnuradio/rpcserver_aggregator.h
@@ -40,6 +40,9 @@ public:
void registerQueryCallback(const std::string &id, const queryCallback_t callback);
void unregisterQueryCallback(const std::string &id);
+ void registerHandlerCallback(const std::string &id, const handlerCallback_t callback);
+ void unregisterHandlerCallback(const std::string &id);
+
void registerServer(rpcmanager_base::rpcserver_booter_base_sptr server);
const std::string& type();
@@ -91,6 +94,32 @@ private:
const std::string& id;
};
+
+
+ template<class T, typename Tcallback>
+ struct registerHandlerCallback_f: public std::unary_function<T,void>
+ {
+ registerHandlerCallback_f(const std::string &_id, const Tcallback _callback)
+ : id(_id), callback(_callback)
+ {;}
+
+ void operator()(T& x) { x->i()->registerHandlerCallback(id, callback); }
+ const std::string& id; const Tcallback& callback;
+ };
+
+ template<class T, typename Tcallback>
+ struct unregisterHandlerCallback_f: public std::unary_function<T,void>
+ {
+ unregisterHandlerCallback_f(const std::string &_id)
+ : id(_id)
+ {;}
+
+ void operator()(T& x) { x->i()->unregisterHandlerCallback(id); }
+ const std::string& id;
+ };
+
+
+
const std::string d_type;
typedef std::vector<rpcmanager_base::rpcserver_booter_base_sptr> rpcServerMap_t;
std::vector<std::string> d_registeredServers;