aboutsummaryrefslogtreecommitdiff
path: root/src/fs/gnunet-service-fs_cp.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2014-12-24 01:10:47 +0000
committerChristian Grothoff <christian@grothoff.org>2014-12-24 01:10:47 +0000
commitf1f603c7d0b3f03dca46a4f313472288eb080eb1 (patch)
tree3a29966b02dfb83e0a8a8d5c42b3116380209fb0 /src/fs/gnunet-service-fs_cp.c
parent53cd5b8eda2fa8db86b0907a62a39598981d008a (diff)
making GNUNET_SCHEDULER_cancel() perform in O(1) instead of O(n) to help or even fully address #3247
Diffstat (limited to 'src/fs/gnunet-service-fs_cp.c')
-rw-r--r--src/fs/gnunet-service-fs_cp.c46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/fs/gnunet-service-fs_cp.c b/src/fs/gnunet-service-fs_cp.c
index 030d8b6432..8c956c2749 100644
--- a/src/fs/gnunet-service-fs_cp.c
+++ b/src/fs/gnunet-service-fs_cp.c
@@ -86,7 +86,7 @@ struct GSF_PeerTransmitHandle
/**
* Task called on timeout, or 0 for none.
*/
- GNUNET_SCHEDULER_TaskIdentifier timeout_task;
+ struct GNUNET_SCHEDULER_Task * timeout_task;
/**
* Function to call to get the actual message.
@@ -155,7 +155,7 @@ struct GSF_DelayedHandle
/**
* Task for the delay.
*/
- GNUNET_SCHEDULER_TaskIdentifier delay_task;
+ struct GNUNET_SCHEDULER_Task * delay_task;
/**
* Size of the message.
@@ -184,7 +184,7 @@ struct PeerRequest
/**
* Task for asynchronous stopping of this request.
*/
- GNUNET_SCHEDULER_TaskIdentifier kill_task;
+ struct GNUNET_SCHEDULER_Task * kill_task;
};
@@ -209,7 +209,7 @@ struct GSF_ConnectedPeer
/**
* Task scheduled to revive migration to this peer.
*/
- GNUNET_SCHEDULER_TaskIdentifier mig_revive_task;
+ struct GNUNET_SCHEDULER_Task * mig_revive_task;
/**
* Messages (replies, queries, content migration) we would like to
@@ -248,7 +248,7 @@ struct GSF_ConnectedPeer
/**
* Task scheduled if we need to retry bandwidth reservation later.
*/
- GNUNET_SCHEDULER_TaskIdentifier rc_delay_task;
+ struct GNUNET_SCHEDULER_Task * rc_delay_task;
/**
* Active requests from this neighbour, map of query to 'struct PeerRequest'.
@@ -472,10 +472,10 @@ peer_transmit_ready_cb (void *cls, size_t size, void *buf)
schedule_transmission (pth);
return 0;
}
- if (GNUNET_SCHEDULER_NO_TASK != pth->timeout_task)
+ if (NULL != pth->timeout_task)
{
GNUNET_SCHEDULER_cancel (pth->timeout_task);
- pth->timeout_task = GNUNET_SCHEDULER_NO_TASK;
+ pth->timeout_task = NULL;
}
GNUNET_CONTAINER_DLL_remove (cp->pth_head, cp->pth_tail, pth);
if (GNUNET_YES == pth->is_query)
@@ -516,7 +516,7 @@ retry_reservation (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
struct GNUNET_PeerIdentity target;
GNUNET_PEER_resolve (cp->ppd.pid, &target);
- cp->rc_delay_task = GNUNET_SCHEDULER_NO_TASK;
+ cp->rc_delay_task = NULL;
cp->rc =
GNUNET_ATS_reserve_bandwidth (GSF_ats, &target, DBLOCK_SIZE,
&ats_reserve_callback, cp);
@@ -652,7 +652,7 @@ revive_migration (void *cls,
struct GSF_ConnectedPeer *cp = cls;
struct GNUNET_TIME_Relative bt;
- cp->mig_revive_task = GNUNET_SCHEDULER_NO_TASK;
+ cp->mig_revive_task = NULL;
bt = GNUNET_TIME_absolute_get_remaining (cp->ppd.migration_blocked_until);
if (0 != bt.rel_value_us)
{
@@ -715,7 +715,7 @@ GSF_handle_p2p_migration_stop_ (void *cls,
GNUNET_i2s (other),
GNUNET_STRINGS_relative_time_to_string (bt, GNUNET_YES));
cp->ppd.migration_blocked_until = GNUNET_TIME_relative_to_absolute (bt);
- if (GNUNET_SCHEDULER_NO_TASK == cp->mig_revive_task)
+ if (NULL == cp->mig_revive_task)
{
GSF_push_stop_ (cp);
cp->mig_revive_task =
@@ -773,10 +773,10 @@ free_pending_request (struct PeerRequest *peerreq,
{
struct GSF_ConnectedPeer *cp = peerreq->cp;
- if (GNUNET_SCHEDULER_NO_TASK != peerreq->kill_task)
+ if (NULL != peerreq->kill_task)
{
GNUNET_SCHEDULER_cancel (peerreq->kill_task);
- peerreq->kill_task = GNUNET_SCHEDULER_NO_TASK;
+ peerreq->kill_task = NULL;
}
GNUNET_STATISTICS_update (GSF_stats, gettext_noop ("# P2P searches active"),
-1, GNUNET_NO);
@@ -825,7 +825,7 @@ peer_request_destroy (void *cls,
struct GSF_PendingRequest *pr = peerreq->pr;
struct GSF_PendingRequestData *prd;
- peerreq->kill_task = GNUNET_SCHEDULER_NO_TASK;
+ peerreq->kill_task = NULL;
prd = GSF_pending_request_get_data_ (pr);
cancel_pending_request (NULL, &prd->query, peerreq);
}
@@ -987,7 +987,7 @@ handle_p2p_reply (void *cls,
}
if (GNUNET_BLOCK_EVALUATION_OK_LAST != eval)
return;
- if (GNUNET_SCHEDULER_NO_TASK == peerreq->kill_task)
+ if (NULL == peerreq->kill_task)
{
GNUNET_STATISTICS_update (GSF_stats,
gettext_noop
@@ -1356,7 +1356,7 @@ peer_transmit_timeout (void *cls,
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Timeout trying to transmit to other peer\n");
- pth->timeout_task = GNUNET_SCHEDULER_NO_TASK;
+ pth->timeout_task = NULL;
cp = pth->cp;
GNUNET_CONTAINER_DLL_remove (cp->pth_head, cp->pth_tail, pth);
if (GNUNET_YES == pth->is_query)
@@ -1440,10 +1440,10 @@ GSF_peer_transmit_cancel_ (struct GSF_PeerTransmitHandle *pth)
{
struct GSF_ConnectedPeer *cp;
- if (GNUNET_SCHEDULER_NO_TASK != pth->timeout_task)
+ if (NULL != pth->timeout_task)
{
GNUNET_SCHEDULER_cancel (pth->timeout_task);
- pth->timeout_task = GNUNET_SCHEDULER_NO_TASK;
+ pth->timeout_task = NULL;
}
cp = pth->cp;
GNUNET_CONTAINER_DLL_remove (cp->pth_head, cp->pth_tail, pth);
@@ -1586,10 +1586,10 @@ GSF_peer_disconnect_handler_ (void *cls,
GNUNET_ATS_reserve_bandwidth_cancel (cp->rc);
cp->rc = NULL;
}
- if (GNUNET_SCHEDULER_NO_TASK != cp->rc_delay_task)
+ if (NULL != cp->rc_delay_task)
{
GNUNET_SCHEDULER_cancel (cp->rc_delay_task);
- cp->rc_delay_task = GNUNET_SCHEDULER_NO_TASK;
+ cp->rc_delay_task = NULL;
}
GNUNET_CONTAINER_multihashmap_iterate (cp->request_map,
&cancel_pending_request, cp);
@@ -1608,10 +1608,10 @@ GSF_peer_disconnect_handler_ (void *cls,
GNUNET_assert (0 == cp->cth_in_progress);
while (NULL != (pth = cp->pth_head))
{
- if (pth->timeout_task != GNUNET_SCHEDULER_NO_TASK)
+ if (pth->timeout_task != NULL)
{
GNUNET_SCHEDULER_cancel (pth->timeout_task);
- pth->timeout_task = GNUNET_SCHEDULER_NO_TASK;
+ pth->timeout_task = NULL;
}
GNUNET_CONTAINER_DLL_remove (cp->pth_head, cp->pth_tail, pth);
pth->gmc (pth->gmc_cls, 0, NULL);
@@ -1625,10 +1625,10 @@ GSF_peer_disconnect_handler_ (void *cls,
GNUNET_free (dh);
}
GNUNET_PEER_change_rc (cp->ppd.pid, -1);
- if (GNUNET_SCHEDULER_NO_TASK != cp->mig_revive_task)
+ if (NULL != cp->mig_revive_task)
{
GNUNET_SCHEDULER_cancel (cp->mig_revive_task);
- cp->mig_revive_task = GNUNET_SCHEDULER_NO_TASK;
+ cp->mig_revive_task = NULL;
}
GNUNET_free (cp);
}