diff options
author | Nathan S. Evans <evans@in.tum.de> | 2010-11-26 12:05:13 +0000 |
---|---|---|
committer | Nathan S. Evans <evans@in.tum.de> | 2010-11-26 12:05:13 +0000 |
commit | 7913d16332b4aaf56db70cfa47bc832d8e56aa5d (patch) | |
tree | 758191decf910827b62a493e14d627a19d9f1350 /src/dht/gnunet-service-dht.c | |
parent | 0ad03d0436a062bed0ac7e272e00f09a6dfa3624 (diff) | |
download | gnunet-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.c | 24 |
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); |