Pipes ===== Pipes are implemented as linux domain sockets or windows named pipes depending on what system you are running on. Pipe examples ----------------- Pipe echo client ^^^^^^^^^^^^^^^^ example :: import uvio message = 'Hello World!' def handler(socket): loop = asyncio.get_event_loop() message = 'Hello World!' @uvio.sync async def main(): socket = await uvio.pipes.connect('windows_pipe_or_unix_domain.sock') socket.write(message.encode()) print('Data sent: {!r}'.format(self.message)) @socket.data def data_received(data): print('Data received: {!r}'.format(data.decode())) @socket.end def connection_lost(): print('The server closed the connection') print('Stop the event loop') socket.close() Pipes echo server ^^^^^^^^^^^^^^^^^^ example :: import uvio async def handler(socket): print('Connection from {}'.format(socket.getpeername())) @socket.data def data_received(data): message = data.decode() print('Data received: {!r}'.format(message)) print('Send: {!r}'.format(message)) socket.write(data) print('Close the client socket') socket.close() @uvio.sync async def main(): # Each client connection will create a new protocol instance server = await uvio.pipes.listen(handler, 'windows_pipe_or_unix_domain.sock') print('Serving on {}'.format(server.getsockname()))