gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r26502 - gnunet/src/ats


From: gnunet
Subject: [GNUnet-SVN] r26502 - gnunet/src/ats
Date: Tue, 19 Mar 2013 17:48:38 +0100

Author: wachs
Date: 2013-03-19 17:48:38 +0100 (Tue, 19 Mar 2013)
New Revision: 26502

Modified:
   gnunet/src/ats/gnunet-service-ats_addresses.c
   gnunet/src/ats/gnunet-service-ats_performance.c
Log:
changes


Modified: gnunet/src/ats/gnunet-service-ats_addresses.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses.c       2013-03-19 16:34:45 UTC 
(rev 26501)
+++ gnunet/src/ats/gnunet-service-ats_addresses.c       2013-03-19 16:48:38 UTC 
(rev 26502)
@@ -399,39 +399,56 @@
                              struct ATS_Address *dest)
 {
   int i;
+  int change = GNUNET_NO;
   int res = 0;
   for (i = 0; i < ats_count; i++)
     switch (ntohl (src[i].type))
     {
     case GNUNET_ATS_UTILIZATION_UP:
+       if (dest->atsp_utilization_out.value__ != src[i].value)
+               change = GNUNET_YES;
       dest->atsp_utilization_out.value__ = src[i].value;
       res ++;
       break;
     case GNUNET_ATS_UTILIZATION_DOWN:
+       if (dest->atsp_utilization_in.value__ != src[i].value)
+               change = GNUNET_YES;
       dest->atsp_utilization_in.value__ = src[i].value;
       res ++;
       break;
     case GNUNET_ATS_QUALITY_NET_DELAY:
+       if (dest->atsp_latency.rel_value  != src[i].value)
+               change = GNUNET_YES;
       dest->atsp_latency.rel_value = ntohl (src[i].value);
       res ++;
       break;
     case GNUNET_ATS_QUALITY_NET_DISTANCE:
+       if (dest->atsp_distance!= src[i].value)
+               change = GNUNET_YES;
       dest->atsp_distance = ntohl (src[i].value);
       res ++;
       break;
     case GNUNET_ATS_COST_WAN:
+       if (dest->atsp_cost_wan != src[i].value)
+               change = GNUNET_YES;
       dest->atsp_cost_wan = ntohl (src[i].value);
       res ++;
       break;
     case GNUNET_ATS_COST_LAN:
+       if (dest->atsp_cost_lan != src[i].value)
+               change = GNUNET_YES;
       dest->atsp_cost_lan = ntohl (src[i].value);
       res ++;
       break;
     case GNUNET_ATS_COST_WLAN:
+       if (dest->atsp_cost_wlan != src[i].value)
+               change = GNUNET_YES;
       dest->atsp_cost_wlan = ntohl (src[i].value);
       res ++;
       break;
     case GNUNET_ATS_NETWORK_TYPE:
+       if (dest->atsp_network_type != src[i].value)
+               change = GNUNET_YES;
       dest->atsp_network_type = ntohl (src[i].value);
       res ++;
       break;
@@ -443,6 +460,14 @@
       GNUNET_break (0);
       break;
     }
+  if (GNUNET_YES == change)
+  {
+               struct GNUNET_ATS_Information *destats;
+               int ats_count;
+               ats_count = assemble_ats_information (dest, &destats);
+               GAS_handle_performance_update (&dest->peer, destats, ats_count);
+               GNUNET_free (destats);
+  }
   return res;
 }
 

Modified: gnunet/src/ats/gnunet-service-ats_performance.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_performance.c     2013-03-19 16:34:45 UTC 
(rev 26501)
+++ gnunet/src/ats/gnunet-service-ats_performance.c     2013-03-19 16:48:38 UTC 
(rev 26502)
@@ -532,11 +532,29 @@
        struct PerformanceClient *cur;
        struct PerformanceMonitorClient *curm;
        struct MonitorResponseMessage *mrm;
+       size_t msglen;
+
+
+       msglen = sizeof (struct MonitorResponseMessage) +
+                                        ats_count * sizeof (struct 
GNUNET_ATS_Information);
+       mrm = GNUNET_malloc (msglen);
+
+       mrm->header.type = htons (GNUNET_MESSAGE_TYPE_ATS_MONITOR_RESPONSE);
+       mrm->header.size = htons (msglen);
+       mrm->ats_count = htonl (ats_count);
+       mrm->peer = *peer;
+
        for (cur = pc_head; NULL != cur; cur = cur->next)
                for (curm = cur->pm_head; NULL != curm; curm = curm->next)
                {
                                /* Notify client about update */
+                               mrm->id = curm->id;
+                         GNUNET_SERVER_notification_context_unicast (nc,
+                                       cur->client,
+                                       (struct GNUNET_MessageHeader *) &mrm,
+                                       GNUNET_YES);
                }
+       GNUNET_free (mrm);
 }
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]