aboutsummaryrefslogtreecommitdiff
path: root/include/LibraryException.h
diff options
context:
space:
mode:
authorSzczepan Zalega <szczepan@nitrokey.com>2016-08-09 17:42:12 +0200
committerSzczepan Zalega <szczepan@nitrokey.com>2016-08-09 18:35:38 +0200
commit709b3e4c3a7aac2565687579bff62601b141362f (patch)
tree2fef4f162e975ce8ed314c312009b0dd69e7a1b4 /include/LibraryException.h
parentde47911eea52421c3a8307e7d9a390a4c9f710b2 (diff)
downloadlibnitrokey-a1a6414000583e3adabb0e69a10330963909a86a.tar.gz
libnitrokey-a1a6414000583e3adabb0e69a10330963909a86a.tar.bz2
Merged library exceptions declarationv1.0
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
Diffstat (limited to 'include/LibraryException.h')
-rw-r--r--include/LibraryException.h45
1 files changed, 41 insertions, 4 deletions
diff --git a/include/LibraryException.h b/include/LibraryException.h
index ef81624..5036320 100644
--- a/include/LibraryException.h
+++ b/include/LibraryException.h
@@ -1,12 +1,9 @@
-//
-// Created by sz on 09.08.16.
-//
-
#ifndef LIBNITROKEY_LIBRARYEXCEPTION_H
#define LIBNITROKEY_LIBRARYEXCEPTION_H
#include <exception>
#include <cstdint>
+#include <string>
class LibraryException: std::exception {
public:
@@ -14,4 +11,44 @@ public:
};
+
+class InvalidSlotException : public LibraryException {
+public:
+ virtual uint8_t exception_id() override {
+ return 201;
+ }
+
+public:
+ uint8_t slot_selected;
+
+ InvalidSlotException(uint8_t slot_selected) : slot_selected(slot_selected) {}
+
+ virtual const char *what() const throw() override {
+ return "Wrong slot selected";
+ }
+
+};
+
+
+
+class TooLongStringException : public LibraryException {
+public:
+ virtual uint8_t exception_id() override {
+ return 200;
+ }
+
+ std::size_t size_source;
+ std::size_t size_destination;
+ std::string message;
+
+ TooLongStringException(size_t size_source, size_t size_destination, const std::string &message = "") : size_source(
+ size_source), size_destination(size_destination), message(message) {}
+
+ virtual const char *what() const throw() override {
+ //TODO add sizes and message data to final message
+ return "Too long string has been supplied as an argument";
+ }
+
+};
+
#endif //LIBNITROKEY_LIBRARYEXCEPTION_H