1#pragma once
2
3#include <deque>
4#include <framework/core/eventdispatcher.h>
5#include <framework/net/outputmessage.h>
6
7class PacketPlayer : public LuaObject {
8public:
9 PacketPlayer(const std::string& file);
10 virtual ~PacketPlayer();
11
12 void start(std::function<void(std::shared_ptr<std::vector<uint8_t>>)> recvCallback, std::function<void(boost::system::error_code)> disconnectCallback);
13 void stop();
14
15 void onOutputPacket(const OutputMessagePtr& packet);
16
17private:
18 void process();
19
20 ticks_t m_start;
21 ScheduledEventPtr m_event;
22 std::deque<std::pair<ticks_t, std::shared_ptr<std::vector<uint8_t>>>> m_input;
23 std::deque<std::pair<ticks_t, std::shared_ptr<std::vector<uint8_t>>>> m_output;
24 std::function<void(std::shared_ptr<std::vector<uint8_t>>)> m_recvCallback;
25 std::function<void(boost::system::error_code)> m_disconnectCallback;
26};
27