@@ -653,11 +653,6 @@ impl<T: SourceType> SourceBuilder<T> {
653
653
}
654
654
655
655
impl < T > SourceBuilder < T > {
656
- /// Sets a registration handler on the source.
657
- pub fn registration_handler < F > ( & mut self , handler : F ) where F : ' static + Send + FnOnce ( Source < T > ) {
658
- self . source_ . set_registration_handler ( handler) ;
659
- }
660
-
661
656
/// Sets a cancelation handler on the source.
662
657
pub fn cancel_handler < F > ( & mut self , handler : F ) where F : ' static + Send + FnOnce ( Source < T > ) {
663
658
self . source_ . set_cancel_handler ( handler) ;
@@ -716,7 +711,6 @@ impl<T> Drop for BoxedOnceHandler<T> {
716
711
}
717
712
718
713
struct SourceContext < T > {
719
- registration : Option < BoxedOnceHandler < Source < T > > > ,
720
714
cancel : Option < BoxedOnceHandler < Source < T > > > ,
721
715
event : Option < Box < Fn ( Source < T > ) + Send > > ,
722
716
source_ptr : dispatch_source_t , // unretained
@@ -725,7 +719,6 @@ struct SourceContext<T> {
725
719
impl < T > SourceContext < T > {
726
720
fn new ( source : dispatch_source_t ) -> Self {
727
721
SourceContext {
728
- registration : None ,
729
722
cancel : None ,
730
723
event : None ,
731
724
source_ptr : source,
@@ -773,24 +766,6 @@ impl<T> Source<T> {
773
766
& mut * ( dispatch_get_context ( self . ptr ) as * mut SourceContext < T > )
774
767
}
775
768
776
- fn set_registration_handler < F > ( & self , handler : F )
777
- where F : ' static + Send + FnOnce ( Source < T > )
778
- {
779
- // is only run once per source
780
- extern fn source_handler < F : FnOnce ( Source < T > ) , T > ( ptr : * mut c_void ) {
781
- unsafe {
782
- let ctx = ptr as * mut SourceContext < T > ;
783
- if let Some ( f) = ( * ctx) . registration . take ( ) {
784
- f. call ( Source :: from_raw ( ( * ctx) . source_ptr ) ) ;
785
- }
786
- }
787
- }
788
- unsafe {
789
- self . context ( ) . registration = Some ( BoxedOnceHandler :: new ( handler) ) ;
790
- dispatch_source_set_registration_handler_f ( self . ptr , source_handler :: < F , T > ) ;
791
- }
792
- }
793
-
794
769
fn set_cancel_handler < F > ( & self , handler : F )
795
770
where F : ' static + Send + FnOnce ( Source < T > )
796
771
{
@@ -1103,14 +1078,11 @@ mod tests {
1103
1078
1104
1079
#[ test]
1105
1080
fn test_source ( ) {
1106
- let reg_barrier = Arc :: new ( Barrier :: new ( 2 ) ) ;
1107
1081
let event_barrier = Arc :: new ( Barrier :: new ( 2 ) ) ;
1108
1082
let cancel_barrier = Arc :: new ( Barrier :: new ( 2 ) ) ;
1109
1083
let num = Arc :: new ( Mutex :: new ( 0 ) ) ;
1110
1084
let sum = Arc :: new ( Mutex :: new ( 0 ) ) ;
1111
1085
1112
- let reg_num = num. clone ( ) ;
1113
- let reg_handler_barrier = reg_barrier. clone ( ) ;
1114
1086
let ev_num = num. clone ( ) ;
1115
1087
let ev_sum = sum. clone ( ) ;
1116
1088
let event_handler_barrier = event_barrier. clone ( ) ;
@@ -1119,26 +1091,20 @@ mod tests {
1119
1091
1120
1092
let q = Queue :: create ( "" , QueueAttribute :: Serial ) ;
1121
1093
let mut sb = SourceBuilder :: new ( source:: DataAdd , & q) . unwrap ( ) ;
1122
- sb. registration_handler ( move |_| {
1123
- let mut num = reg_num. lock ( ) . unwrap ( ) ;
1124
- * num |= 1 ;
1125
- reg_handler_barrier. wait ( ) ;
1126
- } ) ;
1127
1094
sb. event_handler ( move |source| {
1128
1095
let mut num = ev_num. lock ( ) . unwrap ( ) ;
1129
1096
let mut sum = ev_sum. lock ( ) . unwrap ( ) ;
1130
1097
* sum += source. data ( ) ;
1131
- * num |= 2 ;
1098
+ * num |= 1 ;
1132
1099
event_handler_barrier. wait ( ) ;
1133
1100
} ) ;
1134
1101
sb. cancel_handler ( move |_| {
1135
1102
let mut num = cancel_num. lock ( ) . unwrap ( ) ;
1136
- * num |= 4 ;
1103
+ * num |= 2 ;
1137
1104
cancel_handler_barrier. wait ( ) ;
1138
1105
} ) ;
1139
1106
let source = sb. resume ( ) ;
1140
1107
1141
- reg_barrier. wait ( ) ;
1142
1108
source. merge_data ( 3 ) ;
1143
1109
event_barrier. wait ( ) ;
1144
1110
assert_eq ! ( * sum. lock( ) . unwrap( ) , 3 ) ;
@@ -1147,7 +1113,7 @@ mod tests {
1147
1113
assert_eq ! ( * sum. lock( ) . unwrap( ) , 8 ) ;
1148
1114
source. cancel ( ) ;
1149
1115
cancel_barrier. wait ( ) ;
1150
- assert_eq ! ( * num. lock( ) . unwrap( ) , 7 ) ;
1116
+ assert_eq ! ( * num. lock( ) . unwrap( ) , 3 ) ;
1151
1117
}
1152
1118
1153
1119
#[ test]
0 commit comments