X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fats%2Fgnunet-service-ats_normalization.h;h=f12c39fe145be72c91dee92f2aa58d9dfe59726c;hb=bfdb0abc074a99a7d24ca408f38cfda128d4132b;hp=ed94530f950f666fa1a28257169535cc87403efd;hpb=9bde041f15f890cb36d67cc0d085e6bc143112cb;p=oweals%2Fgnunet.git diff --git a/src/ats/gnunet-service-ats_normalization.h b/src/ats/gnunet-service-ats_normalization.h index ed94530f9..f12c39fe1 100644 --- a/src/ats/gnunet-service-ats_normalization.h +++ b/src/ats/gnunet-service-ats_normalization.h @@ -29,6 +29,7 @@ #define PREF_AGING_INTERVAL GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10) #define PREF_AGING_FACTOR 0.95 +#define PREF_EPSILON 0.1 #define DEFAULT_REL_PREFERENCE 1.0 #define DEFAULT_ABS_PREFERENCE 0.0 @@ -37,24 +38,24 @@ typedef void (*GAS_Normalization_preference_changed_cb) (void *cls, - const struct GNUNET_PeerIdentity *peer, - enum GNUNET_ATS_PreferenceKind kind, - double pref_rel); + const struct GNUNET_PeerIdentity *peer, + enum GNUNET_ATS_PreferenceKind kind, + double pref_rel); typedef void (*GAS_Normalization_property_changed_cb) (void *cls, - struct ATS_Address *peer, - uint32_t type, - double prop_rel); + struct ATS_Address *peer, + uint32_t type, + double prop_rel); /** * Get the normalized preference values for a specific peer * - * @param id the peer - * @return pointer to the values, can be indexed with GNUNET_ATS_PreferenceKind, NULL if peer does not exist + * @param id the peer @return pointer to the values, can be indexed + * with GNUNET_ATS_PreferenceKind, NULL if peer does not exist */ const double * -GAS_normalization_get_preferences (const struct GNUNET_PeerIdentity *id); +GAS_normalization_get_preferences_by_peer (const struct GNUNET_PeerIdentity *id); /** @@ -68,6 +69,19 @@ GAS_normalization_get_preferences (const struct GNUNET_PeerIdentity *id); const double * GAS_normalization_get_properties (struct ATS_Address *address); + +/** + * Get the normalized preference values for a specific client and peer + * + * @param client client + * @param peer the peer + * @param pref the preference type + * @return the value + */ +const double +GAS_normalization_get_preferences_by_client (const void *client, + struct GNUNET_PeerIdentity *peer, enum GNUNET_ATS_PreferenceKind pref); + /** * Normalize an updated preference value * @@ -78,9 +92,9 @@ GAS_normalization_get_properties (struct ATS_Address *address); */ void GAS_normalization_normalize_preference (void *src, - const struct GNUNET_PeerIdentity *peer, - enum GNUNET_ATS_PreferenceKind kind, - float score_abs); + const struct GNUNET_PeerIdentity *peer, + enum GNUNET_ATS_PreferenceKind kind, + float score_abs); /** * Update and normalize a atsi performance information @@ -91,12 +105,20 @@ GAS_normalization_normalize_preference (void *src, * @param atsi_count the number of atsi information in the array */ void -GAS_normalization_normalize_property (struct GNUNET_CONTAINER_MultiHashMap *addresses, - struct ATS_Address *address, - const struct GNUNET_ATS_Information *atsi, - uint32_t atsi_count); +GAS_normalization_normalize_property (struct GNUNET_CONTAINER_MultiPeerMap *addresses, + struct ATS_Address *address, + const struct GNUNET_ATS_Information *atsi, + uint32_t atsi_count); +/** + * A performance client disconnected + * + * @param client the disconnecting client + */ +void +GAS_normalization_preference_client_disconnect (void *client); + /** * Start the normalization component * @@ -107,9 +129,9 @@ GAS_normalization_normalize_property (struct GNUNET_CONTAINER_MultiHashMap *addr */ void GAS_normalization_start (GAS_Normalization_preference_changed_cb pref_ch_cb, - void *pref_ch_cb_cls, - GAS_Normalization_property_changed_cb property_ch_cb, - void *property_ch_cb_cls); + void *pref_ch_cb_cls, + GAS_Normalization_property_changed_cb property_ch_cb, + void *property_ch_cb_cls); /**