14#include "keyple/core/service/AutonomousObservableLocalPluginAdapter.hpp"
20#include "keyple/core/service/PluginEventAdapter.hpp"
21#include "keyple/core/util/KeypleAssert.hpp"
22#include "keyple/core/util/cpp/exception/Exception.hpp"
23#include "keypop/reader/CardReader.hpp"
29using keyple::core::util::cpp::exception::Exception;
30using keypop::reader::CardReader;
32AutonomousObservableLocalPluginAdapter::AutonomousObservableLocalPluginAdapter(
33 std::shared_ptr<AutonomousObservablePluginSpi>
34 autonomousObservablePluginSpi)
35: AbstractObservableLocalPluginAdapter(autonomousObservablePluginSpi)
38 autonomousObservablePluginSpi->setCallback(
this);
39 }
catch (
const Exception&) {
41 "[plugin=%] Method 'setCallback(...)' unavailable for legacy "
44 autonomousObservablePluginSpi->connect(
this);
49AutonomousObservableLocalPluginAdapter::onReaderConnected(
50 const std::vector<std::shared_ptr<ReaderSpi>>& readers)
52 Assert::getInstance().notEmpty(readers,
"readers");
53 std::vector<std::string> notifyReaders;
55 for (
const auto& readerSpi : readers) {
58 notifyReaders.push_back(readerSpi->getName());
62 std::make_shared<PluginEventAdapter>(
63 getName(), notifyReaders, PluginEvent::Type::READER_CONNECTED));
67AutonomousObservableLocalPluginAdapter::onReaderDisconnected(
68 const std::vector<std::string>& readerNames)
70 Assert::getInstance().notEmpty(readerNames,
"readerNames");
71 std::vector<std::string> notifyReaders;
73 for (
const auto& readerName : readerNames) {
74 const std::shared_ptr<CardReader> reader = getReader(readerName);
75 if (reader ==
nullptr) {
77 "[plugin=%] Unable to remove unknown reader [reader=%]\n",
82 std::dynamic_pointer_cast<LocalReaderAdapter>(reader)
84 getReadersMap().erase(reader->getName());
86 "[plugin=%] Reader removed from readers list [reader=%]\n",
90 notifyReaders.push_back(readerName);
95 std::make_shared<PluginEventAdapter>(
96 getName(), notifyReaders, PluginEvent::Type::READER_DISCONNECTED));
100AutonomousObservableLocalPluginAdapter::addReader(
101 std::shared_ptr<ReaderSpi> readerSpi)
103 std::shared_ptr<LocalReaderAdapter> reader
104 = buildLocalReaderAdapter(readerSpi);
105 reader->doRegister();
106 getReadersMap().insert({reader->getName(), reader});
109 "[plugin=%] Reader added to readers list [reader=%]\n",
111 readerSpi->getName());