diff options
author | Christian Grothoff <christian@grothoff.org> | 2015-02-05 21:41:58 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2015-02-05 21:41:58 +0000 |
commit | b8d5c4c9220576e85b4eec4c7ffa0390ba887fb5 (patch) | |
tree | f93ff7c7d94c81f5182e1c4bc7fd829f4fc9a609 /src/ats/gnunet-service-ats_plugins.c | |
parent | d4cb0035c1248e050d906e9018d36a9f5d19eb73 (diff) | |
download | gnunet-b8d5c4c9220576e85b4eec4c7ffa0390ba887fb5.tar.gz gnunet-b8d5c4c9220576e85b4eec4c7ffa0390ba887fb5.zip |
first pass at cleaning up ATS plugin API
Diffstat (limited to 'src/ats/gnunet-service-ats_plugins.c')
-rw-r--r-- | src/ats/gnunet-service-ats_plugins.c | 73 |
1 files changed, 26 insertions, 47 deletions
diff --git a/src/ats/gnunet-service-ats_plugins.c b/src/ats/gnunet-service-ats_plugins.c index 47761fc14..7e03a1a7e 100644 --- a/src/ats/gnunet-service-ats_plugins.c +++ b/src/ats/gnunet-service-ats_plugins.c | |||
@@ -39,12 +39,12 @@ | |||
39 | static int ats_mode; | 39 | static int ats_mode; |
40 | 40 | ||
41 | /** | 41 | /** |
42 | * Solver handle. FIXME: TYPE!? | 42 | * Solver handle. |
43 | */ | 43 | */ |
44 | static void *solver; | 44 | static struct GNUNET_ATS_SolverFunctions *sf; |
45 | 45 | ||
46 | /** | 46 | /** |
47 | * Solver functions. FIXME. | 47 | * Solver environment. |
48 | */ | 48 | */ |
49 | static struct GNUNET_ATS_PluginEnvironment env; | 49 | static struct GNUNET_ATS_PluginEnvironment env; |
50 | 50 | ||
@@ -67,7 +67,7 @@ GAS_normalized_preference_changed (const struct GNUNET_PeerIdentity *peer, | |||
67 | double pref_rel) | 67 | double pref_rel) |
68 | { | 68 | { |
69 | /* Tell solver about update */ | 69 | /* Tell solver about update */ |
70 | env.sf.s_pref (solver, peer, kind, pref_rel); | 70 | sf->s_pref (sf->cls, peer, kind, pref_rel); |
71 | } | 71 | } |
72 | 72 | ||
73 | 73 | ||
@@ -88,11 +88,11 @@ GAS_normalized_property_changed (struct ATS_Address *address, | |||
88 | GNUNET_ATS_print_property_type (type), | 88 | GNUNET_ATS_print_property_type (type), |
89 | GNUNET_i2s (&address->peer), | 89 | GNUNET_i2s (&address->peer), |
90 | prop_rel); | 90 | prop_rel); |
91 | env.sf.s_address_update_property (solver, | 91 | sf->s_address_update_property (sf->cls, |
92 | address, | 92 | address, |
93 | type, | 93 | type, |
94 | 0, | 94 | 0, |
95 | prop_rel); | 95 | prop_rel); |
96 | } | 96 | } |
97 | 97 | ||
98 | 98 | ||
@@ -453,14 +453,11 @@ GAS_plugins_init (const struct GNUNET_CONFIGURATION_Handle *cfg) | |||
453 | } | 453 | } |
454 | 454 | ||
455 | load_quotas (cfg, quotas_out, quotas_in, GNUNET_ATS_NetworkTypeCount); | 455 | load_quotas (cfg, quotas_out, quotas_in, GNUNET_ATS_NetworkTypeCount); |
456 | env.cls = NULL; | ||
456 | env.info_cb = &solver_info_cb; | 457 | env.info_cb = &solver_info_cb; |
457 | env.info_cb_cls = NULL; | ||
458 | env.bandwidth_changed_cb = &bandwidth_changed_cb; | 458 | env.bandwidth_changed_cb = &bandwidth_changed_cb; |
459 | env.bw_changed_cb_cls = NULL; | ||
460 | env.get_preferences = &GAS_normalization_get_preferences_by_peer; | 459 | env.get_preferences = &GAS_normalization_get_preferences_by_peer; |
461 | env.get_preference_cls = NULL; | ||
462 | env.get_property = &GAS_normalization_get_properties; | 460 | env.get_property = &GAS_normalization_get_properties; |
463 | env.get_property_cls = NULL; | ||
464 | env.cfg = cfg; | 461 | env.cfg = cfg; |
465 | env.stats = GSA_stats; | 462 | env.stats = GSA_stats; |
466 | env.addresses = GSA_addresses; | 463 | env.addresses = GSA_addresses; |
@@ -495,31 +492,13 @@ GAS_plugins_init (const struct GNUNET_CONFIGURATION_Handle *cfg) | |||
495 | "Initializing solver `%s '`%s'\n", | 492 | "Initializing solver `%s '`%s'\n", |
496 | plugin_short, | 493 | plugin_short, |
497 | plugin); | 494 | plugin); |
498 | if (NULL == (solver = GNUNET_PLUGIN_load (plugin, &env))) | 495 | if (NULL == (sf = GNUNET_PLUGIN_load (plugin, &env))) |
499 | { | 496 | { |
500 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 497 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
501 | _("Failed to initialize solver `%s'!\n"), | 498 | _("Failed to initialize solver `%s'!\n"), |
502 | plugin); | 499 | plugin); |
503 | return GNUNET_SYSERR; | 500 | return GNUNET_SYSERR; |
504 | } | 501 | } |
505 | |||
506 | |||
507 | GNUNET_assert (NULL != env.sf.s_add); | ||
508 | GNUNET_assert (NULL != env.sf.s_address_update_property); | ||
509 | GNUNET_assert (NULL != env.sf.s_get); | ||
510 | GNUNET_assert (NULL != env.sf.s_get_stop); | ||
511 | GNUNET_assert (NULL != env.sf.s_pref); | ||
512 | GNUNET_assert (NULL != env.sf.s_feedback); | ||
513 | GNUNET_assert (NULL != env.sf.s_del); | ||
514 | GNUNET_assert (NULL != env.sf.s_bulk_start); | ||
515 | GNUNET_assert (NULL != env.sf.s_bulk_stop); | ||
516 | |||
517 | if (NULL == solver) | ||
518 | { | ||
519 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
520 | _("Failed to initialize solver!\n")); | ||
521 | return GNUNET_SYSERR; | ||
522 | } | ||
523 | return GNUNET_OK; | 502 | return GNUNET_OK; |
524 | } | 503 | } |
525 | 504 | ||
@@ -531,8 +510,8 @@ void | |||
531 | GAS_plugins_done () | 510 | GAS_plugins_done () |
532 | { | 511 | { |
533 | GNUNET_PLUGIN_unload (plugin, | 512 | GNUNET_PLUGIN_unload (plugin, |
534 | solver); | 513 | sf); |
535 | solver = NULL; | 514 | sf = NULL; |
536 | GNUNET_free (plugin); | 515 | GNUNET_free (plugin); |
537 | plugin = NULL; | 516 | plugin = NULL; |
538 | } | 517 | } |
@@ -544,12 +523,12 @@ GAS_plugin_new_address (struct ATS_Address *new_address, | |||
544 | const struct GNUNET_ATS_Information *atsi, | 523 | const struct GNUNET_ATS_Information *atsi, |
545 | uint32_t atsi_count) | 524 | uint32_t atsi_count) |
546 | { | 525 | { |
547 | env.sf.s_add (solver, new_address, addr_net); | 526 | sf->s_add (sf->cls, new_address, addr_net); |
548 | env.sf.s_bulk_start (solver); | 527 | sf->s_bulk_start (sf->cls); |
549 | GAS_normalization_normalize_property (new_address, | 528 | GAS_normalization_normalize_property (new_address, |
550 | atsi, | 529 | atsi, |
551 | atsi_count); | 530 | atsi_count); |
552 | env.sf.s_bulk_stop (solver); | 531 | sf->s_bulk_stop (sf->cls); |
553 | } | 532 | } |
554 | 533 | ||
555 | 534 | ||
@@ -558,18 +537,18 @@ GAS_plugin_update_address (struct ATS_Address *address, | |||
558 | const struct GNUNET_ATS_Information *atsi, | 537 | const struct GNUNET_ATS_Information *atsi, |
559 | uint32_t atsi_count) | 538 | uint32_t atsi_count) |
560 | { | 539 | { |
561 | env.sf.s_bulk_start (solver); | 540 | sf->s_bulk_start (sf->cls); |
562 | GAS_normalization_normalize_property (address, | 541 | GAS_normalization_normalize_property (address, |
563 | atsi, | 542 | atsi, |
564 | atsi_count); | 543 | atsi_count); |
565 | env.sf.s_bulk_stop (solver); | 544 | sf->s_bulk_stop (sf->cls); |
566 | } | 545 | } |
567 | 546 | ||
568 | 547 | ||
569 | void | 548 | void |
570 | GAS_plugin_delete_address (struct ATS_Address *address) | 549 | GAS_plugin_delete_address (struct ATS_Address *address) |
571 | { | 550 | { |
572 | env.sf.s_del (solver, address, GNUNET_NO); | 551 | sf->s_del (sf->cls, address, GNUNET_NO); |
573 | } | 552 | } |
574 | 553 | ||
575 | 554 | ||
@@ -579,10 +558,10 @@ GAS_plugin_update_preferences (void *client, | |||
579 | enum GNUNET_ATS_PreferenceKind kind, | 558 | enum GNUNET_ATS_PreferenceKind kind, |
580 | float score_abs) | 559 | float score_abs) |
581 | { | 560 | { |
582 | env.sf.s_bulk_start (solver); | 561 | sf->s_bulk_start (sf->cls); |
583 | /* Tell normalization about change, normalization will call callback if preference changed */ | 562 | /* Tell normalization about change, normalization will call callback if preference changed */ |
584 | GAS_normalization_normalize_preference (client, peer, kind, score_abs); | 563 | GAS_normalization_normalize_preference (client, peer, kind, score_abs); |
585 | env.sf.s_bulk_stop (solver); | 564 | sf->s_bulk_stop (sf->cls); |
586 | } | 565 | } |
587 | 566 | ||
588 | 567 | ||
@@ -593,7 +572,7 @@ GAS_plugin_preference_feedback (void *application, | |||
593 | enum GNUNET_ATS_PreferenceKind kind, | 572 | enum GNUNET_ATS_PreferenceKind kind, |
594 | float score_abs) | 573 | float score_abs) |
595 | { | 574 | { |
596 | env.sf.s_feedback (solver, | 575 | sf->s_feedback (sf->cls, |
597 | application, | 576 | application, |
598 | peer, | 577 | peer, |
599 | scope, | 578 | scope, |
@@ -605,14 +584,14 @@ GAS_plugin_preference_feedback (void *application, | |||
605 | void | 584 | void |
606 | GAS_plugin_solver_lock () | 585 | GAS_plugin_solver_lock () |
607 | { | 586 | { |
608 | env.sf.s_bulk_start (solver); | 587 | sf->s_bulk_start (sf->cls); |
609 | } | 588 | } |
610 | 589 | ||
611 | 590 | ||
612 | void | 591 | void |
613 | GAS_plugin_solver_unlock () | 592 | GAS_plugin_solver_unlock () |
614 | { | 593 | { |
615 | env.sf.s_bulk_start (solver); | 594 | sf->s_bulk_start (sf->cls); |
616 | } | 595 | } |
617 | 596 | ||
618 | 597 | ||
@@ -621,7 +600,7 @@ GAS_plugin_request_connect_start (const struct GNUNET_PeerIdentity *pid) | |||
621 | { | 600 | { |
622 | const struct ATS_Address *aa; | 601 | const struct ATS_Address *aa; |
623 | 602 | ||
624 | aa = env.sf.s_get (solver, pid); | 603 | aa = sf->s_get (sf->cls, pid); |
625 | if (NULL == aa) | 604 | if (NULL == aa) |
626 | { | 605 | { |
627 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 606 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
@@ -648,7 +627,7 @@ GAS_plugin_request_connect_start (const struct GNUNET_PeerIdentity *pid) | |||
648 | void | 627 | void |
649 | GAS_plugin_request_connect_stop (const struct GNUNET_PeerIdentity *pid) | 628 | GAS_plugin_request_connect_stop (const struct GNUNET_PeerIdentity *pid) |
650 | { | 629 | { |
651 | env.sf.s_get_stop (solver, pid); | 630 | sf->s_get_stop (sf->cls, pid); |
652 | } | 631 | } |
653 | 632 | ||
654 | 633 | ||