@@ -16,7 +16,7 @@ use std::collections::BTreeMap;
1616use std:: collections:: btree_map:: IntoValues ;
1717use std:: ops:: { Add , RangeBounds } ;
1818use std:: sync:: Arc ;
19- use tokio :: sync:: { RwLock , RwLockReadGuard } ;
19+ use std :: sync:: { RwLock , RwLockReadGuard } ;
2020use tokio_util:: sync:: CancellationToken ;
2121use tracing:: { debug, trace, warn} ;
2222
@@ -58,15 +58,15 @@ impl DatabaseLayer {
5858 }
5959
6060 /// Load an existing or create a new `RealmDatabase` for the given realm.
61- pub async fn realm ( & self , name : RealmName ) -> Result < RealmDatabase > {
61+ pub fn realm ( & self , name : RealmName ) -> Result < RealmDatabase > {
6262 {
63- let inner = self . inner . read ( ) . await ;
63+ let inner = self . inner . read ( ) . unwrap ( ) ;
6464 if let Some ( db) = inner. get ( & name) {
6565 return Ok ( db. clone ( ) ) ;
6666 }
6767 }
6868
69- let mut inner = self . inner . write ( ) . await ;
69+ let mut inner = self . inner . write ( ) . unwrap ( ) ;
7070
7171 let db = if let Some ( path) = self . config . get_storage_dir ( ) ? {
7272 let path = path. join ( format ! ( "{name}.db" ) ) ;
@@ -175,7 +175,7 @@ impl RealmDatabase {
175175 break ;
176176 }
177177 event = channel. recv( ) => match event {
178- Some ( event) => resident_clone. handle_event( event) . await ,
178+ Some ( event) => resident_clone. handle_event( event) ,
179179 None => break ,
180180
181181 }
@@ -247,7 +247,7 @@ impl RealmDatabase {
247247 break ;
248248 }
249249 event = channel. recv( ) => match event {
250- Some ( event) => resident_clone. handle_event( event) . await ,
250+ Some ( event) => resident_clone. handle_event( event) ,
251251 None => {
252252 break ;
253253 }
@@ -487,19 +487,19 @@ impl<T: Data> Drop for Resident<T> {
487487 }
488488}
489489
490- impl < T : Data + ' static > Resident < T > {
491- pub async fn read ( & self ) -> RwLockReadGuard < ' _ , T > {
492- self . inner . read ( ) . await
490+ impl < T : Data > Resident < T > {
491+ pub fn read ( & self ) -> RwLockReadGuard < ' _ , T > {
492+ self . inner . read ( ) . unwrap ( )
493493 }
494494
495- async fn handle_event ( & self , event : Event ) {
495+ fn handle_event ( & self , event : Event ) {
496496 trace ! ( event = ?event, "Handling event" ) ;
497497 match event {
498498 Event :: Insert ( data) => { }
499499 Event :: Update ( data) => match data. inner_new ( ) {
500500 Ok ( d) => {
501501 // TODO check revision and discard updates from `update`
502- let mut c = self . inner . write ( ) . await ;
502+ let mut c = self . inner . write ( ) . unwrap ( ) ;
503503 * c = d;
504504 }
505505 Err ( _) => { }
@@ -510,11 +510,11 @@ impl<T: Data + 'static> Resident<T> {
510510}
511511
512512impl < T : Data > Resident < T > {
513- pub async fn update < F > ( & self , mutator : F ) -> Result < ( ) >
513+ pub fn update < F > ( & self , mutator : F ) -> Result < ( ) >
514514 where
515515 F : Fn ( & mut T ) -> Result < ( ) > ,
516516 {
517- let mut previous = self . inner . write ( ) . await ;
517+ let mut previous = self . inner . write ( ) . unwrap ( ) ;
518518 let mut next = previous. clone ( ) ;
519519 mutator ( & mut next) ?;
520520
@@ -550,8 +550,8 @@ impl<T: Data> Resident<T> {
550550 Ok ( ( ) )
551551 }
552552
553- pub async fn history ( & self , range : impl RangeBounds < DataCreation > ) -> Result < Vec < T > > {
554- let revision_id = self . inner . read ( ) . await . id ( ) & 0x0000_0000 ;
553+ pub fn history ( & self , range : impl RangeBounds < DataCreation > ) -> Result < Vec < T > > {
554+ let revision_id = self . read ( ) . id ( ) & 0x0000_0000 ;
555555
556556 let r = self . db . r_transaction ( ) ?;
557557
@@ -614,7 +614,7 @@ mod test_resident {
614614 }
615615
616616 // Resident should reflect "test 9"
617- assert_eq ! ( res. read( ) . await . a, "test 9" ) ;
617+ assert_eq ! ( res. read( ) . a, "test 9" ) ;
618618
619619 // Database should reflect "test 9"
620620 {
@@ -628,7 +628,7 @@ mod test_resident {
628628 {
629629 let rw = db. rw_transaction ( ) ?;
630630 rw. upsert ( TestData {
631- _id : res. read ( ) . await . _id ,
631+ _id : res. read ( ) . _id ,
632632 _revision : DataRevision :: default ( ) ,
633633 _creation : DataCreation :: default ( ) ,
634634 a : "test 10" . into ( ) ,
@@ -639,7 +639,7 @@ mod test_resident {
639639
640640 // Watch should reflect "test 10" after a while
641641 sleep ( Duration :: from_secs ( 1 ) ) . await ;
642- assert_eq ! ( res. read( ) . await . a, "test 10" ) ;
642+ assert_eq ! ( res. read( ) . a, "test 10" ) ;
643643
644644 Ok ( ( ) )
645645 }
@@ -698,7 +698,7 @@ impl<T: Data> Drop for ResidentVec<T> {
698698}
699699
700700impl < T : Data > ResidentVec < T > {
701- async fn handle_event ( & self , event : Event ) {
701+ fn handle_event ( & self , event : Event ) {
702702 trace ! ( event = ?event, "Handling event" ) ;
703703 match event {
704704 Event :: Insert ( data) => match data. inner :: < T > ( ) {
@@ -718,7 +718,7 @@ impl<T: Data> ResidentVec<T> {
718718 }
719719 }
720720
721- let mut c = self . inner . write ( ) . await ;
721+ let mut c = self . inner . write ( ) . unwrap ( ) ;
722722 ( * c) . insert (
723723 d. id ( ) ,
724724 Resident {
@@ -732,10 +732,10 @@ impl<T: Data> ResidentVec<T> {
732732 } ,
733733 Event :: Update ( data) => match data. inner_new :: < T > ( ) {
734734 Ok ( d) => {
735- let c = self . inner . write ( ) . await ;
735+ let c = self . inner . write ( ) . unwrap ( ) ;
736736 match ( * c) . get ( & d. id ( ) ) {
737737 Some ( r) => {
738- let mut r = r. inner . write ( ) . await ;
738+ let mut r = r. inner . write ( ) . unwrap ( ) ;
739739 * r = d;
740740 }
741741 // Got an update before insert?
@@ -753,19 +753,19 @@ impl<T: Data> ResidentVec<T> {
753753impl < T : Data > ResidentVec < T > {
754754 /// Returns the number of elements in the vector, also referred to
755755 /// as its 'length'.
756- pub async fn len ( & self ) -> usize {
757- self . inner . read ( ) . await . len ( )
756+ pub fn len ( & self ) -> usize {
757+ self . inner . read ( ) . unwrap ( ) . len ( )
758758 }
759759
760760 /// Appends an element to the back of a collection.
761- pub async fn push ( & self , value : T ) -> Result < Resident < T > > {
761+ pub fn push ( & self , value : T ) -> Result < Resident < T > > {
762762 let id = value. id ( ) ;
763763
764764 {
765765 let rw = self . db . rw_transaction ( ) ?;
766766
767767 // Check for id collision
768- if self . inner . read ( ) . await . get ( & id) . is_some ( ) {
768+ if self . inner . read ( ) . unwrap ( ) . get ( & id) . is_some ( ) {
769769 bail ! ( "Duplicate primary key" ) ;
770770 }
771771
@@ -776,18 +776,18 @@ impl<T: Data> ResidentVec<T> {
776776
777777 // TODO don't busy wait
778778 loop {
779- if let Some ( value) = self . inner . read ( ) . await . get ( & id) {
779+ if let Some ( value) = self . inner . read ( ) . unwrap ( ) . get ( & id) {
780780 return Ok ( value. clone ( ) ) ;
781781 }
782782 }
783783 }
784784
785- pub async fn iter ( & self ) -> IntoValues < DataIdentifier , Resident < T > > {
786- self . inner . read ( ) . await . clone ( ) . into_values ( )
785+ pub fn iter ( & self ) -> IntoValues < DataIdentifier , Resident < T > > {
786+ self . inner . read ( ) . unwrap ( ) . clone ( ) . into_values ( )
787787 }
788788
789- pub async fn stream ( & self ) -> futures:: stream:: Iter < IntoValues < DataIdentifier , Resident < T > > > {
790- futures:: stream:: iter ( self . inner . read ( ) . await . clone ( ) . into_values ( ) )
789+ pub fn stream ( & self ) -> futures:: stream:: Iter < IntoValues < DataIdentifier , Resident < T > > > {
790+ futures:: stream:: iter ( self . inner . read ( ) . unwrap ( ) . clone ( ) . into_values ( ) )
791791 }
792792}
793793
@@ -958,7 +958,7 @@ mod test_resident_vec {
958958 {
959959 let rw = db. rw_transaction ( ) ?;
960960 rw. upsert ( TestData {
961- _id : data. read ( ) . await . _id ,
961+ _id : data. read ( ) . _id ,
962962 _revision : DataRevision :: default ( ) ,
963963 _creation : DataCreation :: default ( ) ,
964964 a : "test 10" . into ( ) ,
@@ -969,7 +969,7 @@ mod test_resident_vec {
969969
970970 // Should reflect "test 10" after a while
971971 sleep ( Duration :: from_secs ( 1 ) ) . await ;
972- assert_eq ! ( data. read( ) . await . a, "test 10" ) ;
972+ assert_eq ! ( data. read( ) . a, "test 10" ) ;
973973
974974 Ok ( ( ) )
975975 }
0 commit comments