/*
 * Copyright 2020 Google LLC
 *
 * Use of this source code is governed by a BSD-style
 * license that can be found in the LICENSE file or at
 * https://developers.google.com/open-source/licenses/bsd
 */

#ifndef STACK_H
#define STACK_H

#include "system.h"
#include "reftable-stack.h"

struct reftable_stack {
	struct stat list_st;
	char *list_file;
	int list_fd;

	/*
	 * Set while an addition holds the stack locked. Used by
	 * stack_uptodate() to skip reload checks while locked.
	 */
	struct reftable_flock list_lock;

	char *reftable_dir;

	struct reftable_stack_options opts;

	struct reftable_table **tables;
	size_t tables_len;
	struct reftable_merged_table *merged;
	struct reftable_compaction_stats stats;
};

int read_lines(const char *filename, char ***lines);

struct segment {
	size_t start, end;
	uint64_t bytes;
};

struct segment suggest_compaction_segment(uint64_t *sizes, size_t n,
					  uint8_t factor);

#endif
