diff --git a/lib/Epub/Epub/parsers/ContentOpfParser.cpp b/lib/Epub/Epub/parsers/ContentOpfParser.cpp index 963d4fd0..0cecc1d5 100644 --- a/lib/Epub/Epub/parsers/ContentOpfParser.cpp +++ b/lib/Epub/Epub/parsers/ContentOpfParser.cpp @@ -128,6 +128,9 @@ size_t ContentOpfParser::write(const uint8_t data) { return write(&data, 1); } size_t ContentOpfParser::write(const uint8_t* buffer, const size_t size) { if (!parser) return 0; + stats.writeCalls++; + stats.bytesParsed += size; + const uint8_t* currentBufferPos = buffer; auto remainingInBuffer = size; diff --git a/lib/Epub/Epub/parsers/ContentOpfParser.h b/lib/Epub/Epub/parsers/ContentOpfParser.h index f7ae5430..9ff76917 100644 --- a/lib/Epub/Epub/parsers/ContentOpfParser.h +++ b/lib/Epub/Epub/parsers/ContentOpfParser.h @@ -61,6 +61,18 @@ class ContentOpfParser final : public Print { static void endElement(void* userData, const XML_Char* name); public: + struct Stats { + uint32_t writeCalls = 0; + uint32_t bytesParsed = 0; + uint32_t parseBufferMs = 0; + uint32_t manifestOpenMs = 0; + uint32_t spineOpenMs = 0; + uint32_t guideOpenMs = 0; + uint32_t itemRefCount = 0; + uint32_t itemRefLookupMs = 0; + uint32_t createSpineEntryMs = 0; + } stats; + std::string title; std::string author; std::string language;