14#include "keyple/core/service/CardRemovalActiveMonitoringJobAdapter.hpp"
19#include "keyple/core/plugin/ReaderIOException.hpp"
20#include "keyple/core/plugin/TaskCanceledException.hpp"
21#include "keyple/core/service/ObservableLocalReaderAdapter.hpp"
22#include "keyple/core/util/cpp/Thread.hpp"
23#include "keyple/core/util/cpp/exception/InterruptedException.hpp"
24#include "keyple/core/util/cpp/exception/RuntimeException.hpp"
31using keyple::core::util::cpp::exception::InterruptedException;
32using keyple::core::util::cpp::exception::RuntimeException;
34const std::string CardRemovalActiveMonitoringJobAdapter::JOB_ID
40CardRemovalActiveMonitoringJobAdapter::CardRemovalActiveMonitoringJob ::
41 CardRemovalActiveMonitoringJob(
42 std::shared_ptr<AbstractObservableStateAdapter> monitoringState,
43 CardRemovalActiveMonitoringJobAdapter* parent)
44: Job(
"CardRemovalActiveMonitoringJobAdapter")
45, mMonitoringState(monitoringState)
51CardRemovalActiveMonitoringJobAdapter::CardRemovalActiveMonitoringJob::execute()
54 mParent->mLogger->trace(
55 "[fsmJob=%, reader=%] Starting monitoring job process "
56 "[mode=Polling using 'isCardPresentPing()']\n",
58 mParent->getReader()->getName());
61 mParent->mLoop =
true;
69 while (mParent->mLoop && !isCancelled()) {
70 if (!mParent->getReader()->isCardPresentPing()) {
71 mParent->mLogger->trace(
72 "[fsmJob=%, reader=%] Card stop responding\n",
74 mParent->getReader()->getName());
80 Thread::sleep(mParent->mSleepDurationMillis);
81 }
catch (
const InterruptedException& ignored) {
85 mParent->mLoop =
false;
89 mParent->mLogger->trace(
90 "[fsmJob=%, reader=%] Monitoring job polling process stopped\n",
92 mParent->getReader()->getName());
94 }
catch (
const RuntimeException& e) {
96 ->getObservationExceptionHandler()
97 ->onReaderObservationError(
98 mParent->getReader()->getPluginName(),
99 mParent->getReader()->getName(),
100 std::make_shared<RuntimeException>(e));
104 mMonitoringState->onEvent(InternalEvent::CARD_REMOVED);
110CardRemovalActiveMonitoringJobAdapter::CardRemovalActiveMonitoringJobAdapter(
111 ObservableLocalReaderAdapter* reader,
const int64_t sleepDurationMillis)
112: AbstractMonitoringJobAdapter(reader)
114 std::dynamic_pointer_cast<WaitForCardRemovalBlockingSpi>(
115 reader->getObservableReaderSpi()))
116, mSleepDurationMillis(sleepDurationMillis)
121CardRemovalActiveMonitoringJobAdapter::getMonitoringJob(
122 std::shared_ptr<AbstractObservableStateAdapter> monitoringState)
124 return std::make_shared<CardRemovalActiveMonitoringJob>(
125 monitoringState,
this);
129CardRemovalActiveMonitoringJobAdapter::stop()
ObservableLocalReaderAdapter::InternalEvent InternalEvent