@@ -79,10 +79,17 @@ class SocketCanDaemonBus(can.BusABC):
79
79
def __init__ (self , channel , host , port , tcp_tune = False , can_filters = None , ** kwargs ):
80
80
self .__host = host
81
81
self .__port = port
82
+
82
83
self .__tcp_tune = tcp_tune
83
84
self .__socket = socket .socket (socket .AF_INET , socket .SOCK_STREAM )
85
+
84
86
if self .__tcp_tune :
85
- self .__socket .setsockopt (socket .IPPROTO_TCP , socket .TCP_NODELAY , 1 )
87
+ if os .name == "nt" :
88
+ self .__tcp_tune = False
89
+ log .warning ("'tcp_tune' not available in Windows. Setting to False" )
90
+ else :
91
+ self .__socket .setsockopt (socket .IPPROTO_TCP , socket .TCP_NODELAY , 1 )
92
+
86
93
self .__message_buffer = deque ()
87
94
self .__receive_buffer = "" # i know string is not the most efficient here
88
95
self .channel = channel
@@ -124,9 +131,8 @@ def _recv_internal(self, timeout):
124
131
ascii_msg = self .__socket .recv (1024 ).decode (
125
132
"ascii"
126
133
) # may contain multiple messages
127
- if os .name != "nt" :
128
- if self .__tcp_tune :
129
- self .__socket .setsockopt (socket .IPPROTO_TCP , socket .TCP_QUICKACK , 1 )
134
+ if self .__tcp_tune :
135
+ self .__socket .setsockopt (socket .IPPROTO_TCP , socket .TCP_QUICKACK , 1 )
130
136
self .__receive_buffer += ascii_msg
131
137
log .debug (f"Received Ascii Message: { ascii_msg } " )
132
138
buffer_view = self .__receive_buffer
@@ -180,15 +186,13 @@ def _recv_internal(self, timeout):
180
186
def _tcp_send (self , msg : str ):
181
187
log .debug (f"Sending TCP Message: '{ msg } '" )
182
188
self .__socket .sendall (msg .encode ("ascii" ))
183
- if os .name != "nt" :
184
- if self .__tcp_tune :
185
- self .__socket .setsockopt (socket .IPPROTO_TCP , socket .TCP_QUICKACK , 1 )
189
+ if self .__tcp_tune :
190
+ self .__socket .setsockopt (socket .IPPROTO_TCP , socket .TCP_QUICKACK , 1 )
186
191
187
192
def _expect_msg (self , msg ):
188
193
ascii_msg = self .__socket .recv (256 ).decode ("ascii" )
189
- if os .name != "nt" :
190
- if self .__tcp_tune :
191
- self .__socket .setsockopt (socket .IPPROTO_TCP , socket .TCP_QUICKACK , 1 )
194
+ if self .__tcp_tune :
195
+ self .__socket .setsockopt (socket .IPPROTO_TCP , socket .TCP_QUICKACK , 1 )
192
196
if not ascii_msg == msg :
193
197
raise can .CanError (f"{ msg } message expected!" )
194
198
0 commit comments