events.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #include "Crown.h"
  2. #include "EventBuffer.h"
  3. using namespace crown;
  4. //-----------------------------------------------------------------------------
  5. struct TestEvent
  6. {
  7. uint32_t a;
  8. uint32_t b;
  9. uint32_t c;
  10. };
  11. //-----------------------------------------------------------------------------
  12. void fill_events(EventBuffer& event_buffer, uint32_t num)
  13. {
  14. TestEvent event;
  15. event.a = 1;
  16. event.b = 2;
  17. event.c = 3;
  18. for (uint32_t i = 0; i < num; i++)
  19. {
  20. event_buffer.push_event(0, &event, sizeof(TestEvent));
  21. }
  22. uint32_t size = num * (sizeof(TestEvent) + sizeof(uint32_t) + sizeof(size_t));
  23. CE_ASSERT(event_buffer.size() == size, "Something ha gone wrong, size is %d, should be %d", event_buffer.size(), size);
  24. }
  25. void get_events(EventBuffer& event_buffer, uint32_t num)
  26. {
  27. TestEvent* result;
  28. uint32_t type = 0;
  29. size_t size = 0;
  30. uint32_t count = 0;
  31. for (uint32_t i = 0; i < num; i++)
  32. {
  33. result = (TestEvent*)event_buffer.get_next_event(type, size);
  34. if (result)
  35. {
  36. count++;
  37. }
  38. Log::i("count: %d", count);
  39. }
  40. CE_ASSERT(count == num, "Something ha gone wrong, count: %d, num: %d", count, num);
  41. }
  42. void get_event_until_end(EventBuffer& event_buffer)
  43. {
  44. TestEvent* result;
  45. uint32_t type = 0;
  46. size_t size = 0;
  47. int32_t count = 0;
  48. while ((result = (TestEvent*)event_buffer.get_next_event(type, size)) != NULL)
  49. {
  50. count++;
  51. }
  52. Log::i("count: %d", count);
  53. }
  54. //-----------------------------------------------------------------------------
  55. int main()
  56. {
  57. EventBuffer event_buffer;
  58. fill_events(event_buffer, 10);
  59. get_events(event_buffer, 10);
  60. event_buffer.clear();
  61. fill_events(event_buffer, 5);
  62. get_events(event_buffer, 5);
  63. event_buffer.clear();
  64. fill_events(event_buffer, 30);
  65. get_event_until_end(event_buffer);
  66. return 0;
  67. }