]> git.sesse.net Git - greproxy/blob - rsdecoder.h
Merge branch 'master' of /srv/git.sesse.net/www/greproxy
[greproxy] / rsdecoder.h
1 #ifndef _RSDECODER_H
2 #define _RSDECODER_H 1
3
4 #include <fecpp.h>
5 #include <stdint.h>
6
7 #include <map>
8
9 #include "reorderer.h"
10
11 class Sender;
12
13 class RSDecoder : public Sender {
14 public:
15         RSDecoder(Sender *sender);
16         virtual void send_packet(uint16_t proto, const std::string &data, uint32_t incoming_seq);
17
18         int get_recovered_packets() const { return num_recovered_packets; }
19
20 private:
21         struct RSGroup {
22                 std::map<int, GREPacket> packets;
23                 bool done;
24         };
25         Sender *sender;
26         std::map<int, RSGroup> rs_groups;
27         fecpp::fec_code rs;
28
29         int num_recovered_packets = 0;
30 };
31
32 #endif  /* !defined(_RSDECODER_H) */