GNU Radio Manual and C++ API Reference  3.9.0.0
The Free & Open Software Radio Ecosystem
rpcserver_aggregator.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2012 Free Software Foundation, Inc.
4  *
5  * This file is part of GNU Radio
6  *
7  * SPDX-License-Identifier: GPL-3.0-or-later
8  *
9  */
10 
11 #ifndef RPCSERVER_AGGREGATOR_H
12 #define RPCSERVER_AGGREGATOR_H
13 
16 #include <string>
17 #include <vector>
18 
19 class rpcserver_aggregator : public virtual rpcserver_base
20 {
21 public:
24 
25  void registerConfigureCallback(const std::string& id,
26  const configureCallback_t callback) override;
27  void unregisterConfigureCallback(const std::string& id) override;
28 
29  void registerQueryCallback(const std::string& id,
30  const queryCallback_t callback) override;
31  void unregisterQueryCallback(const std::string& id) override;
32 
33  void registerHandlerCallback(const std::string& id,
34  const handlerCallback_t callback) override;
35  void unregisterHandlerCallback(const std::string& id) override;
36 
37  void registerServer(rpcmanager_base::rpcserver_booter_base_sptr server);
38 
39  const std::string& type();
40 
41  const std::vector<std::string>& registeredServers();
42 
43 private:
44  template <class T, typename Tcallback>
45  struct registerConfigureCallback_f : public std::unary_function<T, void> {
46  registerConfigureCallback_f(const std::string& _id, const Tcallback _callback)
47  : id(_id), callback(_callback)
48  {
49  ;
50  }
51 
52  void operator()(T& x) { x->i()->registerConfigureCallback(id, callback); }
53  const std::string id;
54  const Tcallback callback;
55  };
56 
57  template <class T, typename Tcallback>
58  struct unregisterConfigureCallback_f : public std::unary_function<T, void> {
59  unregisterConfigureCallback_f(const std::string& _id) : id(_id) { ; }
60 
61  void operator()(T& x) { x->i()->unregisterConfigureCallback(id); }
62  const std::string id;
63  };
64 
65  template <class T, typename Tcallback>
66  struct registerQueryCallback_f : public std::unary_function<T, void> {
67  registerQueryCallback_f(const std::string& _id, const Tcallback _callback)
68  : id(_id), callback(_callback)
69  {
70  ;
71  }
72 
73  void operator()(T& x) { x->i()->registerQueryCallback(id, callback); }
74  const std::string id;
75  const Tcallback callback;
76  };
77 
78  template <class T, typename Tcallback>
79  struct unregisterQueryCallback_f : public std::unary_function<T, void> {
80  unregisterQueryCallback_f(const std::string& _id) : id(_id) { ; }
81 
82  void operator()(T& x) { x->i()->unregisterQueryCallback(id); }
83  const std::string id;
84  };
85 
86 
87  template <class T, typename Tcallback>
88  struct registerHandlerCallback_f : public std::unary_function<T, void> {
89  registerHandlerCallback_f(const std::string& _id, const Tcallback _callback)
90  : id(_id), callback(_callback)
91  {
92  ;
93  }
94 
95  void operator()(T& x) { x->i()->registerHandlerCallback(id, callback); }
96  const std::string id;
97  const Tcallback callback;
98  };
99 
100  template <class T, typename Tcallback>
101  struct unregisterHandlerCallback_f : public std::unary_function<T, void> {
102  unregisterHandlerCallback_f(const std::string& _id) : id(_id) { ; }
103 
104  void operator()(T& x) { x->i()->unregisterHandlerCallback(id); }
105  const std::string id;
106  };
107 
108 
109  const std::string d_type;
110  typedef std::vector<rpcmanager_base::rpcserver_booter_base_sptr> rpcServerMap_t;
111  std::vector<std::string> d_registeredServers;
112  rpcServerMap_t d_serverlist;
113 };
114 
115 #endif /* RPCSERVER_AGGREGATOR_H */
Definition: rpccallbackregister_base.h:83
Definition: rpcserver_aggregator.h:20
void registerQueryCallback(const std::string &id, const queryCallback_t callback) override
void registerHandlerCallback(const std::string &id, const handlerCallback_t callback) override
void unregisterConfigureCallback(const std::string &id) override
void registerServer(rpcmanager_base::rpcserver_booter_base_sptr server)
void unregisterQueryCallback(const std::string &id) override
void unregisterHandlerCallback(const std::string &id) override
~rpcserver_aggregator() override
void registerConfigureCallback(const std::string &id, const configureCallback_t callback) override
const std::vector< std::string > & registeredServers()
const std::string & type()
Definition: rpcserver_base.h:17