diff options
Diffstat (limited to 'src/reader.h')
-rw-r--r-- | src/reader.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/reader.h b/src/reader.h new file mode 100644 index 0000000..fb65833 --- /dev/null +++ b/src/reader.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2017-2024 OARC, Inc. + * Copyright (c) 2011-2017, IIS - The Internet Foundation in Sweden + * All rights reserved. + * + * This file is part of PacketQ. + * + * PacketQ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * PacketQ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with PacketQ. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef __packetq_reader_h +#define __packetq_reader_h + +#include <memory> +#include <stdio.h> +#include <vector> + +#include "pcap.h" +#include "sql.h" + +namespace packetq { + +class Packet_handler; + +// reading packet rows out of a list of files +class Reader { +public: + Reader(std::vector<std::string> filenames, int max_packets) + : packets_read(0) + { + this->filenames = filenames; + this->currently_reading = filenames.end(); + this->max_packets = max_packets; + } + + void seek_to_start(); + + bool done(); + bool read_next(Packet_handler* handler, const std::vector<int>& columns, Row& destination_row, int skip_packets); + +private: + std::vector<std::string>::iterator currently_reading; + + std::vector<std::string> filenames; + int max_packets, packets_read; + std::unique_ptr<Pcap_file> pcap; +}; + +} // namespace packetq + +#endif // __packetq_reader_h |