<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
<?php

if (file_exists (dirname (__FILE__) . '/config.inc.local')) {
	include dirname (__FILE__) . '/config.inc.local';
}
else {
	define ("MEMC_SERVER_HOST", "127.0.0.1");
	define ("MEMC_SERVER_PORT", 11211);

	//define ("MEMC_SASL_SERVER_HOST", "127.0.0.1");
	//define ("MEMC_SASL_SERVER_PORT", 11212);

	//define ('MEMC_SASL_USER', 'memcached');
	//define ('MEMC_SASL_PASS', 'test');
}

function memc_create_instance ($host, $port, array $opts = array (), $persistent_id = null)
{
	$memcached = new Memcached($persistent_id);
	if ($memcached->setOptions ($opts) == false)
		echo "Failed to set options" . PHP_EOL;

	$memcached->addServer($host, $port);
	if ($memcached->flush() === false) {
		return NULL;
	}
	return $memcached;
}

function memc_get_instance (array $opts = array (), $persistent_id = null)
{
	return memc_create_instance(MEMC_SERVER_HOST, MEMC_SERVER_PORT, $opts, $persistent_id);
}

function memc_get_sasl_instance (array $opts = array (), $persistent_id = null)
{
	return memc_create_instance(MEMC_SASL_SERVER_HOST, MEMC_SASL_SERVER_PORT, $opts, $persistent_id);
}

function memc_run_test ($test_function, $options = array ())
{
	foreach ($options as $option_set) {
		$memc = memc_get_instance ($option_set ['options']);
		$test_function ($memc, $option_set);
	}
	echo "TEST DONE" . PHP_EOL;
}

function memc_create_combinations ($name, $serializer, $ignore_object_type = false)
{
	return array (
			array (
				'title' => "$name serializer, ascii protocol",
				'options' => array (
					Memcached::OPT_SERIALIZER => $serializer
				),
				'ignore_object_type' => $ignore_object_type
			),
			array (
				'title' => "$name serializer, binary protocol",
				'options' => array (
					Memcached::OPT_BINARY_PROTOCOL => true,
					Memcached::OPT_SERIALIZER => $serializer
				),
				'ignore_object_type' => $ignore_object_type
			),
	);
}

function memc_get_version($memc) {
	$version = $memc->getVersion();
	return array_pop($version);
}
