Event.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /*
  2. * Author: Patrick-Christopher Mattulat
  3. * Company: Lynar Studios
  4. * E-Mail: webmaster@lynarstudios.com
  5. * Created: 2020-11-26
  6. * Changed: 2021-05-01
  7. *
  8. * */
  9. #include <ls_std/event/Event.hpp>
  10. #include <ls_std/exception/IllegalArgumentException.hpp>
  11. ls_std::Event::Event(const ls_std::event_id &_id) : ls_std::Class("Event")
  12. {
  13. this->_assignId(_id);
  14. }
  15. ls_std::byte_field ls_std::Event::marshal()
  16. {
  17. ls_std::byte_field data{};
  18. if (this->serializable != nullptr)
  19. {
  20. data = this->serializable->marshal();
  21. }
  22. return data;
  23. }
  24. void ls_std::Event::unmarshal(const ls_std::byte_field &_data)
  25. {
  26. if (this->serializable != nullptr)
  27. {
  28. this->serializable->unmarshal(_data);
  29. }
  30. }
  31. void ls_std::Event::addParameter(const ls_std::event_parameter &_eventParameter)
  32. {
  33. if (!this->_hasParameter(_eventParameter.first))
  34. {
  35. this->parameterList.insert(_eventParameter);
  36. }
  37. }
  38. void ls_std::Event::clearParameterList()
  39. {
  40. this->parameterList.clear();
  41. }
  42. ls_std::event_id ls_std::Event::getId()
  43. {
  44. return this->id;
  45. }
  46. ls_std::event_parameter_list ls_std::Event::getParameterList()
  47. {
  48. return this->parameterList;
  49. }
  50. void ls_std::Event::removeParameter(const ls_std::event_parameter_id &_id)
  51. {
  52. if (this->_hasParameter(_id))
  53. {
  54. this->parameterList.erase(_id);
  55. }
  56. }
  57. void ls_std::Event::setId(const ls_std::event_id &_id)
  58. {
  59. this->_assignId(_id);
  60. }
  61. void ls_std::Event::_assignId(const ls_std::event_id &_id)
  62. {
  63. if (_id.empty())
  64. {
  65. throw ls_std::IllegalArgumentException{};
  66. }
  67. this->id = _id;
  68. }
  69. bool ls_std::Event::_hasParameter(const ls_std::event_id &_id)
  70. {
  71. return this->parameterList.find(_id) != this->parameterList.end();
  72. }
  73. void ls_std::Event::setSerializable(std::shared_ptr<ls_std::ISerializable> _serializable)
  74. {
  75. this->serializable = std::move(_serializable);
  76. }