Skip to content

Commit 9bd4b8c

Browse files
committed
Move os check into __init__
1 parent 3aa9047 commit 9bd4b8c

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

can/interfaces/socketcand/socketcand.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,17 @@ class SocketCanDaemonBus(can.BusABC):
7979
def __init__(self, channel, host, port, tcp_tune=False, can_filters=None, **kwargs):
8080
self.__host = host
8181
self.__port = port
82+
8283
self.__tcp_tune = tcp_tune
8384
self.__socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
85+
8486
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+
8693
self.__message_buffer = deque()
8794
self.__receive_buffer = "" # i know string is not the most efficient here
8895
self.channel = channel
@@ -124,9 +131,8 @@ def _recv_internal(self, timeout):
124131
ascii_msg = self.__socket.recv(1024).decode(
125132
"ascii"
126133
) # 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)
130136
self.__receive_buffer += ascii_msg
131137
log.debug(f"Received Ascii Message: {ascii_msg}")
132138
buffer_view = self.__receive_buffer
@@ -180,15 +186,13 @@ def _recv_internal(self, timeout):
180186
def _tcp_send(self, msg: str):
181187
log.debug(f"Sending TCP Message: '{msg}'")
182188
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)
186191

187192
def _expect_msg(self, msg):
188193
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)
192196
if not ascii_msg == msg:
193197
raise can.CanError(f"{msg} message expected!")
194198

0 commit comments

Comments
 (0)