14#include "keyple/plugin/pcsc/PcscPluginFactoryBuilder.hpp"
16#include "keyple/core/util/KeypleAssert.hpp"
17#include "keyple/core/util/cpp/Pattern.hpp"
18#include "keyple/core/util/cpp/exception/Exception.hpp"
19#include "keyple/core/util/cpp/exception/IllegalArgumentException.hpp"
20#include "keyple/plugin/pcsc/PcscPluginFactoryAdapter.hpp"
26using keyple::core::util::Assert;
27using keyple::core::util::cpp::Pattern;
28using keyple::core::util::cpp::exception::Exception;
29using keyple::core::util::cpp::exception::IllegalArgumentException;
33const std::string Builder::DEFAULT_CONTACTLESS_READER_FILTER
34 =
".*(contactless|ask logo|acs acr122).*";
39: mContactlessReaderIdentificationFilterPattern(
40 Pattern::compile(
Builder::DEFAULT_CONTACTLESS_READER_FILTER))
41, mCardMonitoringCycleDuration(500)
46Builder::useContactReaderIdentificationFilter(
53Builder::useContactlessReaderIdentificationFilter(
54 const std::string& contactlessReaderIdentificationFilter)
56 Assert::getInstance().notEmpty(
57 contactlessReaderIdentificationFilter,
58 "contactlessReaderIdentificationFilter");
61 mContactlessReaderIdentificationFilterPattern
62 = Pattern::compile(contactlessReaderIdentificationFilter);
64 }
catch (
const Exception& e) {
65 throw IllegalArgumentException(
66 "Bad regular expression.", e);
73Builder::updateProtocolIdentificationRule(
74 const std::string& readerProtocolName,
const std::string& protocolRule)
76 Assert::getInstance().notEmpty(readerProtocolName,
"readerProtocolName");
78 if (protocolRule ==
"") {
80 mProtocolRulesMap.insert({readerProtocolName,
"X"});
83 mProtocolRulesMap.insert({readerProtocolName, protocolRule});
90Builder::setCardMonitoringCycleDuration(
const int cycleDuration)
92 Assert::getInstance().greaterOrEqual(cycleDuration, 1,
"cycleDuration");
94 mCardMonitoringCycleDuration = cycleDuration;
99std::shared_ptr<PcscPluginFactory>
100PcscPluginFactoryBuilder::Builder::build()
102 return std::make_shared<PcscPluginFactoryAdapter>(
103 mContactlessReaderIdentificationFilterPattern,
105 mCardMonitoringCycleDuration);
111std::unique_ptr<Builder>
112PcscPluginFactoryBuilder::builder()
114 return std::unique_ptr<Builder>(
new Builder());
PcscPluginFactoryBuilder::Builder Builder