GNU Radio 3.7.1 C++ API
|
00001 /* -*- c++ -*- */ 00002 /* 00003 * Copyright 2012 Free Software Foundation, Inc. 00004 * 00005 * This file is part of GNU Radio 00006 * 00007 * GNU Radio is free software; you can redistribute it and/or modify 00008 * it under the terms of the GNU General Public License as published by 00009 * the Free Software Foundation; either version 3, or (at your option) 00010 * any later version. 00011 * 00012 * GNU Radio is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU General Public License 00018 * along with GNU Radio; see the file COPYING. If not, write to 00019 * the Free Software Foundation, Inc., 51 Franklin Street, 00020 * Boston, MA 02110-1301, USA. 00021 */ 00022 00023 #ifndef RPCMANAGER_H 00024 #define RPCMANAGER_H 00025 00026 #include <gnuradio/api.h> 00027 #include <gnuradio/rpcmanager_base.h> 00028 #include <gnuradio/rpcserver_booter_aggregator.h> 00029 #include <memory> 00030 #include <iostream> 00031 00032 class GR_RUNTIME_API rpcmanager : public virtual rpcmanager_base 00033 { 00034 public: 00035 rpcmanager(); 00036 ~rpcmanager(); 00037 00038 static rpcserver_booter_base* get(); 00039 00040 static void register_booter(rpcserver_booter_base* booter); 00041 00042 template<typename T> class rpcserver_booter_register_helper 00043 { 00044 public: 00045 rpcserver_booter_register_helper() { 00046 rpcmanager::register_booter(new T()); 00047 } 00048 00049 //TODO: unregister 00050 }; 00051 00052 private: 00053 static bool make_aggregator; 00054 static bool booter_registered; 00055 static bool aggregator_registered; 00056 static void rpcserver_booter_base_sptr_dest(rpcserver_booter_base* b) {;} 00057 static rpcserver_booter_base* boot; 00058 static std::auto_ptr<rpcserver_booter_aggregator> aggregator; 00059 }; 00060 00061 #endif /* RPCMANAGER_H */