diff options
author | lurchi <lurchi@strangeplace.net> | 2017-11-18 11:10:27 +0100 |
---|---|---|
committer | lurchi <lurchi@strangeplace.net> | 2017-11-18 11:10:27 +0100 |
commit | 08d1fb4ad8581fca79dcc35e18c5d086fd11821f (patch) | |
tree | 16faaecb50fbdaf8bc618edbe7f5cc5e1611b95d /src/psyc/psyc_api.c | |
parent | 51a27f583432d57949e3f9ea4c5f3813e9589e42 (diff) | |
download | gnunet-08d1fb4ad8581fca79dcc35e18c5d086fd11821f.tar.gz gnunet-08d1fb4ad8581fca79dcc35e18c5d086fd11821f.zip |
Introduce PART/PART_ACK messages (tests will fail until multicast module is adapted, too)
Diffstat (limited to 'src/psyc/psyc_api.c')
-rw-r--r-- | src/psyc/psyc_api.c | 82 |
1 files changed, 54 insertions, 28 deletions
diff --git a/src/psyc/psyc_api.c b/src/psyc/psyc_api.c index e7790d201..cdb9ce881 100644 --- a/src/psyc/psyc_api.c +++ b/src/psyc/psyc_api.c | |||
@@ -555,6 +555,10 @@ handle_slave_join_decision (void *cls, | |||
555 | static void | 555 | static void |
556 | channel_cleanup (struct GNUNET_PSYC_Channel *chn) | 556 | channel_cleanup (struct GNUNET_PSYC_Channel *chn) |
557 | { | 557 | { |
558 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
559 | "cleaning up channel %p\n", | ||
560 | chn); | ||
561 | GNUNET_assert (0); | ||
558 | if (NULL != chn->tmit) | 562 | if (NULL != chn->tmit) |
559 | { | 563 | { |
560 | GNUNET_PSYC_transmit_destroy (chn->tmit); | 564 | GNUNET_PSYC_transmit_destroy (chn->tmit); |
@@ -585,33 +589,43 @@ channel_cleanup (struct GNUNET_PSYC_Channel *chn) | |||
585 | 589 | ||
586 | 590 | ||
587 | static void | 591 | static void |
588 | channel_disconnect (struct GNUNET_PSYC_Channel *chn, | 592 | handle_channel_part_ack (void *cls, |
589 | GNUNET_ContinuationCallback cb, | 593 | const struct GNUNET_MessageHeader *msg) |
590 | void *cls) | ||
591 | { | 594 | { |
592 | chn->is_disconnecting = GNUNET_YES; | 595 | struct GNUNET_PSYC_Channel *chn = cls; |
593 | chn->disconnect_cb = cb; | ||
594 | chn->disconnect_cls = cls; | ||
595 | 596 | ||
596 | if (NULL != chn->mq) | 597 | channel_cleanup (chn); |
597 | { | ||
598 | struct GNUNET_MQ_Envelope *env = GNUNET_MQ_get_last_envelope (chn->mq); | ||
599 | if (NULL != env) | ||
600 | { | ||
601 | GNUNET_MQ_notify_sent (env, (GNUNET_SCHEDULER_TaskCallback) channel_cleanup, chn); | ||
602 | } | ||
603 | else | ||
604 | { | ||
605 | channel_cleanup (chn); | ||
606 | } | ||
607 | } | ||
608 | else | ||
609 | { | ||
610 | channel_cleanup (chn); | ||
611 | } | ||
612 | } | 598 | } |
613 | 599 | ||
614 | 600 | ||
601 | //static void | ||
602 | //channel_disconnect (struct GNUNET_PSYC_Channel *chn, | ||
603 | // GNUNET_ContinuationCallback cb, | ||
604 | // void *cls) | ||
605 | //{ | ||
606 | // chn->is_disconnecting = GNUNET_YES; | ||
607 | // chn->disconnect_cb = cb; | ||
608 | // chn->disconnect_cls = cls; | ||
609 | // | ||
610 | // if (NULL != chn->mq) | ||
611 | // { | ||
612 | // struct GNUNET_MQ_Envelope *env = GNUNET_MQ_get_last_envelope (chn->mq); | ||
613 | // if (NULL != env) | ||
614 | // { | ||
615 | // GNUNET_MQ_notify_sent (env, (GNUNET_SCHEDULER_TaskCallback) channel_cleanup, chn); | ||
616 | // } | ||
617 | // else | ||
618 | // { | ||
619 | // channel_cleanup (chn); | ||
620 | // } | ||
621 | // } | ||
622 | // else | ||
623 | // { | ||
624 | // channel_cleanup (chn); | ||
625 | // } | ||
626 | //} | ||
627 | |||
628 | |||
615 | /*** MASTER ***/ | 629 | /*** MASTER ***/ |
616 | 630 | ||
617 | 631 | ||
@@ -671,6 +685,10 @@ master_connect (struct GNUNET_PSYC_Master *mst) | |||
671 | GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST, | 685 | GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST, |
672 | struct GNUNET_PSYC_JoinRequestMessage, | 686 | struct GNUNET_PSYC_JoinRequestMessage, |
673 | mst), | 687 | mst), |
688 | GNUNET_MQ_hd_fixed_size (channel_part_ack, | ||
689 | GNUNET_MESSAGE_TYPE_PSYC_PART_ACK, | ||
690 | struct GNUNET_MessageHeader, | ||
691 | chn), | ||
674 | GNUNET_MQ_hd_var_size (channel_message, | 692 | GNUNET_MQ_hd_var_size (channel_message, |
675 | GNUNET_MESSAGE_TYPE_PSYC_MESSAGE, | 693 | GNUNET_MESSAGE_TYPE_PSYC_MESSAGE, |
676 | struct GNUNET_PSYC_MessageHeader, | 694 | struct GNUNET_PSYC_MessageHeader, |
@@ -780,10 +798,12 @@ GNUNET_PSYC_master_stop (struct GNUNET_PSYC_Master *mst, | |||
780 | void *stop_cls) | 798 | void *stop_cls) |
781 | { | 799 | { |
782 | struct GNUNET_PSYC_Channel *chn = &mst->chn; | 800 | struct GNUNET_PSYC_Channel *chn = &mst->chn; |
801 | struct GNUNET_MQ_Envelope *env; | ||
783 | 802 | ||
784 | /* FIXME: send msg to service */ | 803 | chn->disconnect_cb = stop_cb; |
785 | 804 | chn->disconnect_cls = stop_cls; | |
786 | channel_disconnect (chn, stop_cb, stop_cls); | 805 | env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_PSYC_PART_REQUEST); |
806 | GNUNET_MQ_send (chn->mq, env); | ||
787 | } | 807 | } |
788 | 808 | ||
789 | 809 | ||
@@ -971,6 +991,10 @@ slave_connect (struct GNUNET_PSYC_Slave *slv) | |||
971 | GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION, | 991 | GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION, |
972 | struct GNUNET_PSYC_JoinDecisionMessage, | 992 | struct GNUNET_PSYC_JoinDecisionMessage, |
973 | slv), | 993 | slv), |
994 | GNUNET_MQ_hd_fixed_size (channel_part_ack, | ||
995 | GNUNET_MESSAGE_TYPE_PSYC_PART_ACK, | ||
996 | struct GNUNET_MessageHeader, | ||
997 | chn), | ||
974 | GNUNET_MQ_hd_var_size (channel_message, | 998 | GNUNET_MQ_hd_var_size (channel_message, |
975 | GNUNET_MESSAGE_TYPE_PSYC_MESSAGE, | 999 | GNUNET_MESSAGE_TYPE_PSYC_MESSAGE, |
976 | struct GNUNET_PSYC_MessageHeader, | 1000 | struct GNUNET_PSYC_MessageHeader, |
@@ -1118,10 +1142,12 @@ GNUNET_PSYC_slave_part (struct GNUNET_PSYC_Slave *slv, | |||
1118 | void *part_cls) | 1142 | void *part_cls) |
1119 | { | 1143 | { |
1120 | struct GNUNET_PSYC_Channel *chn = &slv->chn; | 1144 | struct GNUNET_PSYC_Channel *chn = &slv->chn; |
1145 | struct GNUNET_MQ_Envelope *env; | ||
1121 | 1146 | ||
1122 | /* FIXME: send msg to service */ | 1147 | chn->disconnect_cb = part_cb; |
1123 | 1148 | chn->disconnect_cls = part_cls; | |
1124 | channel_disconnect (chn, part_cb, part_cls); | 1149 | env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_PSYC_PART_REQUEST); |
1150 | GNUNET_MQ_send (chn->mq, env); | ||
1125 | } | 1151 | } |
1126 | 1152 | ||
1127 | 1153 | ||