@@ -12,11 +12,8 @@ use std::ops::{Deref, DerefMut};
1212use std:: sync:: Arc ;
1313use std:: time:: Instant ;
1414use tokio:: sync:: mpsc;
15- use tokio:: sync:: mpsc:: Sender ;
1615use zip:: result:: ZipError ;
17- use zip:: ZipArchive ;
1816
19- /// Builders of [AsmServer]
2017impl AsmServer {
2118 pub fn new ( ) -> Self {
2219 Self {
@@ -32,31 +29,12 @@ impl AsmServer {
3229 pub fn smart_open ( server : ServerMut , path : & str , render_target : AppContainer ) {
3330 let context = FileOpenContext { path : path. to_string ( ) , start_time : Instant :: now ( ) } ;
3431 new_tokio_thread ( |runtime| async move {
35- let ( sender, receiver) = mpsc:: channel :: < ServerMessage > ( 5 ) ;
36-
3732 let new_server = AsmServer :: new ( ) ;
3833 * server. lock ( ) = Some ( new_server. clone ( ) ) ;
3934
40- let server_for_receiver = server. clone ( ) ;
41- let render_target_for_receiver = render_target. clone ( ) ;
42- runtime. spawn ( async move {
43- let server = & server_for_receiver;
44- let render_target = & render_target_for_receiver;
45-
46- let mut receiver = receiver;
47- while let Some ( msg) = receiver. recv ( ) . await {
48- let mut server = server. lock ( ) ;
49- let server_ref = server. deref_mut ( ) ;
50- let Some ( server_ref) = server_ref else { continue } ;
51- match msg {
52- ServerMessage :: Progress ( progress) => {
53- server_ref. loading_state . loading_progress = progress. progress ;
54- server_ref. loading_state . in_loading = progress. in_loading ;
55- server_ref. on_progress_update ( & render_target) ;
56- }
57- }
58- }
59- } ) ;
35+ let sender = Self :: create_message_handler (
36+ & server, & runtime, & render_target,
37+ ) ;
6038
6139 let path = & context. path ;
6240 let accessor = new_server. accessor . clone ( ) ;
@@ -80,23 +58,6 @@ impl AsmServer {
8058 new_server. on_file_opened ( & context, render_target) ;
8159 } ) ;
8260 }
83-
84- pub async fn from_apk (
85- apk_content : impl Read + Seek ,
86- sender : Sender < ServerMessage > ,
87- accessor : AccessorMut ,
88- ) -> Result < ( ) , OpenFileError > {
89- let zip = ZipArchive :: new ( apk_content)
90- . map_err ( OpenFileError :: LoadZip ) ?;
91- let apk_accessor = read_apk ( zip, sender) . await ?;
92- // safe unwrap, no other places in current thread will access it.
93- * accessor. lock ( ) = Some ( AccessorEnum :: Apk ( apk_accessor) ) ;
94- Ok ( ( ) )
95- }
96-
97- pub fn from_dex ( dex_path : & str ) -> Self {
98- unimplemented ! ( )
99- }
10061}
10162
10263
0 commit comments