diff options
author | Christian Grothoff <christian@grothoff.org> | 2012-10-14 18:39:08 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2012-10-14 18:39:08 +0000 |
commit | c50146d0d092d7881c58df46c237d8b50410a3a4 (patch) | |
tree | 644103207534bd2a0e0c0c6cc4f21b3805b21429 /src/fs/gnunet-service-fs_pe.c | |
parent | 4d4c1f978d4044d4ac9706f17342d8425337486c (diff) | |
download | gnunet-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.c | 23 |
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) | |||
558 | void | 558 | void |
559 | GSF_plan_add_ (struct GSF_ConnectedPeer *cp, struct GSF_PendingRequest *pr) | 559 | GSF_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) | |||
627 | void | 628 | void |
628 | GSF_plan_notify_peer_disconnect_ (const struct GSF_ConnectedPeer *cp) | 629 | GSF_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) | |||
760 | void | 761 | void |
761 | GSF_plan_init () | 762 | GSF_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 | ||