14#include "keyple/core/service/CardInsertionActiveMonitoringJobAdapter.hpp"
19#include "keyple/core/util/cpp/exception/InterruptedException.hpp"
20#include "keyple/core/util/cpp/exception/RuntimeException.hpp"
26using keyple::core::util::cpp::exception::InterruptedException;
27using keyple::core::util::cpp::exception::RuntimeException;
31const std::string CardInsertionActiveMonitoringJobAdapter::JOB_ID
37CardInsertionActiveMonitoringJobAdapter::CardInsertionActiveMonitoringJob ::
38 CardInsertionActiveMonitoringJob(
39 std::shared_ptr<AbstractObservableStateAdapter> monitoringState,
40 CardInsertionActiveMonitoringJobAdapter* parent)
41: Job(
"CardInsertionActiveMonitoringJobAdapter - " + parent->mReader->getName())
42, mMonitoringState(monitoringState)
48CardInsertionActiveMonitoringJobAdapter::CardInsertionActiveMonitoringJob::
52 mParent->mLogger->trace(
53 "[fsmJob=%, reader=%] Starting monitoring job process "
54 "[mode=Polling using 'isCardPresent()']\n",
56 mParent->mReader->getName());
59 mParent->mLoop =
true;
69 while (mParent->mLoop && !isCancelled()) {
71 if (mParent->mMonitorInsertion
72 && mParent->mReader->isCardPresent()) {
73 mParent->mLogger->trace(
74 "[fsmJob=%, reader=%] Card present\n",
76 mParent->mReader->getName());
77 mMonitoringState->onEvent(InternalEvent::CARD_INSERTED);
82 if (!mParent->mMonitorInsertion
83 && !mParent->mReader->isCardPresent()) {
84 mParent->mLogger->trace(
85 "[fsmJob=%, reader=%] Card not present\n",
87 mParent->mReader->getName());
88 mParent->mLoop =
false;
89 mMonitoringState->onEvent(InternalEvent::CARD_REMOVED);
95 Thread::sleep(mParent->mSleepDurationMillis);
96 }
catch (
const InterruptedException& ignored) {
100 mParent->mLoop =
false;
103 mParent->mLogger->trace(
104 "[fsmJob=%, reader=%] Monitoring job polling process stopped\n",
106 mParent->mReader->getName());
108 }
catch (
const RuntimeException& e) {
109 dynamic_cast<ObservableLocalReaderAdapter*
>(mParent->mReader)
110 ->getObservationExceptionHandler()
111 ->onReaderObservationError(
112 dynamic_cast<ObservableLocalReaderAdapter*
>(mParent->mReader)
114 mParent->mReader->getName(),
115 std::make_shared<RuntimeException>(e));
122CardInsertionActiveMonitoringJobAdapter::
123 CardInsertionActiveMonitoringJobAdapter(
124 ObservableLocalReaderAdapter* reader,
125 const int64_t sleepDurationMillis,
126 const bool monitorInsertion)
127: AbstractMonitoringJobAdapter(reader)
128, mSleepDurationMillis(sleepDurationMillis)
129, mMonitorInsertion(monitorInsertion)
135CardInsertionActiveMonitoringJobAdapter::getMonitoringJob(
136 const std::shared_ptr<AbstractObservableStateAdapter> monitoringState)
138 return std::make_shared<CardInsertionActiveMonitoringJob>(
139 monitoringState,
this);
143CardInsertionActiveMonitoringJobAdapter::stop()
ObservableLocalReaderAdapter::InternalEvent InternalEvent