123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- include "io.alh"
- include "primitives.alh"
- // Placeholder for internal functions
- Element function __input()
- Void function __output(value : Element)
- Element function input():
- while (bool_not(has_input())):
- interruptable_sleep(0.5)
-
- Element inp
- inp = __input()
- return inp!
- Void function output(value : Element):
- __output(value)
- return!
- Element function input_timeout(timeout : Float):
- Float start
- start = time()
- // Do this first, such that we will always get at least the chance to push input in
- if (has_input()):
- return input()!
- // Now just try this again from time to time
- while (time() - start < timeout):
- if (has_input()):
- return input()!
- else:
- // Nothing to do, we should yield...
- interruptable_sleep(0.1)
- return read_root()!
- Boolean function other_has_output(comm : String):
- // Check if there is any input on the specified pseudo-username
- Element root
- root = read_root()
- return dict_in(root[comm]["output"], "value")!
- Void function give_input_to_other(comm : String, value : Element):
- Element root
- root = read_root()
- Element new
- new = create_node()
- dict_add(root[comm]["last_input"], "value", value)
- dict_add(root[comm]["last_input"], "next", new)
- dict_overwrite(root[comm], "last_input", new)
- return!
- Element function get_output_from_other(comm : String):
- // Fetch input from the service
- while (bool_not(other_has_output(comm))):
- sleep(0.1)
- // Return the value that we got
- Element root
- Element value
- root = read_root()
- value = root[comm]["output"]["value"]
- dict_overwrite(root[comm], "output", root[comm]["output"]["next"])
- return value!
|