@@ -20,12 +20,12 @@ use std::cell::RefCell;
2020use std:: io;
2121use std:: ops:: Deref ;
2222use std:: os:: unix:: io:: { AsRawFd , RawFd } ;
23- use std:: rc :: { Rc , Weak } ;
23+ use std:: sync :: { Arc , Weak } ;
2424use std:: task:: { Context , Poll } ;
2525
2626#[ derive( Clone ) ]
2727pub ( crate ) struct Handle {
28- pub ( super ) inner : Rc < Driver > ,
28+ pub ( super ) inner : Arc < Driver > ,
2929}
3030
3131//SAFETY: Handle is only used in RuntimeContext,
@@ -45,7 +45,7 @@ unsafe impl Sync for WeakHandle {}
4545impl Handle {
4646 pub ( crate ) fn new ( b : & crate :: Builder ) -> io:: Result < Self > {
4747 Ok ( Self {
48- inner : Rc :: new ( Driver :: new ( b) ?) ,
48+ inner : Arc :: new ( Driver :: new ( b) ?) ,
4949 } )
5050 }
5151
@@ -59,19 +59,27 @@ impl Handle {
5959 }
6060
6161 pub ( crate ) fn flush ( & self ) -> io:: Result < usize > {
62- self . inner . as_ref ( ) . uring . submit ( )
62+ self . inner . as_ref ( ) . flush ( )
63+ }
64+
65+ pub ( crate ) fn call_on_thread_park ( & self ) {
66+ self . inner . as_ref ( ) . call_on_thread_park ( ) ;
67+ }
68+
69+ pub ( crate ) fn set_on_thread_park ( & self , callback : fn ( ) ) {
70+ self . inner . as_ref ( ) . set_on_thread_park ( callback) ;
6371 }
6472
6573 pub ( crate ) fn register_buffers (
6674 & mut self ,
67- buffers : Rc < RefCell < dyn FixedBuffers > > ,
75+ buffers : Arc < RefCell < dyn FixedBuffers > > ,
6876 ) -> io:: Result < ( ) > {
69- let inner = Rc :: get_mut ( & mut self . inner ) . unwrap ( ) ;
77+ let inner = Arc :: get_mut ( & mut self . inner ) . unwrap ( ) ;
7078 inner. register_buffers ( buffers)
7179 }
7280
7381 pub ( crate ) fn unregister_buffers ( & mut self ) -> io:: Result < ( ) > {
74- let inner = Rc :: get_mut ( & mut self . inner ) . unwrap ( ) ;
82+ let inner = Arc :: get_mut ( & mut self . inner ) . unwrap ( ) ;
7583 inner. unregister_buffers ( )
7684 }
7785
@@ -152,7 +160,7 @@ impl AsRawFd for Handle {
152160impl From < Driver > for Handle {
153161 fn from ( driver : Driver ) -> Self {
154162 Self {
155- inner : Rc :: new ( driver) ,
163+ inner : Arc :: new ( driver) ,
156164 }
157165 }
158166}
@@ -163,7 +171,7 @@ where
163171{
164172 fn from ( handle : T ) -> Self {
165173 Self {
166- inner : Rc :: downgrade ( & handle. inner ) ,
174+ inner : Arc :: downgrade ( & handle. inner ) ,
167175 }
168176 }
169177}
0 commit comments