mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
TON Storage utilities (#564)
* Rename chunk to piece in MerkleTree for consistency * Refactor PeerManager * Make PeerState thread-safe * Download torrent by hash * First version of storage daemon * Download torrents partially * Improve storing and loading torrent state in DB * Rewrite MerkleTree * "Remove torrent" in storage daemon * Process errors, fix bugs in storage * Move TonlibClientWrapper from rldp-http-proxy to tonlib * Initial version of storage provider * Move interaction with contracts to smc-util * Improve TonlibClientWrapper interface * Various improvements in storage provider * Fix TorrentCreator.cpp * Improve interface for partial download * Client mode in storage-daemon * Improve interface of storage-daemon-cli * Fix calculating speed, show peers in storage-daemon * Use permanent adnl id in storage daemon * Fix sending large "storage.addUpdate" messages * Improve printing torrents in cli * Update tlo * Fix RldpSender::on_ack * Update storage provider * Add "address" parameter to get-provider-params * Allow client to close storage contract * Limit torrent description * Add more logs to storage provider * smc.forget tonlib method * Use smc.forget in storage daemon * Optimize sending messages in smc-util.cpp * Fix verbosity, remove excessive logs * Json output in storage-daemon-cli * Update storage provider contracts * Fix rldp2 acks * Change verbosity of logs in rldp2 * Update help and output of commands and in storage-daemon-cli Co-authored-by: SpyCheese <mikle98@yandex.ru>
This commit is contained in:
parent
434dc487a4
commit
360ef54e6b
75 changed files with 8872 additions and 1148 deletions
|
@ -21,6 +21,7 @@
|
|||
|
||||
#include "td/utils/Slice.h"
|
||||
#include "td/utils/buffer.h"
|
||||
#include "td/utils/Status.h"
|
||||
|
||||
namespace ton {
|
||||
// fec_info_none#c82a1964 = FecInfo;
|
||||
|
@ -37,6 +38,13 @@ namespace ton {
|
|||
// names:(file_names_size * [uint8])
|
||||
// data:(tot_data_size * [uint8])
|
||||
// = TorrentHeader;
|
||||
//
|
||||
// Filename rules:
|
||||
// 1) Name can't be empty
|
||||
// 2) Names in a torrent should be unique
|
||||
// 3) Name can't start or end with '/' or contain two consequitive '/'
|
||||
// 4) Components of name can't be equal to "." or ".."
|
||||
// 5) If there's a name aaa/bbb/ccc, no other name can start with aaa/bbb/ccc/
|
||||
|
||||
struct TorrentHeader {
|
||||
td::uint32 files_count{0};
|
||||
|
@ -64,5 +72,7 @@ struct TorrentHeader {
|
|||
void store(StorerT &storer) const;
|
||||
template <class ParserT>
|
||||
void parse(ParserT &parser);
|
||||
|
||||
td::Status validate(td::uint64 total_size, td::uint64 header_size) const;
|
||||
};
|
||||
} // namespace ton
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue