#ifndef __MONITORING_MEDIAN_H_INCLUDED__
#define __MONITORING_MEDIAN_H_INCLUDED__
#include <stddef.h>
#include <stdint.h>

// ------------------------------------------------------------------------
// The core phylosophy of the interface is this.
// The code and data structure are completely separated.
// There are no mallocs in this codebase.
// This is so that when we have a long running process which is using this
// these methods to maintain statistics, there is no memory allocation or
// fragmentation going on. This means that the statistics are always valid
// and we do not have to figure out how report them in panic situations.
// Other than memory corruption issues, the state of the buffer will always
// be good, and we will never be in a state where an update could not occur
// because of memory pressure.
// ------------------------------------------------------------------------

// The ErrorCode returned by all
// functions in this file.
typedef int32_t median_error_t;
// A buffer which contains all the state held
// within an approximate median calculator.
// And another type for scratch data.
typedef struct metadata *median_buffer_t;
typedef struct spare_buffer *median_scratch_buffer_t;
typedef struct output_buffer *median_json_string_t;

// A single data element. For now this is defined
// to be a 64 bit integer. But in principle this could be
// anything at all.
typedef uint64_t median_data_t;

// All the error codes.
// No Error.
static const median_error_t MEDIAN_OK = 0;

// The parameters are meaningless (for example, asking for neg values
// for epsilon).
static const median_error_t MEDIAN_ERROR_INVALID_PARAMETERS = -1;

// The buffer allocated is too small for the parameters requested.
static const median_error_t MEDIAN_ERROR_BUFFER_TOO_SMALL = -2;

// Overflow because MaxN has been exceeded.
static const median_error_t MEDIAN_ERROR_MAX_N_EXCEEDED = -3;

// This is returned when some invariant is broken.
// It should not happen in normal operation.
static const median_error_t MEDIAN_ERROR_BUG = -1000;

// Indicates that the size of the largest possible dataset is not known.
static const size_t MEDIAN_MAX_N_UNKNOWN = 0;

// The default size of the largest possible dataset.
static const size_t MEDIAN_MAX_N_DEFAULT = 1024 * 1024 * 1024;  // 1G.

static const size_t N_WINDOWS_DEFAULT = 1;

// This routine returns a suggested size for a buffer to hold all the
// state needed for a median calculation. Here epsilon is the permissible error.
// maxN is the largest dataset that we anticipate. If maxN is set to
// MEDIAN_MAX_N_UNKNOWN (or zero), then we assume MEDIAN_MAX_N_DEFAULT to be the
// value of maxN.
// nWindows is the number of concurrently active windows. The default value
// for nWindows is 1 (aka N_WINDOWS_DEFAULT). If no windowing is desired,
// N_WINDOWS_DEFAULT should be used.
// The value return parameter is conventionally the last one. In
// this case, it contains the suggested_size of the buffer, assuming that the
// return value is MEDIAN_ERROR_OK. In all reasonable calls, the returned value
// will be MEDIAN_ERROR_OK.
median_error_t median_suggest_buffer_size(double epsilon,
                                          size_t maxN,
                                          size_t nWindows,
                                          size_t *suggested_size);
// Suggest a size of the buffer for scratch space. This is needed
// so that the buffer is not corrupted by the output and merge steps.
median_error_t median_suggest_scratch_buffer_size(median_buffer_t m,
                                                  size_t *suggested_size);
// Suggest a size of a buffer to output a JSON description of the median status.
// This is the function that is used to serialize out the result when needed.
median_error_t median_suggest_json_string_size(median_buffer_t m,
                                               size_t *suggested_size);

// This routine will init the buffer. It will check if the buffer meets the
// size restriction returned by #median_suggest_buffer_size(). If not, it will
// exit with MEDIAN_ERROR_BUFFER_TOO_SMALL.
// The method can also exit with MEDIAN_ERR)R_INVALID_PARAMETERS in case there
// are some meaningless parameters passed in the call.
// We assume that a buffer of length buffer_size (in bytes) has been allocated
// and is available at the pointer specified by buffer. The parameters to
// median_suggest_buffer_size are passed into the data initialization routine,
// and the init routine will store them inside the data structure, so that the
// values can be used during the operation of the data structure. The value
// return parameter initialized_buffer is identical to the buffer variable (i.e.
// *initialized_buffer == buffer), but is appropriately cast to indicate that it
// is initialized. In all reasonable calls, the returned value will be
// MEDIAN_ERROR_OK.
median_error_t median_init_buffer(void *buffer, size_t buffer_size,
                                  double epsilon, size_t maxN, size_t nWindows,
                                  median_buffer_t *initialized_buffer);
// This frees up any internal resource consumed with the buffer, including
// mutex locks and other provisioned resources.
median_error_t median_deinit_buffer(median_buffer_t m);
// Initialize the scratch buffer.
// This function is similar in behaviour to the
// init function for the main buffer.
median_error_t median_init_scratch_buffer(
    void *buffer, size_t buffer_size, median_buffer_t m,
    median_scratch_buffer_t *initialized_buffer);
// De-init the scratch buffer.
median_error_t median_deinit_scratch_buffer(median_scratch_buffer_t s);
// Initialize the output buffer.
median_error_t median_init_json_string(
    void *buffer, size_t buffer_size, median_buffer_t m,
    median_json_string_t *initialized_buffer);
// De-init the output buffer.
median_error_t median_deinit_json_string(median_json_string_t b);

// This routine inserts a data point into the median computation. It's
// implemented to be really cheap. However, it is not always constant time.
// There can be invocations of this function which take a bit longer, but
// in no case can it become onerous. The runtime is ammortizable to a constant
// per invocation.
// The first parameter, buffer, is the pointer to the buffer.
// The second parameter, data, is the data to be inserted.
// If the data inserted exceeds MaxN, an error might be returned. In such a
// case, MEDIAN_ERROR_MAX_N_EXCEEDED will be returned. There is no guarantee
// that the error will be returned as soon as MaxN is exceeded. But no error
// will be returned until it is.
// If the parameters do not make sense, for example buffer is 0x0,
// then MEDIAN_ERROR_INVALID_PARAMETERS will be returned.
// In all reasonable calls, the returned value will be
// MEDIAN_ERROR_OK.
median_error_t median_insert_data(median_buffer_t buffer, median_data_t data,
                                  median_scratch_buffer_t scratch_buffer);

// This routine returns the approximate median of the data seen thusfar.
// This is implemented to be really cheap as well, but not as cheap as the
// median_insert_data() function. So it should be used a bit less than the other
// case.
// The first parameter, buffer, is the buffer which contains the inserted data.
// The second parameter, approximate_median, is a value return parameter which
// will, on exit, contain the value of the approximate median.
// The only condition under which this method will return an error is if one of
// the parameters is invalid (for example, approximate_median is null).
// By and large, if there is no bug in the calling code, this method should not
// return an error.
// If it does return an error, the error will be
// MEDIAN_ERROR_INVALID_PARAMETERS
median_error_t median_output_median(const median_buffer_t buffer,
                                    median_data_t *approximate_median,
                                    median_scratch_buffer_t scratch_buffer);
// Output the JSON representation of the median buffer state.
median_error_t median_output_json(const median_buffer_t buffer,
                                  median_json_string_t output);
// This hexdumps the state of the buffer to stderr so that it can help debug if
// needed.
median_error_t median_dump_stderr(const median_buffer_t buffer);

#endif  // ._MONITORING_MEDIAN>H_INCLUDED__
