11use crate :: messages:: prelude:: * ;
22use graph_craft:: application_io:: resource:: { LoadResource , ResourceFuture , ResourceHash , ResourceStorage } ;
3- use std:: sync:: { Arc , RwLock } ;
3+ use std:: sync:: Arc ;
44
55#[ derive( Clone ) ]
66pub struct ResourcesHandle {
7- inner : Arc < RwLock < Box < dyn ResourceStorage > > > ,
7+ inner : Arc < dyn ResourceStorage > ,
88}
99
1010impl LoadResource for ResourcesHandle {
11- fn load ( & self , hash : ResourceHash ) -> ResourceFuture {
12- let guard = self . inner . read ( ) . unwrap ( ) ;
13- guard. load ( hash)
11+ fn load ( & self , hash : ResourceHash ) -> ResourceFuture < ' _ > {
12+ self . inner . load ( hash)
1413 }
1514}
1615
1716#[ derive( ExtractField ) ]
1817pub struct ResourceStorageMessageHandler {
19- storage : Option < Arc < RwLock < Box < dyn ResourceStorage > > > > ,
18+ storage : Option < Arc < dyn ResourceStorage > > ,
2019}
2120
2221impl ResourceStorageMessageHandler {
23- pub fn new ( resource_storage : Box < dyn ResourceStorage > ) -> Self {
24- Self {
25- storage : Some ( Arc :: new ( RwLock :: new ( resource_storage) ) ) ,
26- }
22+ pub fn new ( resource_storage : Arc < dyn ResourceStorage > ) -> Self {
23+ Self { storage : Some ( resource_storage) }
2724 }
2825
2926 pub fn resources ( & self ) -> Box < dyn LoadResource > {
@@ -48,7 +45,7 @@ impl Default for ResourceStorageMessageHandler {
4845 #[ cfg( test) ]
4946 fn default ( ) -> Self {
5047 Self {
51- storage : Some ( Arc :: new ( RwLock :: new ( Box :: new ( graph_craft:: application_io:: resource:: HashMapResourceStorage :: new ( ) ) ) ) ) ,
48+ storage : Some ( Arc :: new ( graph_craft:: application_io:: resource:: HashMapResourceStorage :: new ( ) ) ) ,
5249 }
5350 }
5451}
@@ -63,7 +60,6 @@ impl MessageHandler<ResourceStorageMessage, ResourceStorageMessageContext> for R
6360 log:: error!( "Received resource message but storage is not initialized" ) ;
6461 return ;
6562 } ;
66- let mut storage = storage. write ( ) . unwrap ( ) ;
6763
6864 match message {
6965 ResourceStorageMessage :: Store { data } => {
0 commit comments