static PHP_METHOD()

in php_memcached.c [2916:2977]


static PHP_METHOD(Memcached, getOption)
{
	zend_long option;
	uint64_t result;
	memcached_behavior flag;
	MEMC_METHOD_INIT_VARS;

	/* "l" */
	ZEND_PARSE_PARAMETERS_START(1, 1)
	        Z_PARAM_LONG(option)
	ZEND_PARSE_PARAMETERS_END();

	MEMC_METHOD_FETCH_OBJECT;

	switch (option) {
		case MEMC_OPT_COMPRESSION_TYPE:
			RETURN_LONG(memc_user_data->compression_type);

		case MEMC_OPT_COMPRESSION:
			RETURN_BOOL(memc_user_data->compression_enabled);

		case MEMC_OPT_PREFIX_KEY:
		{
			memcached_return retval;
			char *result;

			result = memcached_callback_get(intern->memc, MEMCACHED_CALLBACK_PREFIX_KEY, &retval);
			if (retval == MEMCACHED_SUCCESS && result) {
				RETURN_STRING(result);
			} else {
				RETURN_EMPTY_STRING();
			}
		}

		case MEMC_OPT_SERIALIZER:
			RETURN_LONG((long)memc_user_data->serializer);
			break;

		case MEMC_OPT_USER_FLAGS:
			RETURN_LONG(memc_user_data->set_udf_flags);
			break;

		case MEMC_OPT_STORE_RETRY_COUNT:
			RETURN_LONG((long)memc_user_data->store_retry_count);
			break;

		case MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE:
		case MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE:
			if (memcached_server_count(intern->memc) == 0) {
				php_error_docref(NULL, E_WARNING, "no servers defined");
				return;
			}

		default:
			/*
			 * Assume that it's a libmemcached behavior option.
			 */
			flag = (memcached_behavior) option;
			result = memcached_behavior_get(intern->memc, flag);
			RETURN_LONG((long)result);
	}
}