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()))