aboutsummaryrefslogtreecommitdiff
path: root/src/fs/gnunet-service-fs_pe.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2012-10-14 18:39:08 +0000
committerChristian Grothoff <christian@grothoff.org>2012-10-14 18:39:08 +0000
commitc50146d0d092d7881c58df46c237d8b50410a3a4 (patch)
tree644103207534bd2a0e0c0c6cc4f21b3805b21429 /src/fs/gnunet-service-fs_pe.c
parent4d4c1f978d4044d4ac9706f17342d8425337486c (diff)
downloadgnunet-c50146d0d092d7881c58df46c237d8b50410a3a4.tar.gz
gnunet-c50146d0d092d7881c58df46c237d8b50410a3a4.zip
-optimizing all FS multi hashmaps for key memory sharing
Diffstat (limited to 'src/fs/gnunet-service-fs_pe.c')
-rw-r--r--src/fs/gnunet-service-fs_pe.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/fs/gnunet-service-fs_pe.c b/src/fs/gnunet-service-fs_pe.c
index bc08eebe7..6a82720de 100644
--- a/src/fs/gnunet-service-fs_pe.c
+++ b/src/fs/gnunet-service-fs_pe.c
@@ -558,7 +558,7 @@ merge_pr (void *cls, const struct GNUNET_HashCode * query, void *element)
558void 558void
559GSF_plan_add_ (struct GSF_ConnectedPeer *cp, struct GSF_PendingRequest *pr) 559GSF_plan_add_ (struct GSF_ConnectedPeer *cp, struct GSF_PendingRequest *pr)
560{ 560{
561 struct GNUNET_PeerIdentity id; 561 const struct GNUNET_PeerIdentity *id;
562 struct PeerPlan *pp; 562 struct PeerPlan *pp;
563 struct GSF_PendingRequestData *prd; 563 struct GSF_PendingRequestData *prd;
564 struct GSF_RequestPlan *rp; 564 struct GSF_RequestPlan *rp;
@@ -567,18 +567,19 @@ GSF_plan_add_ (struct GSF_ConnectedPeer *cp, struct GSF_PendingRequest *pr)
567 struct MergeContext mpc; 567 struct MergeContext mpc;
568 568
569 GNUNET_assert (NULL != cp); 569 GNUNET_assert (NULL != cp);
570 GSF_connected_peer_get_identity_ (cp, &id); 570 id = GSF_connected_peer_get_identity2_ (cp);
571 pp = GNUNET_CONTAINER_multihashmap_get (plans, &id.hashPubKey); 571 pp = GNUNET_CONTAINER_multihashmap_get (plans, &id->hashPubKey);
572 if (NULL == pp) 572 if (NULL == pp)
573 { 573 {
574 pp = GNUNET_malloc (sizeof (struct PeerPlan)); 574 pp = GNUNET_malloc (sizeof (struct PeerPlan));
575 pp->plan_map = GNUNET_CONTAINER_multihashmap_create (128, GNUNET_NO); 575 pp->plan_map = GNUNET_CONTAINER_multihashmap_create (128, GNUNET_YES);
576 pp->priority_heap = 576 pp->priority_heap =
577 GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MAX); 577 GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MAX);
578 pp->delay_heap = 578 pp->delay_heap =
579 GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MIN); 579 GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MIN);
580 pp->cp = cp; 580 pp->cp = cp;
581 GNUNET_CONTAINER_multihashmap_put (plans, &id.hashPubKey, pp, 581 GNUNET_CONTAINER_multihashmap_put (plans,
582 &id->hashPubKey, pp,
582 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); 583 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY);
583 } 584 }
584 mpc.merged = GNUNET_NO; 585 mpc.merged = GNUNET_NO;
@@ -599,7 +600,7 @@ GSF_plan_add_ (struct GSF_ConnectedPeer *cp, struct GSF_PendingRequest *pr)
599 prd = GSF_pending_request_get_data_ (pr); 600 prd = GSF_pending_request_get_data_ (pr);
600 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 601 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
601 "Planning transmission of query `%s' to peer `%s'\n", 602 "Planning transmission of query `%s' to peer `%s'\n",
602 GNUNET_h2s (&prd->query), GNUNET_i2s (&id)); 603 GNUNET_h2s (&prd->query), GNUNET_i2s (id));
603 rp = GNUNET_malloc (sizeof (struct GSF_RequestPlan)); // 8 MB 604 rp = GNUNET_malloc (sizeof (struct GSF_RequestPlan)); // 8 MB
604 rpr = GNUNET_malloc (sizeof (struct GSF_RequestPlanReference)); 605 rpr = GNUNET_malloc (sizeof (struct GSF_RequestPlanReference));
605 prl = GNUNET_malloc (sizeof (struct PendingRequestList)); 606 prl = GNUNET_malloc (sizeof (struct PendingRequestList));
@@ -627,18 +628,18 @@ GSF_plan_add_ (struct GSF_ConnectedPeer *cp, struct GSF_PendingRequest *pr)
627void 628void
628GSF_plan_notify_peer_disconnect_ (const struct GSF_ConnectedPeer *cp) 629GSF_plan_notify_peer_disconnect_ (const struct GSF_ConnectedPeer *cp)
629{ 630{
630 struct GNUNET_PeerIdentity id; 631 const struct GNUNET_PeerIdentity *id;
631 struct PeerPlan *pp; 632 struct PeerPlan *pp;
632 struct GSF_RequestPlan *rp; 633 struct GSF_RequestPlan *rp;
633 struct GSF_PendingRequestData *prd; 634 struct GSF_PendingRequestData *prd;
634 struct PendingRequestList *prl; 635 struct PendingRequestList *prl;
635 636
636 GSF_connected_peer_get_identity_ (cp, &id); 637 id = GSF_connected_peer_get_identity2_ (cp);
637 pp = GNUNET_CONTAINER_multihashmap_get (plans, &id.hashPubKey); 638 pp = GNUNET_CONTAINER_multihashmap_get (plans, &id->hashPubKey);
638 if (NULL == pp) 639 if (NULL == pp)
639 return; /* nothing was ever planned for this peer */ 640 return; /* nothing was ever planned for this peer */
640 GNUNET_assert (GNUNET_YES == 641 GNUNET_assert (GNUNET_YES ==
641 GNUNET_CONTAINER_multihashmap_remove (plans, &id.hashPubKey, 642 GNUNET_CONTAINER_multihashmap_remove (plans, &id->hashPubKey,
642 pp)); 643 pp));
643 if (NULL != pp->pth) 644 if (NULL != pp->pth)
644 { 645 {
@@ -760,7 +761,7 @@ GSF_plan_notify_request_done_ (struct GSF_PendingRequest *pr)
760void 761void
761GSF_plan_init () 762GSF_plan_init ()
762{ 763{
763 plans = GNUNET_CONTAINER_multihashmap_create (256, GNUNET_NO); 764 plans = GNUNET_CONTAINER_multihashmap_create (256, GNUNET_YES);
764} 765}
765 766
766 767