| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #include "EventBuffer.h"
- #include "Log.h"
- namespace crown
- {
- //-----------------------------------------------------------------------------
- EventBuffer::EventBuffer() : m_size(0), m_read(0)
- {
- }
- //-----------------------------------------------------------------------------
- void EventBuffer::push_event(uint32_t event_type, void* event_data, size_t event_size)
- {
- if (m_size + sizeof(event_type) + sizeof(event_size) + event_size > MAX_OS_EVENT_BUFFER_SIZE)
- {
- flush();
- }
- char* cur = m_buffer + m_size;
- *(uint32_t*) cur = event_type;
- *(size_t*) (cur + sizeof(event_type)) = event_size;
- memcpy(cur + sizeof(event_type) + sizeof(event_size), event_data, event_size);
- m_size += sizeof(event_type) + sizeof(event_size) + event_size;
- }
- //-----------------------------------------------------------------------------
- void EventBuffer::push_event_buffer(char* event_buffer, size_t buffer_size)
- {
- if (m_size + buffer_size > MAX_OS_EVENT_BUFFER_SIZE)
- {
- flush();
- }
- char* cur = m_buffer + m_size;
- memcpy(cur, event_buffer, buffer_size);
- m_size += buffer_size;
- }
- //-----------------------------------------------------------------------------
- void* EventBuffer::get_next_event(uint32_t& event_type, size_t& event_size)
- {
- if (m_read < m_size)
- {
- char* cur = m_buffer + m_read;
- // Saves type
- event_type = *(uint32_t*) cur;
- // Saves size
- event_size = *(size_t*)(cur + sizeof(uint32_t));
- // Set read to next event
- m_read += sizeof(size_t) + sizeof(uint32_t) + event_size;
- return cur + sizeof(size_t) + sizeof(uint32_t);
- }
- m_read = 0;
- return NULL;
- }
- //-----------------------------------------------------------------------------
- void EventBuffer::clear()
- {
- m_size = 0;
- m_read = 0;
- }
- //-----------------------------------------------------------------------------
- void EventBuffer::flush()
- {
- m_size = 0;
- m_read = 0;
- }
- //-----------------------------------------------------------------------------
- size_t EventBuffer::size() const
- {
- return m_size;
- }
- //-----------------------------------------------------------------------------
- char* EventBuffer::buffer()
- {
- return m_buffer;
- }
- } // namespace crown
|