tox_ngc_ft1_tool/src/states/state_send_start_sha1.hpp

44 lines
1.9 KiB
C++
Raw Normal View History

2023-01-14 23:18:10 +01:00
#pragma once
#include "../state.hpp"
#include "../command_line.hpp"
2023-01-15 01:44:48 +01:00
#include "../ft_sha1_info.hpp"
2023-01-14 23:18:10 +01:00
2023-01-15 01:44:48 +01:00
#include <mio/mio.hpp>
namespace States {
2023-01-14 23:18:10 +01:00
// we are hashing the given file
// does not react to any ft events
2023-01-15 01:44:48 +01:00
struct SendStartSHA1 final : public StateI {
2023-01-14 23:18:10 +01:00
public: // general interface
2023-01-15 01:44:48 +01:00
SendStartSHA1(ToxClient& tcl, const CommandLine& cl);
~SendStartSHA1(void) override = default;
2023-01-14 23:18:10 +01:00
bool iterate(void) override;
std::unique_ptr<StateI> nextState(void) override;
public: // callbacks
// sha1_info
void onFT1ReceiveRequestSHA1Info(uint32_t group_number, uint32_t peer_number, const uint8_t* file_id, size_t file_id_size) override;
bool onFT1ReceiveInitSHA1Info(uint32_t group_number, uint32_t peer_number, const uint8_t* file_id, size_t file_id_size, const uint8_t transfer_id, const size_t file_size) override;
void onFT1ReceiveDataSHA1Info(uint32_t group_number, uint32_t peer_number, uint8_t transfer_id, size_t data_offset, const uint8_t* data, size_t data_size) override;
void onFT1SendDataSHA1Info(uint32_t group_number, uint32_t peer_number, uint8_t transfer_id, size_t data_offset, uint8_t* data, size_t data_size) override;
// sha1_chunk
void onFT1ReceiveRequestSHA1Chunk(uint32_t group_number, uint32_t peer_number, const uint8_t* file_id, size_t file_id_size) override;
bool onFT1ReceiveInitSHA1Chunk(uint32_t group_number, uint32_t peer_number, const uint8_t* file_id, size_t file_id_size, const uint8_t transfer_id, const size_t file_size) override;
void onFT1ReceiveDataSHA1Chunk(uint32_t group_number, uint32_t peer_number, uint8_t transfer_id, size_t data_offset, const uint8_t* data, size_t data_size) override;
void onFT1SendDataSHA1Chunk(uint32_t group_number, uint32_t peer_number, uint8_t transfer_id, size_t data_offset, uint8_t* data, size_t data_size) override;
2023-01-15 01:44:48 +01:00
private:
mio::mmap_source _file_map;
FTInfoSHA1 _sha1_info;
std::vector<uint8_t> _sha1_info_data;
std::vector<uint8_t> _sha1_info_hash;
2023-01-14 23:18:10 +01:00
};
2023-01-15 01:44:48 +01:00
} // States
2023-01-14 23:18:10 +01:00