65 T * pManager{
new T{uuid}};
68 pManager->initialize(registrarProxy);
72 int main(
int argc,
char * argv[])
78 std::vector<option> options =
80 {
"help",0,
nullptr,
'h'},
81 {
"version",0,
nullptr,
'v'},
82 {
"configuration",0,
nullptr,
'c'},
83 {
"manifest",0,
nullptr,
'm'},
89 bool bConfiguration{
false};
90 bool bShowManifest{
false};
92 while((iOption = getopt_long(argc,argv,
"hcmv", &options[0],&iOptionIndex)) != -1)
103 std::cout<<VERSION<<std::endl;
108 bConfiguration =
true;
112 bShowManifest =
true;
116 std::cerr<<
"Unknown option: -"<<
static_cast<char>(iOption)<<std::endl;
121 std::string sFileName;
125 std::cerr<<
"Missing plugin"<<std::endl;
130 sFileName = argv[optind];
139 std::string sPluginName;
151 sPluginName = sFileName;
154 std::unique_ptr<EMANE::Component> pComponent;
157 if(sPluginName ==
"nemmanager")
159 auto pManager = createManager<EMANE::Application::NEMManagerImpl>();
160 buildId = pManager->getBuildId();
161 pComponent.reset(pManager);
164 else if(sPluginName ==
"transportmanager")
166 auto pManager = createManager<EMANE::Application::TransportManagerImpl>();
167 buildId = pManager->getBuildId();
168 pComponent.reset(pManager);
170 else if(sPluginName ==
"eventgeneratormanager")
172 auto pManager = createManager<EMANE::Application::EventGeneratorManagerImpl>();
173 buildId = pManager->getBuildId();
174 pComponent.reset(pManager);
176 else if(sPluginName ==
"eventagentmanager")
178 auto pManager = createManager<EMANE::Application::EventAgentManagerImpl>();
179 buildId = pManager->getBuildId();
180 pComponent.reset(pManager);
184 if(sPluginName ==
"emanephy" || sPluginName.empty())
198 auto pPlugin = nemBuilder.
buildPHYLayer(1,sPluginName,request,!bConfiguration);
199 buildId = pPlugin->getBuildId();
200 pComponent.reset(pPlugin.release());
206 auto pPlugin = nemBuilder.
buildMACLayer(1,sPluginName,request,!bConfiguration);
207 buildId = pPlugin->getBuildId();
208 pComponent.reset(pPlugin.release());
214 auto pPlugin = nemBuilder.
buildShimLayer(1,sPluginName,request,!bConfiguration);
215 buildId = pPlugin->getBuildId();
216 pComponent.reset(pPlugin.release());
222 auto pPlugin = eventGeneratorBuilder.
buildEventGenerator(sPluginName,request,!bConfiguration);
223 buildId = pPlugin->getBuildId();
224 pComponent.reset(pPlugin.release());
230 auto pPlugin = eventAgentBuilder.
buildEventAgent(1,sPluginName,request,!bConfiguration);
231 buildId = pPlugin->getBuildId();
232 pComponent.reset(pPlugin.release());
238 auto pPlugin = transportBuilder.
buildTransport(1,sPluginName,request,!bConfiguration);
239 buildId = pPlugin->getBuildId();
240 pComponent.reset(pPlugin.release());
254 std::cerr<<exp.
what()<<std::endl;
260 catch(
const std::exception & exp)
262 std::cerr<<exp.what()<<std::endl;
276 std::cout<<
"usage: emaneinfo [OPTIONS]... <plugin>|'nemmanager'|'transportmanager'|"<<std::endl;
277 std::cout<<
" 'eventagentmanager'|'eventgeneratormanager'"<<std::endl;
278 std::cout<<std::endl;
279 std::cout<<
" CONFIG_URI URI of XML configuration file."<<std::endl;
280 std::cout<<std::endl;
281 std::cout<<
"options:"<<std::endl;
282 std::cout<<
" -h, --help Print this message and exit."<<std::endl;
283 std::cout<<
" -m, --manifest Print manifest."<<std::endl;
284 std::cout<<
" -v, --version Print version and exit."<<std::endl;
285 std::cout<<std::endl;
const std::string getPluginName() const
std::unique_ptr< NEMLayer > buildTransport(NEMId id, const std::string &sLibraryFile, const ConfigurationUpdateRequest &request, bool bSkipConfigure=false) const
std::unique_ptr< NEMLayer > buildMACLayer(NEMId id, const std::string &sLibraryFile, const ConfigurationUpdateRequest &request, bool bSkipConfigure=false)
std::string manifest(BuildId buildId, const std::string &sName)
Exception base class that allows for type and description information.
std::unique_ptr< NEMLayer > buildPHYLayer(NEMId id, const std::string &sLibraryFile, const ConfigurationUpdateRequest &request, bool bSkipConfigure=false)
const EMANE::ConfigurationUpdateRequest & getConfigurationUpdateRequest() const
const char * what() const
Provides methods for contructing transports and a manager to contain and control them as a a group...
Provides methods for constructing event generators and a manager to contain and control them as a gro...
std::unique_ptr< EventGenerator > buildEventGenerator(const std::string &sLibraryFile, const ConfigurationUpdateRequest &request, bool bSkipConfigure=false)
int main(int argc, char *argv[])
std::vector< ConfigurationNameStringValues > ConfigurationUpdateRequest
Provides methods for constructing event agents and a manager to contain and control them as a group...
std::unique_ptr< EventAgent > buildEventAgent(EMANE::NEMId nemId, const std::string &sLibraryFile, const ConfigurationUpdateRequest &request, bool bSkipConfigure=false)
static OTAManager * instance()
Provides methods for constructing an emulator instance from its constituent parts.
std::unique_ptr< NEMLayer > buildShimLayer(NEMId id, const std::string &sLibraryFile, const ConfigurationUpdateRequest &request, bool bSkipConfigure=false)
PluginType getPluginType() const