1#!/usr/bin/python
2#
3# Server that will communicate over stdin/stderr
4#
5# This requires Python 2.6 or later.
6
7from __future__ import print_function
8import sys
9import time
10
11if __name__ == "__main__":
12
13    if len(sys.argv) > 1:
14        if sys.argv[1].startswith("err"):
15            print(sys.argv[1], file=sys.stderr)
16            sys.stderr.flush()
17        elif sys.argv[1].startswith("incomplete"):
18            print(sys.argv[1], end='')
19            sys.stdout.flush()
20            sys.exit(0)
21        elif sys.argv[1].startswith("busy"):
22            time.sleep(100)
23            sys.exit(0)
24        else:
25            print(sys.argv[1])
26            sys.stdout.flush()
27            if sys.argv[1].startswith("quit"):
28                sys.exit(0)
29
30    while True:
31        typed = sys.stdin.readline()
32        if typed == "":  # EOF -- stop
33            break
34        if typed.startswith("quit"):
35            print("Goodbye!")
36            sys.stdout.flush()
37            break
38        if typed.startswith("echo "):
39            print(typed[5:-1])
40            sys.stdout.flush()
41        if typed.startswith("echosplit "):
42            for part in typed[10:-1].split('|'):
43                sys.stdout.write(part)
44                sys.stdout.flush()
45                time.sleep(0.05)
46        if typed.startswith("double "):
47            print(typed[7:-1] + "\nAND " + typed[7:-1])
48            sys.stdout.flush()
49        if typed.startswith("split "):
50            print(typed[6:-1], end='')
51            sys.stdout.flush()
52            time.sleep(0.05)
53            print(typed[6:-1], end='')
54            sys.stdout.flush()
55            time.sleep(0.05)
56            print(typed[6:-1])
57            sys.stdout.flush()
58        if typed.startswith("echoerr "):
59            print(typed[8:-1], file=sys.stderr)
60            sys.stderr.flush()
61        if typed.startswith("doubleerr "):
62            print(typed[10:-1] + "\nAND " + typed[10:-1], file=sys.stderr)
63            sys.stderr.flush()
64        if typed.startswith("XXX"):
65            print(typed, end='')
66            sys.stderr.flush()
67            break
68
69