14#include "keyple/core/service/CardInsertionActiveMonitoringJobAdapter.hpp"
18#include "keyple/core/util/cpp/exception/InterruptedException.hpp"
19#include "keyple/core/util/cpp/exception/RuntimeException.hpp"
25using keyple::core::util::cpp::exception::InterruptedException;
26using keyple::core::util::cpp::exception::RuntimeException;
33CardInsertionActiveMonitoringJobAdapter::CardInsertionActiveMonitoringJob ::
34 CardInsertionActiveMonitoringJob(
35 std::shared_ptr<AbstractObservableStateAdapter> monitoringState,
36 CardInsertionActiveMonitoringJobAdapter* parent)
37: Job(
"CardInsertionActiveMonitoringJobAdapter - " + parent->mReader->getName())
38, mMonitoringState(monitoringState)
44CardInsertionActiveMonitoringJobAdapter::CardInsertionActiveMonitoringJob::
48 mParent->mLogger->trace(
49 "Start monitoring job polling process using 'isCardPresent()' "
50 "method on reader [%]\n",
51 mParent->mReader->getName());
54 mParent->mLoop =
true;
56 while (mParent->mLoop) {
58 if (mParent->mMonitorInsertion
59 && mParent->mReader->isCardPresent()) {
60 mParent->mLogger->trace(
"Card present\n");
61 mMonitoringState->onEvent(InternalEvent::CARD_INSERTED);
66 if (!mParent->mMonitorInsertion
67 && !mParent->mReader->isCardPresent()) {
68 mParent->mLogger->trace(
"Card not present\n");
69 mParent->mLoop =
false;
70 mMonitoringState->onEvent(InternalEvent::CARD_REMOVED);
76 Thread::sleep(mParent->mSleepDurationMillis);
77 }
catch (
const InterruptedException& ignored) {
81 mParent->mLoop =
false;
84 mParent->mLogger->trace(
"Monitoring job polling process stopped");
86 }
catch (
const RuntimeException& e) {
87 dynamic_cast<ObservableLocalReaderAdapter*
>(mParent->mReader)
88 ->getObservationExceptionHandler()
89 ->onReaderObservationError(
90 dynamic_cast<ObservableLocalReaderAdapter*
>(mParent->mReader)
92 mParent->mReader->getName(),
93 std::make_shared<RuntimeException>(e));
100CardInsertionActiveMonitoringJobAdapter::
101 CardInsertionActiveMonitoringJobAdapter(
102 ObservableLocalReaderAdapter* reader,
103 const int64_t sleepDurationMillis,
104 const bool monitorInsertion)
105: AbstractMonitoringJobAdapter(reader)
106, mSleepDurationMillis(sleepDurationMillis)
107, mMonitorInsertion(monitorInsertion)
113CardInsertionActiveMonitoringJobAdapter::getMonitoringJob(
114 const std::shared_ptr<AbstractObservableStateAdapter> monitoringState)
116 return std::make_shared<CardInsertionActiveMonitoringJob>(
117 monitoringState,
this);
121CardInsertionActiveMonitoringJobAdapter::stop()
ObservableLocalReaderAdapter::InternalEvent InternalEvent