task_manager.alc 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. include "io.alh"
  2. include "primitives.alh"
  3. include "metamodels.alh"
  4. include "core_algorithm.alh"
  5. include "random.alh"
  6. Void function task_management():
  7. String taskname
  8. Element task_root
  9. Element task_frame
  10. Element output_value
  11. Element input_value
  12. // Initialize the basic formalisms before allowing new users
  13. initialize_MMs()
  14. initialize_core()
  15. taskname = "task_manager"
  16. while (True):
  17. while (True):
  18. if (bool_not(other_has_output("task_manager"))):
  19. while (dict_in(read_root(), taskname)):
  20. taskname = cast_string(random_string(20))
  21. break!
  22. elif (has_input()):
  23. taskname = input()
  24. if (dict_in(read_root(), taskname)):
  25. sleep(0.05)
  26. else:
  27. break!
  28. else:
  29. sleep(0.05)
  30. // Task is gone, so make sure that we create a new one already
  31. task_root = create_node()
  32. task_frame = create_node()
  33. output_value = create_node()
  34. input_value = create_node()
  35. dict_add_fast(task_root, "frame", task_frame)
  36. dict_add_fast(task_root, "globals", create_node())
  37. dict_add_fast(task_root, "output", output_value)
  38. dict_add_fast(task_root, "last_output", output_value)
  39. dict_add_fast(task_root, "input", input_value)
  40. dict_add_fast(task_root, "last_input", input_value)
  41. dict_add_fast(task_frame, "evalstack", create_node())
  42. dict_add_fast(task_frame, "returnvalue", create_node())
  43. dict_add_fast(task_frame, "phase", "init")
  44. dict_add_fast(task_frame, "IP", dict_read(dict_read(read_root(), "__hierarchy"), "__IP"))
  45. dict_add_fast(task_frame, "symbols", create_node())
  46. //Add this only at the end, as otherwise the task will already be detected
  47. dict_add_fast(read_root(), taskname, task_root)
  48. output(taskname)
  49. return!