29: mInformation(information), mSuccessful(true), mExceptionClass(typeid(nullptr)) {}
32 const std::string& information,
const std::type_info& exceptionClass)
33: mInformation(information),
34 mSuccessful(exceptionClass == typeid(nullptr)),
35 mExceptionClass(exceptionClass) {}
49 return mExceptionClass;
54const std::map<const int, const std::shared_ptr<StatusProperties>>
56 {0x9000, std::make_shared<StatusProperties>(
"Success")},
60: mCommandRef(commandRef), mName(commandRef.
getName()) {}
64 mName.append(
"-").append(subName);
65 mApduRequest->setInfo(mName);
80 mApduRequest = apduRequest;
81 mApduRequest->setInfo(mName);
90 const std::shared_ptr<ApduResponseApi> apduResponse)
92 mApduResponse = apduResponse;
102const std::map<const int, const std::shared_ptr<StatusProperties>>&
109 const std::type_info& exceptionClass,
110 const std::string& message,
112 const int statusWord)
const
114 (void)exceptionClass;
116 const auto sw = std::make_shared<int>(statusWord);
121const std::shared_ptr<StatusProperties> AbstractApduCommand::getStatusWordProperties()
const
123 const std::map<const int, const std::shared_ptr<StatusProperties>>& table =
getStatusTable();
125 const auto it =
getStatusTable().find(mApduResponse->getStatusWord());
127 return it != table.end() ? it->second :
nullptr;
132 const std::shared_ptr<StatusProperties> props = getStatusWordProperties();
134 return props !=
nullptr && props->isSuccessful();
139 const std::shared_ptr<StatusProperties> props = getStatusWordProperties();
140 if (props !=
nullptr && props->isSuccessful()) {
147 const std::type_info& exceptionClass = props !=
nullptr ? props->getExceptionClass()
151 const std::string message = props !=
nullptr ? props->getInformation() :
"Unknown status";
154 const int statusWord = mApduResponse->getStatusWord();
162 const std::shared_ptr<StatusProperties> props = getStatusWordProperties();
164 return props !=
nullptr ? props->getInformation() :
"";
StatusProperties(const std::string &information)
const std::string & getInformation() const
const std::type_info & getExceptionClass() const
bool isSuccessful() const
virtual const std::string & getName() const final
static const std::map< const int, const std::shared_ptr< StatusProperties > > STATUS_TABLE
virtual AbstractApduCommand & setApduResponse(const std::shared_ptr< ApduResponseApi > apduResponse)
virtual void addSubName(const std::string &subName) final
virtual const std::map< const int, const std::shared_ptr< StatusProperties > > & getStatusTable() const
virtual const std::string getStatusInformation() const final
virtual const std::shared_ptr< ApduResponseApi > getApduResponse() const final
virtual bool isSuccessful() const final
virtual const std::shared_ptr< ApduRequestAdapter > getApduRequest() const final
virtual const CardCommand & getCommandRef() const
virtual void setApduRequest(const std::shared_ptr< ApduRequestAdapter > apduRequest) final
virtual void checkStatus()
virtual const CalypsoApduCommandException buildCommandException(const std::type_info &exceptionClass, const std::string &message, const CardCommand &commandRef, const int statusWord) const
AbstractApduCommand(const CardCommand &commandRef)
AbstractApduCommand::StatusProperties StatusProperties