| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include "EventBuffer.h"
- #include "Log.h"
- namespace crown
- {
- //-----------------------------------------------------------------------------
- EventBuffer::EventBuffer() : m_size(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();
- }
- Log::i("m_size: %d", m_size);
- 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;
- Log::i("event type: %d", event_type);
- Log::i("event size: %d", 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)
- {
- static size_t read = 0;
- if (read < m_size)
- {
- char* cur = m_buffer + read;
- // Saves type
- event_type = *(uint32_t*) cur;
- // Saves size
- event_size = *(size_t*)(cur + sizeof(uint32_t));
- // Set read to next event
- read += sizeof(size_t) + sizeof(uint32_t) + event_size;
- return cur + sizeof(size_t) + sizeof(uint32_t);
- }
- read = 0;
- return NULL;
- }
- //-----------------------------------------------------------------------------
- void EventBuffer::clear()
- {
- m_size = 0;
- }
- //-----------------------------------------------------------------------------
- void EventBuffer::flush()
- {
- m_size = 0;
- }
- //-----------------------------------------------------------------------------
- size_t EventBuffer::size() const
- {
- return m_size;
- }
- //-----------------------------------------------------------------------------
- char* EventBuffer::buffer()
- {
- return m_buffer;
- }
- } // namespace crown
|