14#include "keyple/core/service/LocalPluginAdapter.hpp"
19#include "keyple/core/service/LocalReaderAdapter.hpp"
20#include "keyple/core/service/ObservableLocalReaderAdapter.hpp"
21#include "keyple/core/util/cpp/exception/Exception.hpp"
22#include "keyple/core/util/cpp/exception/IllegalArgumentException.hpp"
28using keyple::core::util::cpp::exception::Exception;
29using keyple::core::util::cpp::exception::IllegalArgumentException;
31LocalPluginAdapter::LocalPluginAdapter(std::shared_ptr<PluginSpi> pluginSpi)
32: AbstractPluginAdapter(
33 pluginSpi ? pluginSpi->getName() :
"",
34 std::dynamic_pointer_cast<KeyplePluginExtension>(pluginSpi))
35, mPluginSpi(pluginSpi)
37 if (pluginSpi ==
nullptr) {
38 throw IllegalArgumentException(
"Invalid pluginSpi");
43LocalPluginAdapter::doRegister()
45 AbstractPluginAdapter::doRegister();
47 const std::vector<std::shared_ptr<ReaderSpi>> readerSpiList
48 = mPluginSpi->searchAvailableReaders();
50 for (
const auto& readerSpi : readerSpiList) {
51 std::shared_ptr<LocalReaderAdapter> localReaderAdapter
52 = buildLocalReaderAdapter(readerSpi);
53 getReadersMap().insert({readerSpi->getName(), localReaderAdapter});
54 localReaderAdapter->doRegister();
59LocalPluginAdapter::doUnregister()
62 mPluginSpi->onUnregister();
63 }
catch (
const Exception& e) {
65 "Error unregistering plugin extension [%]: %\n",
70 AbstractPluginAdapter::doUnregister();