eapol/eapol_framework/eapol_common/am/include/abs_eap_am_bloom_algorithm_store.h
changeset 0 c8830336c852
child 2 1c7bc153c08e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eapol/eapol_framework/eapol_common/am/include/abs_eap_am_bloom_algorithm_store.h	Thu Dec 17 08:47:43 2009 +0200
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2001-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  EAP and WLAN authentication protocols.
+*
+*/
+
+
+
+#if !defined(_ABS_EAP_AM_BLOOM_ALGORITHM_STORE_H_)
+#define _ABS_EAP_AM_BLOOM_ALGORITHM_STORE_H_
+
+
+#include "eap_tools.h"
+
+//--------------------------------------------------
+
+/// This is interface to bit store of the Bloom filter algorithm.
+/** The bit store should be divided to two stores.
+ *  New bits are stored to the current bit store.
+ *  When current bit store becames over populated it should be
+ *  changed previous bit store and a new current bit store should be created.
+ *  Each bit index should be checked from current and previous bit stores.
+ *  Over population can be calculated from count of set bit and size of the bit store.
+ *  When half of the bits are set probability of false filtering will increse
+ *  much faster. Probability of false filtering is saturation raised power to bit index count.
+ *  Saturation is count of set bits divided by size of bit store.
+ *  Bit index count is count of separate indexes extracted from hash digest.
+ *  Each index is n bits long. The size of the bit store is 2^n bits.
+ */
+class EAP_EXPORT abs_eap_am_bloom_algorithm_store_c
+{
+
+private:
+
+	/**
+	 * The set_is_valid() function sets the state of the object valid.
+	 * The creator of this object calls this function after it is initialized. 
+	 */
+	virtual void set_is_valid() = 0;
+
+public:
+
+	/**
+	 * The destructor of the abs_eap_am_bloom_algorithm_store_c class does nothing special.
+	 */
+	EAP_FUNC_IMPORT virtual ~abs_eap_am_bloom_algorithm_store_c()
+	{
+	}
+
+	/**
+	 * The constructor of the abs_eap_am_bloom_algorithm_store_c does nothing special.
+	 */
+	EAP_FUNC_IMPORT abs_eap_am_bloom_algorithm_store_c()
+	{
+	}
+
+	/**
+	 * This function sets the name of the bit store.
+	 * Store name is 8-bit string without terminating NULL.
+	 */
+	virtual eap_status_e set_name_of_store(const eap_variable_data_c * const store_name) = 0;
+
+	/**
+	 * This function checks the bit store exists.
+	 * Function should return eap_status_ok when bit store exists and is valid.
+	 */
+	virtual eap_status_e bloom_filter_check_does_bit_store_exists() = 0;
+
+	/**
+	 * This is the count of bits in the index of Bloom algorithm.
+	 */
+	virtual eap_status_e set_bloom_bit_index_size(const u32_t bloom_bit_index_size) = 0;
+
+	/**
+	 * This function returns the bit value of queried bit from the current and previous bit store.
+	 * @param bit_index indicates the queried bit.
+	 */
+	virtual u32_t bloom_filter_get_bit_index(const u32_t bit_index) = 0;
+
+	/**
+	 * This function sets the bit value of queried bit to the bit store.
+	 * @param bit_index indicates the queried bit.
+	 */
+	virtual eap_status_e bloom_filter_set_bit_index(const u32_t bit_index) = 0;
+
+	/**
+	 * Object must indicate it's validity.
+	 * If object initialization fails this function must return false.
+	 * @return This function returns the validity of this object.
+	 */
+	virtual bool get_is_valid() = 0;
+
+}; // class eap_am_bloom_algorithm_c
+
+#endif //#if !defined(_ABS_EAP_AM_BLOOM_ALGORITHM_STORE_H_)
+
+//--------------------------------------------------
+
+
+
+// End.