aboutsummaryrefslogtreecommitdiff
path: root/examples/oecho.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/oecho.py')
-rw-r--r--[-rwxr-xr-x]examples/oecho.py61
1 files changed, 21 insertions, 40 deletions
diff --git a/examples/oecho.py b/examples/oecho.py
index 4bf3e05..ae94103 100755..100644
--- a/examples/oecho.py
+++ b/examples/oecho.py
@@ -1,43 +1,13 @@
-#!/bin/python
-
-# Ouroboros - Copyright (C) 2016 - 2026
-#
-# A simple echo application
-#
-# Dimitri Staessens <dimitri@ouroboros.rocks>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
+# SPDX-FileCopyrightText: 2016 - 2026 Dimitri Staessens
+# SPDX-License-Identifier: BSD-3-Clause
#
-# 2. Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials provided
-# with the distribution.
-#
-# 3. Neither the name of the copyright holder nor the names of its
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-# OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""A simple echo client/server example using Ouroboros flows."""
-
-# Standalone demo; intentionally duplicates oecho_set.py.
+
+"""
+A simple echo client/server example using Ouroboros flows.
+"""
+
+# Standalone demo; duplicates oecho_set.py.
# pylint: disable=duplicate-code
from __future__ import annotations
@@ -48,27 +18,38 @@ from ouroboros.dev import flow_accept, flow_alloc
def client() -> None:
- """Send a message and print the echo reply."""
+ """
+ Send a message and print the echo reply.
+ """
+
with flow_alloc("oecho") as f:
f.writeline("Hello, PyOuroboros!")
print(f.readline())
def server() -> None:
- """Accept flows and echo back received messages."""
+ """
+ Accept flows and echo back received messages.
+ """
+
print("Starting the server.")
+
while True:
with flow_accept() as f:
print("New flow.")
+
line = f.readline()
+
print(f"Message from client is {line}")
f.writeline(line)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='A simple echo client/server')
+
parser.add_argument('-l', '--listen', help='run as a server',
action='store_true')
+
args = parser.parse_args()
if args.listen:
server()