Skip to content

Commit abd1d03

Browse files
committed
feat: add support for unix sockets to TCPTransport in erpc_python
1 parent 49913b6 commit abd1d03

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

erpc_python/erpc/transport.py

+18-6
Original file line numberDiff line numberDiff line change
@@ -137,29 +137,41 @@ class ConnectionClosed(Exception):
137137

138138

139139
class TCPTransport(FramedTransport):
140-
def __init__(self, host, port, isServer):
140+
def __init__(self, host, port=None, isServer=False, isUnixSocket=False):
141141
super(TCPTransport, self).__init__()
142+
assert (port is not None and isUnixSocket is False) or (
143+
port is None and isUnixSocket is True
144+
), "port and isUnixSocket are mutually exclusive"
142145
self._host = host
143146
self._port = port
144147
self._isServer = isServer
148+
self._isUnixSocket = isUnixSocket
145149
self._sock = None
146150

147151
if self._isServer:
148152
self._serverThread = threading.Thread(target=self._serve)
149153
self._serverThread.daemon = True
150154
self._serverThread.start()
151155
self._serverSockEventStart = threading.Event()
156+
elif self._isUnixSocket:
157+
self._sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
158+
self._sock.connect(self._host)
152159
else:
153160
self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
154161
self._sock.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1)
155162
self._sock.connect((self._host, self._port))
156163

157164
def _serve(self):
158-
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
159-
s.setblocking(1)
160-
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
161-
s.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1)
162-
s.bind((self._host, self._port))
165+
if self._isUnixSocket:
166+
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
167+
s.setblocking(1)
168+
s.bind(self._host)
169+
else:
170+
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
171+
s.setblocking(1)
172+
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
173+
s.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1)
174+
s.bind((self._host, self._port))
163175
s.listen(5)
164176

165177
while True:

0 commit comments

Comments
 (0)