blob: 6bad36bc5a701864b5a7546108184bdd9698ed7f [file] [log] [blame]
#ifndef UTIL_STREAM_CONFIG_H
#define UTIL_STREAM_CONFIG_H
#include <cstddef>
#include <string>
namespace util { namespace stream {
/**
* Represents how a chain should be configured.
*/
struct ChainConfig {
/** Constructs an configuration with underspecified (or default) parameters. */
ChainConfig() {}
/**
* Constructs a chain configuration object.
*
* @param [in] in_entry_size Number of bytes in each record.
* @param [in] in_block_count Number of blocks in the chain.
* @param [in] in_total_memory Total number of bytes available to the chain.
* This value will be divided amongst the blocks in the chain.
*/
ChainConfig(std::size_t in_entry_size, std::size_t in_block_count, std::size_t in_total_memory)
: entry_size(in_entry_size), block_count(in_block_count), total_memory(in_total_memory) {}
/**
* Number of bytes in each record.
*/
std::size_t entry_size;
/**
* Number of blocks in the chain.
*/
std::size_t block_count;
/**
* Total number of bytes available to the chain.
* This value will be divided amongst the blocks in the chain.
* Chain's constructor will make this a multiple of entry_size.
*/
std::size_t total_memory;
};
/**
* Represents how a sorter should be configured.
*/
struct SortConfig {
/** Filename prefix where temporary files should be placed. */
std::string temp_prefix;
/** Size of each input/output buffer. */
std::size_t buffer_size;
/** Total memory to use when running alone. */
std::size_t total_memory;
};
}} // namespaces
#endif // UTIL_STREAM_CONFIG_H