X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fats%2Fgnunet-service-ats_normalization.h;h=f12c39fe145be72c91dee92f2aa58d9dfe59726c;hb=bfdb0abc074a99a7d24ca408f38cfda128d4132b;hp=e815504a9ac10c67c8022b79e942c2e2925728cc;hpb=4eb6bd1f6824d21fa561d0c608d8688b80e8275b;p=oweals%2Fgnunet.git diff --git a/src/ats/gnunet-service-ats_normalization.h b/src/ats/gnunet-service-ats_normalization.h index e815504a9..f12c39fe1 100644 --- a/src/ats/gnunet-service-ats_normalization.h +++ b/src/ats/gnunet-service-ats_normalization.h @@ -29,44 +29,114 @@ #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 +#define DEFAULT_REL_QUALITY 1.0 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); /** * 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_by_peer (const struct GNUNET_PeerIdentity *id); + + +/** + * Get the normalized properties values for a specific peer or + * the default values if + * + * @param address the address + * @return pointer to the values, can be indexed with GNUNET_ATS_PreferenceKind, + * default preferences if peer does not exist */ const double * -GAS_normalization_get_preferences (struct GNUNET_PeerIdentity *id); +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); /** - * Changes the preferences for a peer in the problem + * Normalize an updated preference value * - * @param solver the solver handle - * @param client the client with this preference + * @param src the client with this preference * @param peer the peer to change the preference for * @param kind the kind to change the preference - * @param score the normalized score + * @param score_abs the normalized score */ -float -GAS_normalization_change_preference (void *src, - const struct GNUNET_PeerIdentity *peer, - enum GNUNET_ATS_PreferenceKind kind, - float score_abs); +void +GAS_normalization_normalize_preference (void *src, + const struct GNUNET_PeerIdentity *peer, + enum GNUNET_ATS_PreferenceKind kind, + float score_abs); +/** + * Update and normalize a atsi performance information + * + * @param addresses hashmap containing all addresses + * @param address the address to update + * @param atsi the array of performance information + * @param atsi_count the number of atsi information in the array + */ +void +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_start (GAS_Normalization_preference_changed_cb pref_ch_cb, void *pref_ch_cb_cls); +GAS_normalization_preference_client_disconnect (void *client); +/** + * Start the normalization component + * + * @param pref_ch_cb callback to call on relative preference changing + * @param pref_ch_cb_cls cls for the preference callback + * @param property_ch_cb callback to call on relative property changing + * @param property_ch_cb_cls cls for the property callback + */ +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); + + +/** + * Stop the normalization component and free all items + */ void GAS_normalization_stop ();