/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/

#ifndef VALUECACHE_MOCK_H
#define VALUECACHE_MOCK_H

#include "zbxhistory.h"

typedef struct
{
	zbx_uint64_t			itemid;
	unsigned char			value_type;
	zbx_vector_history_record_t	data;
}
zbx_vcmock_ds_item_t;

typedef struct
{
	zbx_hashset_t	items;
}
zbx_vcmock_ds_t;

void	zbx_vcmock_ds_init(void);
void	zbx_vcmock_ds_destroy(void);
void	zbx_vcmock_ds_dump(void);
zbx_vcmock_ds_item_t	*zbx_vcmock_ds_first_item(void);

int	zbx_vcmock_str_to_item_status(const char *str);

void	zbx_vcmock_read_values(zbx_mock_handle_t hdata, unsigned char value_type, zbx_vector_history_record_t *values);
void	zbx_vcmock_check_records(const char *prefix, unsigned char value_type,
		const zbx_vector_history_record_t *expected_values, const zbx_vector_history_record_t *returned_values);

void	zbx_vcmock_set_available_mem(size_t size);
size_t	zbx_vcmock_get_available_mem(void);

void	zbx_vcmock_set_time(zbx_mock_handle_t hitem, const char *key);
zbx_timespec_t	zbx_vcmock_get_ts(void);
void	zbx_vcmock_set_cache_size(zbx_mock_handle_t hitem, const char *key);
void	zbx_vcmock_get_request_params(zbx_mock_handle_t handle, zbx_uint64_t *itemid, unsigned char *value_type,
		int *seconds, int *count, zbx_timespec_t *end);

void	zbx_vcmock_get_dc_history(zbx_mock_handle_t handle, zbx_vector_dc_history_ptr_t *history);
void	zbx_vcmock_free_dc_history(zbx_dc_history_t *ptr);

#endif