11/* *************************************************************************************************
2- * Copyright (c) 2021 Calypso Networks Association https://calypsonet.org/ *
2+ * Copyright (c) 2022 Calypso Networks Association https://calypsonet.org/ *
33 * *
44 * See the NOTICE file(s) distributed with this work for additional information regarding *
55 * copyright ownership. *
@@ -37,10 +37,10 @@ std::shared_ptr<LocalReaderAdapter> AbstractPluginAdapter::buildLocalReaderAdapt
3737
3838 const auto & observable = std::dynamic_pointer_cast<ObservableReaderSpi>(readerSpi);
3939 const auto & configurable = std::dynamic_pointer_cast<ConfigurableReaderSpi>(readerSpi);
40-
40+
4141 if (observable) {
4242 if (configurable) {
43- adapter =
43+ adapter =
4444 std::make_shared<ObservableLocalConfigurableReaderAdapter>(configurable, getName ());
4545 } else {
4646 adapter = std::make_shared<ObservableLocalReaderAdapter>(observable, getName ());
@@ -71,17 +71,17 @@ void AbstractPluginAdapter::doRegister()
7171void AbstractPluginAdapter::doUnregister ()
7272{
7373 mIsRegistered = false ;
74-
74+
7575 for (const auto & pair : mReaders ) {
7676 try {
7777 std::dynamic_pointer_cast<AbstractReaderAdapter>(pair.second )->doUnregister ();
7878 } catch (const Exception& e) {
79- mLogger ->error (" Error during the unregistration of reader '%'\n " ,
80- pair.second ->getName (),
79+ mLogger ->error (" Error during the unregistration of reader '%'\n " ,
80+ pair.second ->getName (),
8181 e);
8282 }
8383 }
84-
84+
8585 mReaders .clear ();
8686 mIsRegistered = false ;
8787}
@@ -101,6 +101,19 @@ std::shared_ptr<KeyplePluginExtension> AbstractPluginAdapter::getExtension(
101101 return mPluginExtension ;
102102}
103103
104+ std::shared_ptr<KeypleReaderExtension> AbstractPluginAdapter::getReaderExtension (
105+ const std::type_info& readerExtensionClass, const std::string& readerName) const
106+ {
107+ checkStatus ();
108+
109+ const auto reader = std::dynamic_pointer_cast<AbstractReaderAdapter>(getReader (readerName));
110+ if (reader == nullptr ) {
111+ throw IllegalArgumentException (" Reader '" + readerName + " 'not found!" );
112+ }
113+
114+ return reader->getExtension (readerExtensionClass);
115+ }
116+
104117std::map<const std::string, std::shared_ptr<Reader>>& AbstractPluginAdapter::getReadersMap ()
105118{
106119 return mReaders ;
0 commit comments