util/WdtFlags.cpp.inc (159 lines of code) (raw):
/**
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* This file is responsible for making flags.
* When STANDALONE_APP is not defined then all the flags are
* prefixed with wdt_.
* The default values for the flags are picked from the corresponding
* WdtOptions. Flags added here should exist as options in WdtOptions.h
* There are multiple checks which check if the flags are defined or not,
* and undefine/redefine them. This is because this file can be
* included multiple times for e.g. WdtFlags.cpp included this file
* the first time through WdtFlags.h and second time in the method
* initializeFromFlags()
*/
#include <wdt/util/WdtFlagsMacros.h>
WDT_OPT(start_port, int32, "Starting port number for wdt, if set, "
"implies static_ports");
WDT_OPT(num_ports, int32, "Number of sockets");
WDT_OPT(static_ports, bool, "Use static ports (start_port) or any free port");
WDT_OPT(ipv6, bool, "prefers ipv6");
WDT_OPT(ipv4, bool, "use ipv4 only, takes precedence over -ipv6");
WDT_OPT(dscp, int32, "specify DSCP flag for the sockets used in transfers");
WDT_OPT(ignore_open_errors, bool, "will continue despite open errors");
WDT_OPT(two_phases, bool, "do directory discovery first/separately");
WDT_OPT(follow_symlinks, bool,
"If true, follow symlinks and copy them as well");
WDT_OPT(skip_writes, bool, "Skip writes on the receiver side");
WDT_OPT(backlog, int32, "Accept backlog");
WDT_OPT(buffer_size, int32, "Buffer size (per thread/socket)");
WDT_OPT(max_retries, int32, "how many attempts to connect/listen");
WDT_OPT(max_transfer_retries, int32,
"Maximum number of times sender thread reconnects without making any "
"progress");
WDT_OPT(sleep_millis, int32, "how many ms to wait between attempts");
WDT_OPT(block_size_mbytes, double,
"Size of the blocks that files will be divided in, specify negative "
"to disable the file splitting mode");
WDT_OPT(avg_mbytes_per_sec, double,
"Target transfer rate in Mbytes/sec that should be "
"maintained, specify negative for unlimited");
WDT_OPT(max_mbytes_per_sec, double,
"Peak transfer rate in Mbytes/sec that should be "
"maintained, specify negative for unlimited and 0 for "
"auto configure. In auto configure mode peak rate will "
"be 1.2 times average rate");
WDT_OPT(throttler_bucket_limit, double,
"Limit of burst in Mbytes to control how "
"much data you can send at unlimited speed. Unless "
"you specify a peak rate of -1, wdt will either use "
"your burst limit (if not 0) or max burst possible at a time "
"will be 2 times the data allowed in "
"1/4th seconds at peak rate");
WDT_OPT(throttler_log_time_millis, int64,
"Peak throttler prints out logs for instantaneous "
"rate of transfer. Specify the time interval (ms) for "
"the measure of instance");
WDT_OPT(progress_report_interval_millis, int32,
"Interval(ms) between progress reports. If the value is 0, no "
"progress reporting is done");
WDT_OPT(full_reporting, bool,
"If true, transfer stats for successfully transferred files "
"are included in the report");
WDT_OPT(include_regex, string,
"Regular expression representing files to include for "
"transfer empty/default is to include all files in "
"directory. If exclude_regex is also specified, then files "
"matching exclude_regex are excluded.");
WDT_OPT(exclude_regex, string,
"Regular expression representing files to exclude for "
"transfer, empty/default is to not exclude any file.");
WDT_OPT(prune_dir_regex, string,
"Regular expression representing directories to exclude for "
"transfer, default/empty is to recurse in all directories");
WDT_OPT(accept_timeout_millis, int32,
"accept timeout for wdt receiver in milliseconds");
WDT_OPT(max_accept_retries, int32,
"max number of retries for accept call in receiver. First "
"connection from sender must come before max_accept_retries * "
"accept_timeout_ms milliseconds. 0 or negative means infinite retries");
WDT_OPT(accept_window_millis, int32,
"accept window size in milliseconds. For a session, after the "
"first connection is received, other connections must be "
"received within this duration");
WDT_OPT(read_timeout_millis, int32, "socket read timeout in milliseconds");
WDT_OPT(write_timeout_millis, int32, "socket write timeout in milliseconds");
WDT_OPT(connect_timeout_millis, int32,
"socket connect timeout in milliseconds");
WDT_OPT(abort_check_interval_millis, int32,
"Interval in ms between checking for abort during network i/o, a "
"negative value or 0 disables abort check");
WDT_OPT(disk_sync_interval_mb, double,
"Disk sync interval in mb. A negative value disables syncing");
WDT_OPT(throughput_update_interval_millis, int32,
"Intervals in millis after which progress reporter updates current"
" throughput");
WDT_OPT(enable_checksum, bool,
"If true, blocks are checksummed during transfer, redundant with gcm");
WDT_OPT(
enable_perf_stat_collection, bool,
"If true, perf stats are collected and reported at the end of transfer");
WDT_OPT(transfer_log_write_interval_ms, int32,
"Interval in milliseconds after which transfer log is written to disk."
" written to disk");
WDT_OPT(enable_transfer_log_compaction, bool,
"If true, transfer log will be compacted when a transfer session"
" finishes successfully");
WDT_OPT(enable_download_resumption, bool,
"If true, wdt supports download resumption for append-only files");
WDT_OPT(keep_transfer_log, bool,
"If true, transfer logs are not deleted at "
"the end of the transfer");
WDT_OPT(
disable_sender_verification_during_resumption, bool,
"If true, sender-ip is not verified with the ip in transfer log. This is "
"useful if files can be downloaded from different hosts");
WDT_OPT(global_sender_limit, int32,
"Max number of senders allowed globally. "
"A value of zero disables limits");
WDT_OPT(global_receiver_limit, int32,
"Max number of receivers allowed globally. "
"A value of zero disables limits");
WDT_OPT(namespace_sender_limit, int32,
"Max number of senders allowed per namespace. "
"A value of zero disables limits");
WDT_OPT(namespace_receiver_limit, int32,
"Max number of receivers allowed per namespace. "
"A value of zero disables limits");
#ifdef WDT_SUPPORTS_ODIRECT
WDT_OPT(odirect_reads, bool,
"Wdt can read files in O_DIRECT mode, set this flag to true"
" to make sender read all files in O_DIRECT");
#else
WDT_OPT(odirect_reads, bool,
"Ignored: Wdt can't handle O_DIRECT one or more of O_DIRECT, "
"posix_memalign, or F_NOCACHE was not found on this OS");
#endif
#ifdef HAS_POSIX_FALLOCATE
WDT_OPT(disable_preallocation, bool,
"If true, files are not pre-allocated using posix_fallocate");
#else
WDT_OPT(disable_preallocation, bool,
"Ignored: posix_fallocate does not exist in this system. So, files "
"won't be pre-allocated.");
#endif
WDT_OPT(resume_using_dir_tree, bool,
"If true, destination directory tree is trusted during resumption. So, "
"only the remaining portion of the files are transferred. This is only "
"supported if preallocation and block mode are disabled");
WDT_OPT(open_files_during_discovery, int32,
"If >0 up to that many files are opened when they are discovered."
"0 for none. -1 for trying to open all the files during discovery");
WDT_OPT(overwrite, bool, "Allow the receiver to overwrite existing files");
WDT_OPT(drain_extra_ms, int32,
"Extra time buffer to account for network when sender waits for "
"receiver to finish processing buffered data");
WDT_OPT(encryption_type, string,
"Encryption type to use. WDT currently "
"supports aes128ctr (fastest but no integrity check) and "
"aes128gcm (recommended, default). "
"A value of none disables encryption (fastest but insecure)");
WDT_OPT(encryption_tag_interval_bytes, int32,
"Encryption tag verification interval in bytes. A value of zero "
"disables incremental tag verification. In that case, tag only "
"gets verified at the end.");
WDT_OPT(send_buffer_size, int32,
"Send buffer size for sender sockets. If <= 0, buffer size is not set");
WDT_OPT(receive_buffer_size, int32,
"Receive buffer size for receiver sockets. If <= 0, buffer size is not "
"set");
WDT_OPT(
delete_extra_files, bool,
"If true, extra files on the receiver side is deleted during resumption");
WDT_OPT(skip_fadvise, bool, "If true, fadvise is skipped after block write");
WDT_OPT(fsync, bool,
"If true, each file is fsync'ed after its last block is received");
WDT_OPT(enable_heart_beat, bool,
"If true, periodic heart-beat from receiver to sender is enabled.");
WDT_OPT(iv_change_interval_mb, int32,
"Number of MBytes after which encryption iv is changed. A value of "
"0 disables iv change.");