void Put(const void * data, size_t size, bool last)
{
size_t dataSize = m_ptr - m_buffer;
- if (dataSize + size > sizeof(m_buffer))
+ while (dataSize + size > sizeof(m_buffer))
{
memcpy(m_ptr, data, sizeof(m_buffer) - dataSize); // Fill buffer
size -= sizeof(m_buffer) - dataSize; // Adjust size
m_proc(m_buffer, m_buffer, sizeof(m_buffer), &m_ctx); // Process
m_ok = m_ok && m_callback(m_buffer, sizeof(m_buffer), m_data); // Consume
m_ptr = m_buffer;
+ dataSize = 0;
}
if (!m_ok)
return;
m_tryConsume(last);
}
- bool isOk() const { return m_ok; }
+ bool IsOk() const { return m_ok; }
private:
char m_buffer[BUFFER_SIZE];
dataSize += 8;
remainder = 0;
}
- if (dataSize == 0)
+ if (!last && dataSize == 0) // Allow to call callback with 0 data on last call.
return;
m_proc(m_buffer, m_buffer, dataSize, &m_ctx);
m_ok = m_ok && m_callback(m_buffer, dataSize, m_data);
m_impl->Put(data, size, last);
}
-bool ENCRYPT_STREAM::isOk() const
+bool ENCRYPT_STREAM::IsOk() const
{
-return m_impl->isOk();
+return m_impl->IsOk();
}
DECRYPT_STREAM::DECRYPT_STREAM(const std::string & key, CALLBACK callback, void * data)
m_impl->Put(data, size, last);
}
-bool DECRYPT_STREAM::isOk() const
+bool DECRYPT_STREAM::IsOk() const
{
-return m_impl->isOk();
+return m_impl->IsOk();
}