aboutsummaryrefslogtreecommitdiff
path: root/src/dht/gnunet-service-dht.c
diff options
context:
space:
mode:
authorNathan S. Evans <evans@in.tum.de>2010-11-26 12:05:13 +0000
committerNathan S. Evans <evans@in.tum.de>2010-11-26 12:05:13 +0000
commit7913d16332b4aaf56db70cfa47bc832d8e56aa5d (patch)
tree758191decf910827b62a493e14d627a19d9f1350 /src/dht/gnunet-service-dht.c
parent0ad03d0436a062bed0ac7e272e00f09a6dfa3624 (diff)
downloadgnunet-7913d16332b4aaf56db70cfa47bc832d8e56aa5d.tar.gz
gnunet-7913d16332b4aaf56db70cfa47bc832d8e56aa5d.zip
count number of messages queued vs. number sent out
Diffstat (limited to 'src/dht/gnunet-service-dht.c')
-rw-r--r--src/dht/gnunet-service-dht.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/dht/gnunet-service-dht.c b/src/dht/gnunet-service-dht.c
index 299d90d81..f96722ff7 100644
--- a/src/dht/gnunet-service-dht.c
+++ b/src/dht/gnunet-service-dht.c
@@ -257,6 +257,11 @@ struct PeerInfo
257 struct PeerInfo *prev; 257 struct PeerInfo *prev;
258 258
259 /** 259 /**
260 * Count of outstanding messages for peer.
261 */
262 unsigned int pending_count;
263
264 /**
260 * Head of pending messages to be sent to this peer. 265 * Head of pending messages to be sent to this peer.
261 */ 266 */
262 struct P2PPendingMessage *head; 267 struct P2PPendingMessage *head;
@@ -1098,6 +1103,8 @@ forward_result_message (const struct GNUNET_MessageHeader *msg,
1098#if DEBUG_DHT > 1 1103#if DEBUG_DHT > 1
1099 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "%s:%s Adding pending message size %d for peer %s\n", my_short_id, "DHT", msize, GNUNET_i2s(&peer->id)); 1104 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "%s:%s Adding pending message size %d for peer %s\n", my_short_id, "DHT", msize, GNUNET_i2s(&peer->id));
1100#endif 1105#endif
1106 peer->pending_count++;
1107 increment_stats("# pending messages scheduled");
1101 GNUNET_CONTAINER_DLL_insert_after(peer->head, peer->tail, peer->tail, pending); 1108 GNUNET_CONTAINER_DLL_insert_after(peer->head, peer->tail, peer->tail, pending);
1102 if (peer->send_task == GNUNET_SCHEDULER_NO_TASK) 1109 if (peer->send_task == GNUNET_SCHEDULER_NO_TASK)
1103 peer->send_task = GNUNET_SCHEDULER_add_now(&try_core_send, peer); 1110 peer->send_task = GNUNET_SCHEDULER_add_now(&try_core_send, peer);
@@ -1144,23 +1151,22 @@ core_transmit_notify (void *cls,
1144 { 1151 {
1145 off = msize; 1152 off = msize;
1146 memcpy (cbuf, pending->msg, msize); 1153 memcpy (cbuf, pending->msg, msize);
1154 peer->pending_count--;
1155 increment_stats("# pending messages sent");
1156 GNUNET_assert(peer->pending_count >= 0);
1147 GNUNET_CONTAINER_DLL_remove (peer->head, 1157 GNUNET_CONTAINER_DLL_remove (peer->head,
1148 peer->tail, 1158 peer->tail,
1149 pending); 1159 pending);
1150#if DEBUG_DHT > 1
1151 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "%s:%s Removing pending message size %d for peer %s\n", my_short_id, "DHT", msize, GNUNET_i2s(&peer->id));
1152#endif
1153 GNUNET_free (pending); 1160 GNUNET_free (pending);
1154 } 1161 }
1155#if SMART 1162#if SMART
1156 while (NULL != pending && 1163 while (NULL != pending &&
1157 (size - off >= (msize = ntohs (pending->msg->size)))) 1164 (size - off >= (msize = ntohs (pending->msg->size))))
1158 { 1165 {
1159#if DEBUG_DHT_ROUTING
1160 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "`%s:%s' : transmit_notify (core) called with size %d, available %d\n", my_short_id, "dht service", msize, size);
1161#endif
1162 memcpy (&cbuf[off], pending->msg, msize); 1166 memcpy (&cbuf[off], pending->msg, msize);
1163 off += msize; 1167 off += msize;
1168 peer->pending_count--;
1169 GNUNET_assert(peer->pending_count >= 0);
1164 GNUNET_CONTAINER_DLL_remove (peer->head, 1170 GNUNET_CONTAINER_DLL_remove (peer->head,
1165 peer->tail, 1171 peer->tail,
1166 pending); 1172 pending);
@@ -1170,9 +1176,7 @@ core_transmit_notify (void *cls,
1170#endif 1176#endif
1171 if ((peer->head != NULL) && (peer->send_task == GNUNET_SCHEDULER_NO_TASK)) 1177 if ((peer->head != NULL) && (peer->send_task == GNUNET_SCHEDULER_NO_TASK))
1172 peer->send_task = GNUNET_SCHEDULER_add_now(&try_core_send, peer); 1178 peer->send_task = GNUNET_SCHEDULER_add_now(&try_core_send, peer);
1173#if DEBUG_DHT > 1 1179
1174 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "`%s:%s' : transmit_notify (core) called with size %d, available %d, returning %d\n", my_short_id, "dht service", msize, size, off);
1175#endif
1176 return off; 1180 return off;
1177} 1181}
1178 1182
@@ -1701,6 +1705,8 @@ static void forward_message (const struct GNUNET_MessageHeader *msg,
1701#if DEBUG_DHT > 1 1705#if DEBUG_DHT > 1
1702 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "%s:%s Adding pending message size %d for peer %s\n", my_short_id, "DHT", msize, GNUNET_i2s(&peer->id)); 1706 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "%s:%s Adding pending message size %d for peer %s\n", my_short_id, "DHT", msize, GNUNET_i2s(&peer->id));
1703#endif 1707#endif
1708 peer->pending_count++;
1709 increment_stats("# pending messages scheduled");
1704 GNUNET_CONTAINER_DLL_insert_after(peer->head, peer->tail, peer->tail, pending); 1710 GNUNET_CONTAINER_DLL_insert_after(peer->head, peer->tail, peer->tail, pending);
1705 if (peer->send_task == GNUNET_SCHEDULER_NO_TASK) 1711 if (peer->send_task == GNUNET_SCHEDULER_NO_TASK)
1706 peer->send_task = GNUNET_SCHEDULER_add_now(&try_core_send, peer); 1712 peer->send_task = GNUNET_SCHEDULER_add_now(&try_core_send, peer);