@@ -84,6 +84,7 @@ def __init__(self):
84
84
self .usb_switches = []
85
85
self .ctrlport = 5556
86
86
self .conport = 5557
87
+ self .dataport = 0
87
88
self .prefix_key = self ._prefix_key_code (DEFAULT_PREFIX_KEY )
88
89
self .is_remote = False
89
90
self .is_server = False
@@ -661,7 +662,20 @@ def storage_close(self, session=None):
661
662
if self .storage is not None :
662
663
self .storage_locked ()
663
664
664
- self .mtda .debug (3 , f"main.storage_close(): { str (result )} " )
665
+ self .mtda .debug (3 , f"main.storage_close(): { result } " )
666
+ return result
667
+
668
+ @Pyro4 .expose
669
+ def storage_flush (self , size , session = None ):
670
+ self .mtda .debug (3 , "main.storage_flush()" )
671
+
672
+ self .session_ping (session )
673
+ if self .storage is None :
674
+ result = False
675
+ else :
676
+ result = self ._writer .flush (size )
677
+
678
+ self .mtda .debug (3 , f"main.storage_flush(): { result } " )
665
679
return result
666
680
667
681
@Pyro4 .expose
@@ -790,6 +804,7 @@ def storage_open(self, session=None):
790
804
791
805
self .session_ping (session )
792
806
owner = self ._storage_owner
807
+ result = None
793
808
status , _ , _ = self .storage_status ()
794
809
795
810
if self .storage is None :
@@ -802,12 +817,13 @@ def storage_open(self, session=None):
802
817
self .storage .open ()
803
818
self ._storage_opened = True
804
819
self ._storage_owner = session
805
- self ._writer .start ()
820
+ result = self ._writer .start (session )
806
821
self ._storage_event (CONSTS .STORAGE .OPENED , session )
807
822
if self .storage is not None :
808
823
self .storage_locked ()
809
824
810
- self .mtda .debug (3 , 'main.storage_open(): success' )
825
+ self .mtda .debug (3 , f'main.storage_open(): { result } ' )
826
+ return result
811
827
812
828
@Pyro4 .expose
813
829
def storage_status (self , session = None ):
@@ -877,42 +893,6 @@ def storage_swap(self, session=None):
877
893
self .mtda .debug (3 , f"main.storage_swap(): { str (result )} " )
878
894
return result
879
895
880
- @Pyro4 .expose
881
- def storage_write (self , data , session = None ):
882
- self .mtda .debug (3 , "main.storage_write()" )
883
-
884
- self .session_ping (session )
885
- if self .storage is None :
886
- raise RuntimeError ('no shared storage' )
887
- elif self ._storage_opened is False :
888
- raise RuntimeError ('shared storage was not opened' )
889
- elif self ._writer .failed is True :
890
- raise RuntimeError ('write or decompression error '
891
- 'from shared storage' )
892
- elif session != self ._storage_owner :
893
- raise RuntimeError ('shared storage in use' )
894
-
895
- import queue
896
- try :
897
- if len (data ) == 0 :
898
- self .mtda .debug (2 , "main.storage_write(): "
899
- "using queued data" )
900
- data = self ._writer_data
901
- self ._writer_data = data
902
- self ._writer .put (data , timeout = 10 )
903
- result = self .blksz
904
- except queue .Full :
905
- self .mtda .debug (2 , "main.storage_write(): "
906
- "queue is full" )
907
- result = 0
908
-
909
- if self ._writer .failed is True :
910
- self .error ('storage_write failed: write or decompression error' )
911
- result = - 1
912
-
913
- self .mtda .debug (3 , f"main.storage_write(): { str (result )} " )
914
- return result
915
-
916
896
def systemd_configure (self ):
917
897
from filecmp import dircmp
918
898
@@ -1467,7 +1447,7 @@ def post_configure_storage(self, storage, config, parser):
1467
1447
self .mtda .debug (3 , "main.post_configure_storage()" )
1468
1448
1469
1449
from mtda .storage .writer import AsyncImageWriter
1470
- self ._writer = AsyncImageWriter (self , storage )
1450
+ self ._writer = AsyncImageWriter (self , storage , self . dataport )
1471
1451
1472
1452
import atexit
1473
1453
atexit .register (self .storage_close )
@@ -1479,6 +1459,8 @@ def load_remote_config(self, parser):
1479
1459
parser .get ('remote' , 'console' , fallback = self .conport ))
1480
1460
self .ctrlport = int (
1481
1461
parser .get ('remote' , 'control' , fallback = self .ctrlport ))
1462
+ self .dataport = int (
1463
+ parser .get ('remote' , 'data' , fallback = self .dataport ))
1482
1464
if self .is_server is False :
1483
1465
if self .remote is None :
1484
1466
# Load remote setting from the configuration
0 commit comments