PacketQueue.cpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include <PacketQueue.h>
  2. PacketQueue::PacketQueue()
  3. : droppedPackets(0)
  4. { }
  5. void PacketQueue::push(const uint8_t* packet, const MiLightRemoteConfig* remoteConfig, const size_t repeatsOverride) {
  6. std::shared_ptr<QueuedPacket> qp = checkoutPacket();
  7. memcpy(qp->packet, packet, remoteConfig->packetFormatter->getPacketLength());
  8. qp->remoteConfig = remoteConfig;
  9. qp->repeatsOverride = repeatsOverride;
  10. }
  11. bool PacketQueue::isEmpty() const {
  12. return queue.size() == 0;
  13. }
  14. size_t PacketQueue::getDroppedPacketCount() const {
  15. return droppedPackets;
  16. }
  17. std::shared_ptr<QueuedPacket> PacketQueue::pop() {
  18. return queue.shift();
  19. }
  20. std::shared_ptr<QueuedPacket> PacketQueue::checkoutPacket() {
  21. if (queue.size() == MILIGHT_MAX_QUEUED_PACKETS) {
  22. ++droppedPackets;
  23. return queue.getLast();
  24. } else {
  25. std::shared_ptr<QueuedPacket> packet = std::make_shared<QueuedPacket>();
  26. queue.add(packet);
  27. return packet;
  28. }
  29. }
  30. void PacketQueue::checkinPacket(std::shared_ptr<QueuedPacket> packet) {
  31. }
  32. size_t PacketQueue::size() const {
  33. return queue.size();
  34. }