34
34
UrbSetupPacket , URBStandardDeviceRequest )
35
35
from serial_usbipclient .protocol .usb_descriptors import DescriptorType
36
36
from serial_usbipclient .protocol .usbip_defs import BasicCommands , Direction
37
+ from serial_usbipclient .socket_wrapper import SocketWrapper
37
38
38
39
LOGGER : logging .Logger = logging .getLogger (__name__ )
39
40
@@ -423,12 +424,13 @@ class DebugCommands(StrEnum):
423
424
NO_WRITE_RESPONSE = 'no-write-response' # write does not return acknowledgement
424
425
NO_READ_RESPONSE = 'no-read-response' # suppress an expected read
425
426
426
- def __init__ (self , host : str , port : int ):
427
+ def __init__ (self , host : str , port : int , socket_class : type = SocketWrapper ):
427
428
"""set up our instance"""
428
429
self .host : str = host
429
430
self .port : int = port
430
431
self .logger : logging .Logger = LOGGER
431
- self .server_socket : Optional [socket .socket ] = None
432
+ self .server_socket : Optional [SocketWrapper ] = None
433
+ self ._socket_class : type = socket_class
432
434
self .thread : Optional [Thread ] = Thread (name = f'mock-usbip@{ self .host } :{ self .port } ' , target = self .run_server , daemon = True )
433
435
self .event : Event = Event ()
434
436
self ._is_windows : bool = platform .system () == 'Windows'
@@ -676,7 +678,7 @@ def wait_for_message(self, conn: Optional[USBIPServerClient] = None) -> tuple[US
676
678
if self ._wakeup is None or self .server_socket is None :
677
679
raise ValueError ("neither the wakeup or server socket can be empty!" )
678
680
679
- rlist : list [socket .socket | USBIPServerClient ] = [self ._wakeup .listener , self .server_socket ]
681
+ rlist : list [socket .socket | USBIPServerClient ] = [self ._wakeup .listener , self .server_socket . raw_socket ]
680
682
if conn :
681
683
if conn not in self ._clients :
682
684
self ._clients .append (conn )
@@ -693,7 +695,7 @@ def wait_for_message(self, conn: Optional[USBIPServerClient] = None) -> tuple[US
693
695
if socket_read == self ._wakeup .listener : # time to bail
694
696
self .logger .info ("Wakeup!" )
695
697
raise OrderlyExit ("wakeup!" )
696
- elif socket_read == self .server_socket : # someone is knocking
698
+ elif socket_read == self .server_socket . raw_socket : # someone is knocking
697
699
self .logger .info (f"wait_for_message(): accept() { self .server_socket = } " )
698
700
new_conn , address = self .server_socket .accept () # accept new connection
699
701
client : USBIPServerClient = USBIPServerClient (connection = new_conn , address = address )
@@ -750,12 +752,12 @@ def read_message(self, client: Optional[USBIPServerClient] = None) -> tuple[USBI
750
752
751
753
def run_server (self ):
752
754
"""standup the server, start listening"""
753
- self .server_socket = socket . socket ( family = socket .AF_INET , type = socket .SOCK_STREAM )
754
- self .server_socket .setsockopt (socket .SOL_SOCKET , socket .SO_REUSEADDR , 1 )
755
- self .server_socket .bind ((self .host , self .port ))
756
- self .server_socket .settimeout (None ) # so our accept() will block
755
+ self .server_socket = self . _socket_class ( socket .AF_INET , socket .SOCK_STREAM )
756
+ self .server_socket .setsockopt (socket .SOL_SOCKET , socket .SO_REUSEADDR , 1 ) # type: ignore[union-attr]
757
+ self .server_socket .bind ((self .host , self .port )) # type: ignore[union-attr]
758
+ self .server_socket .settimeout (None ) # type: ignore[union-attr] # accept should block
757
759
758
- self .server_socket .listen (1 ) # only allow one connection (testing)
760
+ self .server_socket .listen (1 ) # type: ignore[union-attr] # only allow one connection (testing)
759
761
self .event .set ()
760
762
self .logger .info ("\n mock USBIP server started @%s:%s" , self .host , self .port )
761
763
try :
0 commit comments