roby 0.8.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (644) hide show
  1. checksums.yaml +7 -0
  2. data/.deep-cover.rb +3 -0
  3. data/.gitattributes +1 -0
  4. data/.gitignore +24 -0
  5. data/.simplecov +10 -0
  6. data/.travis.yml +17 -0
  7. data/.yardopts +4 -0
  8. data/Gemfile +15 -0
  9. data/README.md +11 -0
  10. data/Rakefile +47 -177
  11. data/benchmark/{alloc_misc.rb → attic/alloc_misc.rb} +2 -2
  12. data/benchmark/{discovery_latency.rb → attic/discovery_latency.rb} +19 -19
  13. data/benchmark/{garbage_collection.rb → attic/garbage_collection.rb} +9 -9
  14. data/benchmark/{genom.rb → attic/genom.rb} +0 -0
  15. data/benchmark/attic/transactions.rb +62 -0
  16. data/benchmark/plan_basic_operations.rb +28 -0
  17. data/benchmark/relations/graph.rb +63 -0
  18. data/benchmark/ruby/identity.rb +18 -0
  19. data/benchmark/ruby/set_intersect_vs_hash_merge.rb +39 -0
  20. data/benchmark/ruby/yield_vs_block.rb +35 -0
  21. data/benchmark/run +5 -0
  22. data/benchmark/synthetic_plan_modifications_with_transactions.rb +79 -0
  23. data/benchmark/transactions.rb +99 -51
  24. data/bin/roby +38 -197
  25. data/bin/roby-display +14 -0
  26. data/bin/roby-log +3 -176
  27. data/doc/guide/{src → attic}/abstraction/achieve_with.page +1 -1
  28. data/doc/guide/{src → attic}/abstraction/forwarding.page +1 -1
  29. data/doc/guide/{src → attic}/abstraction/hierarchy.page +1 -1
  30. data/doc/guide/{src → attic}/abstraction/index.page +1 -1
  31. data/doc/guide/{src → attic}/abstraction/task_models.page +1 -1
  32. data/doc/guide/{overview.rdoc → attic/cycle/api_overview.rdoc} +6 -1
  33. data/doc/guide/{src → attic}/cycle/cycle-overview.png +0 -0
  34. data/doc/guide/{src → attic}/cycle/cycle-overview.svg +0 -0
  35. data/doc/guide/attic/cycle/error_handling.page +98 -0
  36. data/doc/guide/{src → attic}/cycle/error_instantaneous_repair.png +0 -0
  37. data/doc/guide/{src → attic}/cycle/error_instantaneous_repair.svg +0 -0
  38. data/doc/guide/{src/cycle/error_handling.page → attic/cycle/error_sources.page} +46 -89
  39. data/doc/guide/{src → attic}/cycle/garbage_collection.page +1 -1
  40. data/doc/guide/{src → attic}/cycle/index.page +1 -1
  41. data/doc/guide/{src → attic}/cycle/propagation.page +11 -1
  42. data/doc/guide/{src → attic}/cycle/propagation_diamond.png +0 -0
  43. data/doc/guide/{src → attic}/cycle/propagation_diamond.svg +0 -0
  44. data/doc/guide/attic/plans/building_plans.page +89 -0
  45. data/doc/guide/attic/plans/code.page +192 -0
  46. data/doc/guide/{src/basics → attic/plans}/events.page +3 -4
  47. data/doc/guide/attic/plans/index.page +7 -0
  48. data/doc/guide/{plan_modifications.rdoc → attic/plans/plan_modifications.rdoc} +5 -3
  49. data/doc/guide/{src/basics → attic/plans}/plan_objects.page +2 -1
  50. data/doc/guide/attic/plans/querying_plans.page +5 -0
  51. data/doc/guide/{src/basics → attic/plans}/tasks.page +20 -20
  52. data/doc/guide/config.yaml +7 -4
  53. data/doc/guide/ext/extended_menu.rb +29 -0
  54. data/doc/guide/ext/init.rb +6 -0
  55. data/doc/guide/ext/rdoc_links.rb +7 -6
  56. data/doc/guide/src/advanced_concepts/history.page +5 -0
  57. data/doc/guide/src/advanced_concepts/index.page +11 -0
  58. data/doc/guide/src/advanced_concepts/recognizing_patterns.page +83 -0
  59. data/doc/guide/src/advanced_concepts/scheduling.page +87 -0
  60. data/doc/guide/src/advanced_concepts/transactions.page +5 -0
  61. data/doc/guide/src/advanced_concepts/unreachability.page +42 -0
  62. data/doc/guide/src/base.template +96 -0
  63. data/doc/guide/src/basics_shell_header.txt +5 -7
  64. data/doc/guide/src/building/action_coordination.page +96 -0
  65. data/doc/guide/src/building/actions.page +124 -0
  66. data/doc/guide/src/building/file_layout.page +71 -0
  67. data/doc/guide/src/building/index.page +50 -0
  68. data/doc/guide/src/building/patterns.page +86 -0
  69. data/doc/guide/src/building/patterns_forwarding.png +0 -0
  70. data/doc/guide/src/building/patterns_forwarding.svg +277 -0
  71. data/doc/guide/src/building/runtime.page +95 -0
  72. data/doc/guide/src/building/task_models.page +94 -0
  73. data/doc/guide/src/building/tasks.page +284 -0
  74. data/doc/guide/src/concepts/error_handling.page +100 -0
  75. data/doc/guide/src/concepts/exception_propagation.png +0 -0
  76. data/doc/guide/src/concepts/exception_propagation.svg +445 -0
  77. data/doc/guide/src/concepts/execution.page +85 -0
  78. data/doc/guide/src/concepts/execution.png +0 -0
  79. data/doc/guide/src/concepts/execution.svg +573 -0
  80. data/doc/guide/src/concepts/execution_cycle.png +0 -0
  81. data/doc/guide/src/concepts/garbage_collection.page +57 -0
  82. data/doc/guide/src/concepts/index.page +27 -0
  83. data/doc/guide/src/concepts/plans.page +101 -0
  84. data/doc/guide/src/concepts/policy.page +31 -0
  85. data/doc/guide/src/concepts/reactor.page +61 -0
  86. data/doc/guide/src/concepts/simple_plan_example.png +0 -0
  87. data/doc/guide/src/concepts/simple_plan_example.svg +376 -0
  88. data/doc/guide/src/default.template +9 -74
  89. data/doc/guide/src/event_relations/forward.page +71 -0
  90. data/doc/guide/src/event_relations/index.page +12 -0
  91. data/doc/guide/src/event_relations/scheduling_constraints.page +43 -0
  92. data/doc/guide/src/event_relations/signal.page +55 -0
  93. data/doc/guide/src/event_relations/temporal_constraints.page +77 -0
  94. data/doc/guide/src/htmldoc.metainfo +21 -8
  95. data/doc/guide/src/index.page +8 -3
  96. data/doc/guide/src/{introduction/install.page → installation/index.page} +37 -25
  97. data/doc/guide/src/installation/publications.page +14 -0
  98. data/doc/guide/src/{introduction → installation}/videos.page +14 -7
  99. data/doc/guide/src/interacting/index.page +16 -0
  100. data/doc/guide/src/interacting/run.page +33 -0
  101. data/doc/guide/src/interacting/shell.page +95 -0
  102. data/doc/guide/src/plugins/creating_plugins.page +72 -0
  103. data/doc/guide/src/plugins/index.page +27 -5
  104. data/doc/guide/src/plugins/{fault_tolerance.page → standard_plugins/fault_tolerance.page} +2 -2
  105. data/doc/guide/src/plugins/standard_plugins/index.page +11 -0
  106. data/doc/guide/src/plugins/{subsystems.page → standard_plugins/subsystems.page} +2 -2
  107. data/doc/guide/src/style_screen.css +687 -0
  108. data/doc/guide/src/task_relations/dependency.page +107 -0
  109. data/doc/guide/src/task_relations/executed_by.page +77 -0
  110. data/doc/guide/src/task_relations/index.page +12 -0
  111. data/doc/guide/src/task_relations/new_relations.page +119 -0
  112. data/doc/guide/src/task_relations/planned_by.page +46 -0
  113. data/doc/guide/src/tutorial/app.page +117 -0
  114. data/doc/guide/src/{basics → tutorial}/code_examples.page +6 -5
  115. data/doc/guide/src/{basics → tutorial}/dry.page +15 -15
  116. data/doc/guide/src/{basics → tutorial}/errors.page +43 -68
  117. data/doc/guide/src/tutorial/events.page +195 -0
  118. data/doc/guide/src/{basics → tutorial}/hierarchy.page +53 -52
  119. data/doc/guide/src/tutorial/index.page +13 -0
  120. data/doc/guide/src/tutorial/log_replay/goForward_1.png +0 -0
  121. data/doc/guide/src/tutorial/log_replay/goForward_2.png +0 -0
  122. data/doc/guide/src/tutorial/log_replay/goForward_3.png +0 -0
  123. data/doc/guide/src/{basics → tutorial}/log_replay/goForward_4.png +0 -0
  124. data/doc/guide/src/tutorial/log_replay/goForward_5.png +0 -0
  125. data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_1.png +0 -0
  126. data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_2.png +0 -0
  127. data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_3.png +0 -0
  128. data/doc/guide/src/tutorial/log_replay/moveto_code_error.png +0 -0
  129. data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_1.png +0 -0
  130. data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_2.png +0 -0
  131. data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_3.png +0 -0
  132. data/doc/guide/src/tutorial/log_replay/plan_repair_4.png +0 -0
  133. data/doc/guide/src/tutorial/log_replay/roby_log_main_window.png +0 -0
  134. data/doc/guide/src/{basics → tutorial}/log_replay/roby_log_relation_window.png +0 -0
  135. data/doc/guide/src/{basics → tutorial}/log_replay/roby_replay_event_representation.png +0 -0
  136. data/doc/guide/src/tutorial/relations_display.page +153 -0
  137. data/doc/guide/src/{basics → tutorial}/roby_cycle_overview.png +0 -0
  138. data/doc/guide/src/tutorial/shell.page +121 -0
  139. data/doc/guide/src/{basics → tutorial}/summary.page +1 -1
  140. data/doc/guide/src/tutorial/tasks.page +374 -0
  141. data/lib/roby.rb +102 -47
  142. data/lib/roby/actions.rb +17 -0
  143. data/lib/roby/actions/action.rb +80 -0
  144. data/lib/roby/actions/interface.rb +45 -0
  145. data/lib/roby/actions/library.rb +23 -0
  146. data/lib/roby/actions/models/action.rb +224 -0
  147. data/lib/roby/actions/models/coordination_action.rb +58 -0
  148. data/lib/roby/actions/models/interface.rb +22 -0
  149. data/lib/roby/actions/models/interface_base.rb +294 -0
  150. data/lib/roby/actions/models/library.rb +12 -0
  151. data/lib/roby/actions/models/method_action.rb +90 -0
  152. data/lib/roby/actions/task.rb +114 -0
  153. data/lib/roby/and_generator.rb +125 -0
  154. data/lib/roby/app.rb +2795 -829
  155. data/lib/roby/app/autotest_console_reporter.rb +138 -0
  156. data/lib/roby/app/base.rb +21 -0
  157. data/lib/roby/app/cucumber.rb +2 -0
  158. data/lib/roby/app/cucumber/controller.rb +439 -0
  159. data/lib/roby/app/cucumber/helpers.rb +280 -0
  160. data/lib/roby/app/cucumber/world.rb +32 -0
  161. data/lib/roby/app/debug.rb +136 -0
  162. data/lib/roby/app/gen.rb +2 -0
  163. data/lib/roby/app/rake.rb +178 -38
  164. data/lib/roby/app/robot_config.rb +9 -0
  165. data/lib/roby/app/robot_names.rb +115 -0
  166. data/lib/roby/app/run.rb +3 -2
  167. data/lib/roby/app/scripts.rb +72 -0
  168. data/lib/roby/app/scripts/autotest.rb +173 -0
  169. data/lib/roby/app/scripts/display.rb +2 -0
  170. data/lib/roby/app/scripts/restart.rb +52 -0
  171. data/lib/roby/app/scripts/results.rb +17 -8
  172. data/lib/roby/app/scripts/run.rb +155 -24
  173. data/lib/roby/app/scripts/shell.rb +147 -62
  174. data/lib/roby/app/scripts/test.rb +107 -22
  175. data/lib/roby/app/test_reporter.rb +74 -0
  176. data/lib/roby/app/test_server.rb +159 -0
  177. data/lib/roby/app/vagrant.rb +47 -0
  178. data/lib/roby/backports.rb +16 -0
  179. data/lib/roby/cli/display.rb +190 -0
  180. data/lib/roby/cli/exceptions.rb +17 -0
  181. data/lib/roby/cli/gen/actions/class.rb +5 -0
  182. data/lib/roby/cli/gen/actions/test.rb +6 -0
  183. data/lib/roby/cli/gen/app/.yardopts +6 -0
  184. data/lib/roby/cli/gen/app/README.md +28 -0
  185. data/lib/roby/cli/gen/app/Rakefile +15 -0
  186. data/{app → lib/roby/cli/gen/app}/config/app.yml +29 -39
  187. data/lib/roby/cli/gen/app/models/.gitattributes +1 -0
  188. data/{app → lib/roby/cli/gen/app/scripts}/controllers/.gitattributes +0 -0
  189. data/{app/data/.gitattributes → lib/roby/cli/gen/app/test/.gitignore} +0 -0
  190. data/lib/roby/cli/gen/class/class.rb +6 -0
  191. data/lib/roby/cli/gen/class/test.rb +7 -0
  192. data/lib/roby/cli/gen/helpers.rb +203 -0
  193. data/lib/roby/cli/gen/module/module.rb +5 -0
  194. data/lib/roby/cli/gen/module/test.rb +6 -0
  195. data/lib/roby/cli/gen/roby_app/config/init.rb +17 -0
  196. data/lib/roby/cli/gen/roby_app/config/robots/robot.rb +40 -0
  197. data/lib/roby/cli/gen/task/class.rb +44 -0
  198. data/lib/roby/cli/gen/task/test.rb +6 -0
  199. data/lib/roby/cli/gen_main.rb +120 -0
  200. data/lib/roby/cli/log.rb +276 -0
  201. data/lib/roby/cli/log/flamegraph.html +499 -0
  202. data/lib/roby/cli/log/flamegraph_renderer.rb +88 -0
  203. data/lib/roby/cli/main.rb +153 -0
  204. data/lib/roby/coordination.rb +60 -0
  205. data/lib/roby/coordination/action_script.rb +25 -0
  206. data/lib/roby/coordination/action_state_machine.rb +125 -0
  207. data/lib/roby/coordination/actions.rb +106 -0
  208. data/lib/roby/coordination/base.rb +145 -0
  209. data/lib/roby/coordination/calculus.rb +40 -0
  210. data/lib/roby/coordination/child.rb +28 -0
  211. data/lib/roby/coordination/event.rb +29 -0
  212. data/lib/roby/coordination/fault_handler.rb +25 -0
  213. data/lib/roby/coordination/fault_handling_task.rb +13 -0
  214. data/lib/roby/coordination/fault_response_table.rb +110 -0
  215. data/lib/roby/coordination/models/action_script.rb +64 -0
  216. data/lib/roby/coordination/models/action_state_machine.rb +224 -0
  217. data/lib/roby/coordination/models/actions.rb +191 -0
  218. data/lib/roby/coordination/models/arguments.rb +55 -0
  219. data/lib/roby/coordination/models/base.rb +176 -0
  220. data/lib/roby/coordination/models/capture.rb +86 -0
  221. data/lib/roby/coordination/models/child.rb +35 -0
  222. data/lib/roby/coordination/models/event.rb +41 -0
  223. data/lib/roby/coordination/models/exceptions.rb +42 -0
  224. data/lib/roby/coordination/models/fault_handler.rb +219 -0
  225. data/lib/roby/coordination/models/fault_response_table.rb +77 -0
  226. data/lib/roby/coordination/models/root.rb +22 -0
  227. data/lib/roby/coordination/models/script.rb +283 -0
  228. data/lib/roby/coordination/models/task.rb +184 -0
  229. data/lib/roby/coordination/models/task_from_action.rb +50 -0
  230. data/lib/roby/coordination/models/task_from_as_plan.rb +33 -0
  231. data/lib/roby/coordination/models/task_from_instanciation_object.rb +31 -0
  232. data/lib/roby/coordination/models/task_from_variable.rb +27 -0
  233. data/lib/roby/coordination/models/task_with_dependencies.rb +48 -0
  234. data/lib/roby/coordination/models/variable.rb +32 -0
  235. data/lib/roby/coordination/script.rb +200 -0
  236. data/lib/roby/coordination/script_instruction.rb +12 -0
  237. data/lib/roby/coordination/task.rb +45 -0
  238. data/lib/roby/coordination/task_base.rb +69 -0
  239. data/lib/roby/coordination/task_script.rb +293 -0
  240. data/lib/roby/coordination/task_state_machine.rb +308 -0
  241. data/lib/roby/decision_control.rb +33 -21
  242. data/lib/roby/distributed_object.rb +76 -0
  243. data/lib/roby/droby.rb +17 -0
  244. data/lib/roby/droby/droby_id.rb +6 -0
  245. data/lib/roby/droby/enable.rb +153 -0
  246. data/lib/roby/droby/event_logger.rb +189 -0
  247. data/lib/roby/droby/event_logging.rb +57 -0
  248. data/lib/roby/droby/exceptions.rb +14 -0
  249. data/lib/roby/droby/identifiable.rb +22 -0
  250. data/lib/roby/droby/logfile.rb +141 -0
  251. data/lib/roby/droby/logfile/client.rb +176 -0
  252. data/lib/roby/droby/logfile/file_format.md +97 -0
  253. data/lib/roby/droby/logfile/index.rb +117 -0
  254. data/lib/roby/droby/logfile/reader.rb +139 -0
  255. data/lib/roby/droby/logfile/server.rb +199 -0
  256. data/lib/roby/droby/logfile/writer.rb +114 -0
  257. data/lib/roby/droby/marshal.rb +264 -0
  258. data/lib/roby/droby/marshallable.rb +12 -0
  259. data/lib/roby/droby/null_event_logger.rb +25 -0
  260. data/lib/roby/droby/object_manager.rb +205 -0
  261. data/lib/roby/droby/peer_id.rb +6 -0
  262. data/lib/roby/droby/plan_rebuilder.rb +373 -0
  263. data/lib/roby/droby/rebuilt_plan.rb +160 -0
  264. data/lib/roby/droby/remote_droby_id.rb +6 -0
  265. data/lib/roby/droby/timepoints.rb +205 -0
  266. data/lib/roby/droby/timepoints_ctf.metadata.erb +101 -0
  267. data/lib/roby/droby/timepoints_ctf.rb +125 -0
  268. data/lib/roby/droby/v5.rb +14 -0
  269. data/lib/roby/droby/v5/builtin.rb +120 -0
  270. data/lib/roby/droby/v5/droby_class.rb +45 -0
  271. data/lib/roby/droby/v5/droby_constant.rb +81 -0
  272. data/lib/roby/droby/v5/droby_dump.rb +1026 -0
  273. data/lib/roby/droby/v5/droby_id.rb +44 -0
  274. data/lib/roby/droby/v5/droby_model.rb +82 -0
  275. data/lib/roby/droby/v5/peer_id.rb +10 -0
  276. data/lib/roby/droby/v5/remote_droby_id.rb +42 -0
  277. data/lib/roby/event.rb +79 -957
  278. data/lib/roby/event_constraints.rb +835 -0
  279. data/lib/roby/event_generator.rb +1047 -0
  280. data/lib/roby/event_structure/causal_link.rb +6 -0
  281. data/lib/roby/event_structure/forwarding.rb +6 -0
  282. data/lib/roby/event_structure/precedence.rb +7 -0
  283. data/lib/roby/event_structure/signal.rb +8 -0
  284. data/lib/roby/event_structure/temporal_constraints.rb +640 -0
  285. data/lib/roby/exceptions.rb +446 -152
  286. data/lib/roby/executable_plan.rb +549 -0
  287. data/lib/roby/execution_engine.rb +1997 -950
  288. data/lib/roby/filter_generator.rb +26 -0
  289. data/lib/roby/gui/chronicle_view.rb +225 -0
  290. data/lib/roby/gui/chronicle_widget.rb +925 -0
  291. data/lib/roby/gui/dot_id.rb +11 -0
  292. data/lib/roby/gui/exception_view.rb +44 -0
  293. data/lib/roby/gui/log_display.rb +273 -0
  294. data/lib/roby/gui/model_views.rb +2 -0
  295. data/lib/roby/gui/model_views/action_interface.rb +53 -0
  296. data/lib/roby/gui/model_views/task.rb +47 -0
  297. data/lib/roby/gui/model_views/task.rhtml +41 -0
  298. data/lib/roby/gui/object_info_view.rb +89 -0
  299. data/lib/roby/gui/plan_dot_layout.rb +427 -0
  300. data/lib/roby/gui/plan_rebuilder_widget.rb +357 -0
  301. data/lib/roby/gui/qt4_toMSecsSinceEpoch.rb +8 -0
  302. data/lib/roby/gui/relations_view.rb +278 -0
  303. data/lib/roby/gui/relations_view/relations.ui +139 -0
  304. data/lib/roby/gui/relations_view/relations_canvas.rb +1088 -0
  305. data/lib/roby/gui/relations_view/relations_config.rb +292 -0
  306. data/lib/roby/gui/relations_view/relations_view.ui +53 -0
  307. data/lib/roby/gui/scheduler_view.css +24 -0
  308. data/lib/roby/gui/scheduler_view.rb +46 -0
  309. data/lib/roby/gui/scheduler_view.rhtml +53 -0
  310. data/lib/roby/gui/stepping.rb +93 -0
  311. data/lib/roby/gui/stepping.ui +181 -0
  312. data/lib/roby/gui/styles.rb +81 -0
  313. data/lib/roby/gui/task_display_configuration.rb +42 -0
  314. data/lib/roby/gui/task_state_at.rb +38 -0
  315. data/lib/roby/hooks.rb +26 -0
  316. data/lib/roby/interface.rb +136 -469
  317. data/lib/roby/interface/async.rb +20 -0
  318. data/lib/roby/interface/async/action_monitor.rb +188 -0
  319. data/lib/roby/interface/async/interface.rb +498 -0
  320. data/lib/roby/interface/async/job_monitor.rb +213 -0
  321. data/lib/roby/interface/async/log.rb +238 -0
  322. data/lib/roby/interface/async/new_job_listener.rb +79 -0
  323. data/lib/roby/interface/async/ui_connector.rb +183 -0
  324. data/lib/roby/interface/client.rb +553 -0
  325. data/lib/roby/interface/command.rb +24 -0
  326. data/lib/roby/interface/command_argument.rb +16 -0
  327. data/lib/roby/interface/command_library.rb +92 -0
  328. data/lib/roby/interface/droby_channel.rb +174 -0
  329. data/lib/roby/interface/exceptions.rb +22 -0
  330. data/lib/roby/interface/interface.rb +655 -0
  331. data/lib/roby/interface/job.rb +47 -0
  332. data/lib/roby/interface/rest.rb +10 -0
  333. data/lib/roby/interface/rest/api.rb +29 -0
  334. data/lib/roby/interface/rest/helpers.rb +24 -0
  335. data/lib/roby/interface/rest/server.rb +212 -0
  336. data/lib/roby/interface/server.rb +154 -0
  337. data/lib/roby/interface/shell_client.rb +468 -0
  338. data/lib/roby/interface/shell_subcommand.rb +24 -0
  339. data/lib/roby/interface/subcommand_client.rb +35 -0
  340. data/lib/roby/interface/tcp.rb +168 -0
  341. data/lib/roby/models/arguments.rb +112 -0
  342. data/lib/roby/models/plan_object.rb +83 -0
  343. data/lib/roby/models/task.rb +835 -0
  344. data/lib/roby/models/task_event.rb +62 -0
  345. data/lib/roby/models/task_service.rb +78 -0
  346. data/lib/roby/or_generator.rb +88 -0
  347. data/lib/roby/plan.rb +1751 -864
  348. data/lib/roby/plan_object.rb +611 -0
  349. data/lib/roby/plan_service.rb +200 -0
  350. data/lib/roby/promise.rb +332 -0
  351. data/lib/roby/queries.rb +23 -0
  352. data/lib/roby/queries/and_matcher.rb +32 -0
  353. data/lib/roby/queries/any.rb +27 -0
  354. data/lib/roby/queries/code_error_matcher.rb +58 -0
  355. data/lib/roby/queries/event_generator_matcher.rb +9 -0
  356. data/lib/roby/queries/execution_exception_matcher.rb +165 -0
  357. data/lib/roby/queries/index.rb +165 -0
  358. data/lib/roby/queries/localized_error_matcher.rb +149 -0
  359. data/lib/roby/queries/matcher_base.rb +107 -0
  360. data/lib/roby/queries/none.rb +27 -0
  361. data/lib/roby/queries/not_matcher.rb +30 -0
  362. data/lib/roby/queries/op_matcher.rb +8 -0
  363. data/lib/roby/queries/or_matcher.rb +30 -0
  364. data/lib/roby/queries/plan_object_matcher.rb +363 -0
  365. data/lib/roby/queries/query.rb +188 -0
  366. data/lib/roby/queries/task_event_generator_matcher.rb +86 -0
  367. data/lib/roby/queries/task_matcher.rb +344 -0
  368. data/lib/roby/relations.rb +42 -678
  369. data/lib/roby/relations/bidirectional_directed_adjacency_graph.rb +492 -0
  370. data/lib/roby/relations/directed_relation_support.rb +268 -0
  371. data/lib/roby/relations/event_relation_graph.rb +19 -0
  372. data/lib/roby/relations/fork_merge_visitor.rb +154 -0
  373. data/lib/roby/relations/graph.rb +533 -0
  374. data/lib/roby/relations/models/directed_relation_support.rb +11 -0
  375. data/lib/roby/relations/models/graph.rb +75 -0
  376. data/lib/roby/relations/models/task_relation_graph.rb +18 -0
  377. data/lib/roby/relations/space.rb +380 -0
  378. data/lib/roby/relations/task_relation_graph.rb +20 -0
  379. data/lib/roby/robot.rb +85 -38
  380. data/lib/roby/schedulers/basic.rb +155 -25
  381. data/lib/roby/schedulers/null.rb +20 -0
  382. data/lib/roby/schedulers/reporting.rb +31 -0
  383. data/lib/roby/schedulers/state.rb +129 -0
  384. data/lib/roby/schedulers/temporal.rb +91 -0
  385. data/lib/roby/singletons.rb +87 -0
  386. data/lib/roby/standalone.rb +4 -2
  387. data/lib/roby/standard_errors.rb +405 -82
  388. data/lib/roby/state.rb +6 -3
  389. data/lib/roby/state/conf_model.rb +5 -0
  390. data/lib/roby/state/events.rb +181 -95
  391. data/lib/roby/state/goal_model.rb +77 -0
  392. data/lib/roby/state/open_struct.rb +591 -0
  393. data/lib/roby/state/open_struct_model.rb +68 -0
  394. data/lib/roby/state/pos.rb +45 -45
  395. data/lib/roby/state/shapes.rb +11 -11
  396. data/lib/roby/state/state_model.rb +303 -0
  397. data/lib/roby/state/task.rb +43 -0
  398. data/lib/roby/support.rb +88 -148
  399. data/lib/roby/task.rb +1361 -1750
  400. data/lib/roby/task_arguments.rb +428 -0
  401. data/lib/roby/task_event.rb +127 -0
  402. data/lib/roby/task_event_generator.rb +337 -0
  403. data/lib/roby/task_service.rb +6 -0
  404. data/lib/roby/task_structure/conflicts.rb +104 -0
  405. data/lib/roby/task_structure/dependency.rb +932 -0
  406. data/lib/roby/task_structure/error_handling.rb +118 -0
  407. data/lib/roby/task_structure/executed_by.rb +234 -0
  408. data/lib/roby/task_structure/planned_by.rb +90 -0
  409. data/lib/roby/tasks/aggregator.rb +37 -0
  410. data/lib/roby/tasks/external_process.rb +275 -0
  411. data/lib/roby/tasks/group.rb +27 -0
  412. data/lib/roby/tasks/null.rb +19 -0
  413. data/lib/roby/tasks/parallel.rb +43 -0
  414. data/lib/roby/tasks/sequence.rb +88 -0
  415. data/lib/roby/tasks/simple.rb +21 -0
  416. data/lib/roby/{thread_task.rb → tasks/thread.rb} +50 -24
  417. data/lib/roby/tasks/timeout.rb +17 -0
  418. data/lib/roby/tasks/virtual.rb +55 -0
  419. data/lib/roby/template_plan.rb +7 -0
  420. data/lib/roby/test/aruba_minitest.rb +74 -0
  421. data/lib/roby/test/assertion.rb +16 -0
  422. data/lib/roby/test/assertions.rb +490 -0
  423. data/lib/roby/test/common.rb +368 -591
  424. data/lib/roby/test/dsl.rb +149 -0
  425. data/lib/roby/test/error.rb +18 -0
  426. data/lib/roby/test/event_reporter.rb +83 -0
  427. data/lib/roby/test/execution_expectations.rb +1134 -0
  428. data/lib/roby/test/expect_execution.rb +151 -0
  429. data/lib/roby/test/minitest_helpers.rb +166 -0
  430. data/lib/roby/test/roby_app_helpers.rb +200 -0
  431. data/lib/roby/test/run_planners.rb +155 -0
  432. data/lib/roby/test/self.rb +112 -0
  433. data/lib/roby/test/spec.rb +198 -0
  434. data/lib/roby/test/tasks/empty_task.rb +4 -4
  435. data/lib/roby/test/tasks/goto.rb +28 -27
  436. data/lib/roby/test/teardown_plans.rb +100 -0
  437. data/lib/roby/test/testcase.rb +239 -307
  438. data/lib/roby/test/tools.rb +159 -155
  439. data/lib/roby/test/validate_state_machine.rb +75 -0
  440. data/lib/roby/transaction.rb +1125 -0
  441. data/lib/roby/transaction/event_generator_proxy.rb +63 -0
  442. data/lib/roby/transaction/plan_object_proxy.rb +99 -0
  443. data/lib/roby/transaction/plan_service_proxy.rb +43 -0
  444. data/lib/roby/transaction/proxying.rb +120 -0
  445. data/lib/roby/transaction/task_event_generator_proxy.rb +19 -0
  446. data/lib/roby/transaction/task_proxy.rb +135 -0
  447. data/lib/roby/until_generator.rb +30 -0
  448. data/lib/roby/version.rb +5 -0
  449. data/lib/roby/yard.rb +169 -0
  450. data/lib/yard-roby.rb +1 -0
  451. data/manifest.xml +32 -6
  452. data/roby.gemspec +59 -0
  453. metadata +788 -587
  454. data/Manifest.txt +0 -321
  455. data/NOTES +0 -4
  456. data/README.txt +0 -166
  457. data/TODO.txt +0 -146
  458. data/app/README.txt +0 -24
  459. data/app/Rakefile +0 -8
  460. data/app/config/ROBOT.rb +0 -5
  461. data/app/config/init.rb +0 -33
  462. data/app/config/roby.yml +0 -3
  463. data/app/controllers/ROBOT.rb +0 -2
  464. data/app/planners/ROBOT/main.rb +0 -6
  465. data/app/planners/main.rb +0 -5
  466. data/app/scripts/distributed +0 -3
  467. data/app/scripts/generate/bookmarks +0 -3
  468. data/app/scripts/replay +0 -3
  469. data/app/scripts/results +0 -3
  470. data/app/scripts/run +0 -3
  471. data/app/scripts/server +0 -3
  472. data/app/scripts/shell +0 -3
  473. data/app/scripts/test +0 -3
  474. data/app/tasks/.gitattributes +0 -0
  475. data/app/tasks/ROBOT/.gitattributes +0 -0
  476. data/bin/roby-shell +0 -25
  477. data/doc/guide/src/basics/app.page +0 -139
  478. data/doc/guide/src/basics/index.page +0 -11
  479. data/doc/guide/src/basics/log_replay/goForward_1.png +0 -0
  480. data/doc/guide/src/basics/log_replay/goForward_2.png +0 -0
  481. data/doc/guide/src/basics/log_replay/goForward_3.png +0 -0
  482. data/doc/guide/src/basics/log_replay/goForward_5.png +0 -0
  483. data/doc/guide/src/basics/log_replay/plan_repair_4.png +0 -0
  484. data/doc/guide/src/basics/log_replay/roby_log_main_window.png +0 -0
  485. data/doc/guide/src/basics/relations_display.page +0 -203
  486. data/doc/guide/src/basics/shell.page +0 -102
  487. data/doc/guide/src/default.css +0 -319
  488. data/doc/guide/src/introduction/index.page +0 -29
  489. data/doc/guide/src/introduction/publications.page +0 -14
  490. data/doc/guide/src/relations/dependency.page +0 -89
  491. data/doc/guide/src/relations/index.page +0 -12
  492. data/ext/droby/dump.cc +0 -175
  493. data/ext/droby/extconf.rb +0 -3
  494. data/ext/graph/algorithm.cc +0 -746
  495. data/ext/graph/extconf.rb +0 -7
  496. data/ext/graph/graph.cc +0 -575
  497. data/ext/graph/graph.hh +0 -183
  498. data/ext/graph/iterator_sequence.hh +0 -102
  499. data/ext/graph/undirected_dfs.hh +0 -226
  500. data/ext/graph/undirected_graph.hh +0 -421
  501. data/lib/roby/app/scripts/generate/bookmarks.rb +0 -162
  502. data/lib/roby/app/scripts/replay.rb +0 -31
  503. data/lib/roby/app/scripts/server.rb +0 -18
  504. data/lib/roby/basic_object.rb +0 -151
  505. data/lib/roby/config.rb +0 -14
  506. data/lib/roby/distributed.rb +0 -36
  507. data/lib/roby/distributed/base.rb +0 -448
  508. data/lib/roby/distributed/communication.rb +0 -875
  509. data/lib/roby/distributed/connection_space.rb +0 -616
  510. data/lib/roby/distributed/distributed_object.rb +0 -206
  511. data/lib/roby/distributed/drb.rb +0 -62
  512. data/lib/roby/distributed/notifications.rb +0 -531
  513. data/lib/roby/distributed/peer.rb +0 -555
  514. data/lib/roby/distributed/protocol.rb +0 -529
  515. data/lib/roby/distributed/proxy.rb +0 -343
  516. data/lib/roby/distributed/subscription.rb +0 -311
  517. data/lib/roby/distributed/transaction.rb +0 -498
  518. data/lib/roby/external_process_task.rb +0 -225
  519. data/lib/roby/graph.rb +0 -160
  520. data/lib/roby/log.rb +0 -3
  521. data/lib/roby/log/chronicle.rb +0 -303
  522. data/lib/roby/log/console.rb +0 -74
  523. data/lib/roby/log/data_stream.rb +0 -275
  524. data/lib/roby/log/dot.rb +0 -279
  525. data/lib/roby/log/event_stream.rb +0 -161
  526. data/lib/roby/log/file.rb +0 -396
  527. data/lib/roby/log/gui/basic_display.ui +0 -83
  528. data/lib/roby/log/gui/basic_display_ui.rb +0 -89
  529. data/lib/roby/log/gui/chronicle.rb +0 -26
  530. data/lib/roby/log/gui/chronicle_view.rb +0 -40
  531. data/lib/roby/log/gui/chronicle_view.ui +0 -70
  532. data/lib/roby/log/gui/chronicle_view_ui.rb +0 -90
  533. data/lib/roby/log/gui/data_displays.rb +0 -171
  534. data/lib/roby/log/gui/data_displays.ui +0 -155
  535. data/lib/roby/log/gui/data_displays_ui.rb +0 -146
  536. data/lib/roby/log/gui/notifications.rb +0 -26
  537. data/lib/roby/log/gui/relations.rb +0 -269
  538. data/lib/roby/log/gui/relations.ui +0 -123
  539. data/lib/roby/log/gui/relations_ui.rb +0 -120
  540. data/lib/roby/log/gui/relations_view.rb +0 -185
  541. data/lib/roby/log/gui/relations_view.ui +0 -149
  542. data/lib/roby/log/gui/relations_view_ui.rb +0 -144
  543. data/lib/roby/log/gui/replay.rb +0 -366
  544. data/lib/roby/log/gui/replay_controls.rb +0 -206
  545. data/lib/roby/log/gui/replay_controls.ui +0 -282
  546. data/lib/roby/log/gui/replay_controls_ui.rb +0 -249
  547. data/lib/roby/log/gui/runtime.rb +0 -130
  548. data/lib/roby/log/hooks.rb +0 -186
  549. data/lib/roby/log/logger.rb +0 -203
  550. data/lib/roby/log/notifications.rb +0 -244
  551. data/lib/roby/log/plan_rebuilder.rb +0 -468
  552. data/lib/roby/log/relations.rb +0 -1084
  553. data/lib/roby/log/server.rb +0 -547
  554. data/lib/roby/log/sqlite.rb +0 -47
  555. data/lib/roby/log/timings.rb +0 -233
  556. data/lib/roby/plan-object.rb +0 -371
  557. data/lib/roby/planning.rb +0 -13
  558. data/lib/roby/planning/loops.rb +0 -309
  559. data/lib/roby/planning/model.rb +0 -1012
  560. data/lib/roby/planning/task.rb +0 -180
  561. data/lib/roby/query.rb +0 -655
  562. data/lib/roby/relations/conflicts.rb +0 -67
  563. data/lib/roby/relations/dependency.rb +0 -358
  564. data/lib/roby/relations/ensured.rb +0 -19
  565. data/lib/roby/relations/error_handling.rb +0 -22
  566. data/lib/roby/relations/events.rb +0 -7
  567. data/lib/roby/relations/executed_by.rb +0 -208
  568. data/lib/roby/relations/influence.rb +0 -10
  569. data/lib/roby/relations/planned_by.rb +0 -63
  570. data/lib/roby/state/information.rb +0 -55
  571. data/lib/roby/state/state.rb +0 -367
  572. data/lib/roby/task-operations.rb +0 -186
  573. data/lib/roby/task_index.rb +0 -80
  574. data/lib/roby/test/distributed.rb +0 -230
  575. data/lib/roby/test/tasks/simple_task.rb +0 -23
  576. data/lib/roby/transactions.rb +0 -507
  577. data/lib/roby/transactions/proxy.rb +0 -325
  578. data/plugins/fault_injection/History.txt +0 -4
  579. data/plugins/fault_injection/README.txt +0 -34
  580. data/plugins/fault_injection/Rakefile +0 -12
  581. data/plugins/fault_injection/TODO.txt +0 -0
  582. data/plugins/fault_injection/app.rb +0 -52
  583. data/plugins/fault_injection/fault_injection.rb +0 -89
  584. data/plugins/fault_injection/test/test_fault_injection.rb +0 -78
  585. data/plugins/subsystems/README.txt +0 -37
  586. data/plugins/subsystems/Rakefile +0 -13
  587. data/plugins/subsystems/app.rb +0 -182
  588. data/plugins/subsystems/test/app/README +0 -24
  589. data/plugins/subsystems/test/app/Rakefile +0 -8
  590. data/plugins/subsystems/test/app/config/app.yml +0 -71
  591. data/plugins/subsystems/test/app/config/init.rb +0 -12
  592. data/plugins/subsystems/test/app/config/roby.yml +0 -3
  593. data/plugins/subsystems/test/app/planners/main.rb +0 -20
  594. data/plugins/subsystems/test/app/scripts/distributed +0 -3
  595. data/plugins/subsystems/test/app/scripts/replay +0 -3
  596. data/plugins/subsystems/test/app/scripts/results +0 -3
  597. data/plugins/subsystems/test/app/scripts/run +0 -3
  598. data/plugins/subsystems/test/app/scripts/server +0 -3
  599. data/plugins/subsystems/test/app/scripts/shell +0 -3
  600. data/plugins/subsystems/test/app/scripts/test +0 -3
  601. data/plugins/subsystems/test/app/tasks/services.rb +0 -15
  602. data/plugins/subsystems/test/test_subsystems.rb +0 -78
  603. data/test/distributed/test_communication.rb +0 -195
  604. data/test/distributed/test_connection.rb +0 -284
  605. data/test/distributed/test_execution.rb +0 -378
  606. data/test/distributed/test_mixed_plan.rb +0 -341
  607. data/test/distributed/test_plan_notifications.rb +0 -238
  608. data/test/distributed/test_protocol.rb +0 -525
  609. data/test/distributed/test_query.rb +0 -106
  610. data/test/distributed/test_remote_plan.rb +0 -491
  611. data/test/distributed/test_transaction.rb +0 -466
  612. data/test/mockups/external_process +0 -28
  613. data/test/mockups/tasks.rb +0 -27
  614. data/test/planning/test_loops.rb +0 -432
  615. data/test/planning/test_model.rb +0 -427
  616. data/test/planning/test_task.rb +0 -126
  617. data/test/relations/test_conflicts.rb +0 -42
  618. data/test/relations/test_dependency.rb +0 -324
  619. data/test/relations/test_ensured.rb +0 -38
  620. data/test/relations/test_executed_by.rb +0 -224
  621. data/test/relations/test_planned_by.rb +0 -56
  622. data/test/suite_core.rb +0 -29
  623. data/test/suite_distributed.rb +0 -10
  624. data/test/suite_planning.rb +0 -4
  625. data/test/suite_relations.rb +0 -8
  626. data/test/tasks/test_external_process.rb +0 -126
  627. data/test/tasks/test_thread_task.rb +0 -70
  628. data/test/test_bgl.rb +0 -528
  629. data/test/test_event.rb +0 -969
  630. data/test/test_exceptions.rb +0 -591
  631. data/test/test_execution_engine.rb +0 -987
  632. data/test/test_gui.rb +0 -20
  633. data/test/test_interface.rb +0 -43
  634. data/test/test_log.rb +0 -125
  635. data/test/test_log_server.rb +0 -133
  636. data/test/test_plan.rb +0 -418
  637. data/test/test_query.rb +0 -424
  638. data/test/test_relations.rb +0 -260
  639. data/test/test_state.rb +0 -432
  640. data/test/test_support.rb +0 -16
  641. data/test/test_task.rb +0 -1181
  642. data/test/test_testcase.rb +0 -138
  643. data/test/test_transactions.rb +0 -610
  644. data/test/test_transactions_proxy.rb +0 -216
@@ -1,421 +0,0 @@
1
- // (C) Copyright Sylvain Joyeux 2006
2
- //
3
- // Original code from reverse_graph adaptor
4
- // (C) Copyright David Abrahams 2000.
5
- //
6
- // Distributed under the Boost Software License, Version 1.0. (See
7
- // accompanying file LICENSE_1_0.txt or copy at
8
- // http://www.boost.org/LICENSE_1_0.txt)
9
-
10
- #ifndef UNDIRECTED_GRAPH_HPP
11
- #define UNDIRECTED_GRAPH_HPP
12
-
13
- #include <boost/graph/adjacency_iterator.hpp>
14
- #include <boost/graph/properties.hpp>
15
- #include <boost/static_assert.hpp>
16
- #include "iterator_sequence.hh"
17
- #include <boost/iterator/transform_iterator.hpp>
18
-
19
- #include <boost/type_traits.hpp>
20
-
21
- namespace utilmm {
22
- struct undirected_graph_tag { };
23
-
24
- /** undirected_graph creates an undirected graph from a bidirectional graph. This can allow
25
- * to use some undirected-graph-only algorithms on bidirectional graphs
26
- */
27
- template <class BidirectionalGraph, class GraphRef = const BidirectionalGraph&>
28
- class undirected_graph {
29
- typedef undirected_graph<BidirectionalGraph, GraphRef> Self;
30
- typedef boost::graph_traits<BidirectionalGraph> Traits;
31
-
32
- BOOST_STATIC_ASSERT(( boost::is_same<boost::bidirectional_tag, typename BidirectionalGraph::directed_category>::value ));
33
-
34
- public:
35
- typedef BidirectionalGraph base_type;
36
-
37
- // Constructor
38
- undirected_graph(GraphRef g) : m_g(g) {}
39
-
40
- // Graph requirements
41
- typedef typename Traits::vertex_descriptor vertex_descriptor;
42
- typedef boost::undirected_tag directed_category;
43
- typedef typename Traits::edge_parallel_category edge_parallel_category;
44
- typedef typename Traits::traversal_category traversal_category;
45
-
46
- // Add a 'reverse' flag to edge descriptors, so that source() and target() know what
47
- // needs to be done
48
- typedef std::pair<typename Traits::edge_descriptor, bool> edge_descriptor;
49
- typedef edge_descriptor (*make_undirected_edge_descriptor)(typename Traits::edge_descriptor);
50
-
51
- // Out edges do not need to be swapped
52
- static edge_descriptor make_out_edge_descriptor(typename Traits::edge_descriptor e)
53
- { return make_pair(e, false); }
54
- class base_out_edge_iterator :
55
- public boost::transform_iterator<make_undirected_edge_descriptor, typename Traits::out_edge_iterator>
56
- {
57
- typedef boost::transform_iterator<make_undirected_edge_descriptor, typename Traits::out_edge_iterator>
58
- base_type;
59
-
60
- public:
61
- base_out_edge_iterator() {}
62
- base_out_edge_iterator(typename Traits::out_edge_iterator e)
63
- : base_type(e, make_out_edge_descriptor) {}
64
- };
65
-
66
- static edge_descriptor make_in_edge_descriptor(typename Traits::edge_descriptor e)
67
- { return make_pair(e, true); }
68
- class base_in_edge_iterator :
69
- public boost::transform_iterator<make_undirected_edge_descriptor, typename Traits::in_edge_iterator>
70
- {
71
- typedef boost::transform_iterator<make_undirected_edge_descriptor, typename Traits::in_edge_iterator>
72
- base_type;
73
-
74
- public:
75
- base_in_edge_iterator() {}
76
- base_in_edge_iterator(typename Traits::in_edge_iterator e)
77
- : base_type(e, make_in_edge_descriptor) {}
78
- };
79
-
80
- // Do not swap plain edge iterators
81
- class edge_iterator :
82
- public boost::transform_iterator<make_undirected_edge_descriptor, typename Traits::edge_iterator>
83
- {
84
- typedef boost::transform_iterator<make_undirected_edge_descriptor, typename Traits::edge_iterator>
85
- base_type;
86
- public:
87
- edge_iterator() {}
88
- edge_iterator(typename Traits::edge_iterator e)
89
- : base_type(e, make_out_edge_descriptor) {}
90
- };
91
-
92
- // IncidenceGraph requirements
93
- typedef typename Traits::degree_size_type degree_size_type;
94
- typedef iterator_sequence
95
- < base_in_edge_iterator
96
- , base_out_edge_iterator
97
- > in_edge_iterator;
98
- typedef in_edge_iterator out_edge_iterator;
99
-
100
- // AdjacencyGraph requirements
101
- typedef iterator_sequence
102
- < typename Traits::adjacency_iterator
103
- , typename BidirectionalGraph::inv_adjacency_iterator
104
- > adjacency_iterator;
105
- typedef adjacency_iterator inv_adjacency_iterator;
106
-
107
- // VertexListGraph requirements
108
- typedef typename Traits::vertex_iterator vertex_iterator;
109
-
110
- // EdgeListGraph requirements
111
- typedef typename Traits::edge_iterator edge_iterator;
112
- typedef typename Traits::vertices_size_type vertices_size_type;
113
- typedef typename Traits::edges_size_type edges_size_type;
114
-
115
- // More typedefs used by detail::edge_property_map, vertex_property_map
116
- typedef typename BidirectionalGraph::edge_property_type
117
- edge_property_type;
118
- typedef typename BidirectionalGraph::vertex_property_type
119
- vertex_property_type;
120
- typedef undirected_graph_tag graph_tag;
121
-
122
- static vertex_descriptor null_vertex()
123
- { return Traits::null_vertex(); }
124
-
125
- // Bundled properties support
126
- typename boost::graph::detail::bundled_result<BidirectionalGraph,
127
- edge_descriptor>::type&
128
- operator[](edge_descriptor x)
129
- { return m_g[x.first]; }
130
-
131
- typename boost::graph::detail::bundled_result<BidirectionalGraph,
132
- edge_descriptor>::type const&
133
- operator[](edge_descriptor x) const
134
- { return m_g[x.first]; }
135
-
136
-
137
-
138
- typename boost::graph::detail::bundled_result<BidirectionalGraph,
139
- vertex_descriptor>::type&
140
- operator[](vertex_descriptor x)
141
- { return m_g[x]; }
142
-
143
- typename boost::graph::detail::bundled_result<BidirectionalGraph,
144
- vertex_descriptor>::type const&
145
- operator[](vertex_descriptor x) const
146
- { return m_g[x]; }
147
-
148
-
149
- // would be private, but template friends aren't portable enough.
150
- // private:
151
- GraphRef m_g;
152
- };
153
-
154
- template <class BidirectionalGraph>
155
- inline undirected_graph<BidirectionalGraph>
156
- make_undirected_graph(const BidirectionalGraph& g)
157
- {
158
- return undirected_graph<BidirectionalGraph>(g);
159
- }
160
-
161
- template <class BidirectionalGraph>
162
- inline undirected_graph<BidirectionalGraph, BidirectionalGraph&>
163
- make_undirected_graph(BidirectionalGraph& g)
164
- {
165
- return undirected_graph<BidirectionalGraph, BidirectionalGraph&>(g);
166
- }
167
-
168
- template <class BidirectionalGraph, class GRef>
169
- std::pair<typename undirected_graph<BidirectionalGraph>::vertex_iterator,
170
- typename undirected_graph<BidirectionalGraph>::vertex_iterator>
171
- vertices(const undirected_graph<BidirectionalGraph,GRef>& g)
172
- {
173
- return vertices(g.m_g);
174
- }
175
-
176
- template <class BidirectionalGraph, class GRef>
177
- std::pair<typename undirected_graph<BidirectionalGraph>::edge_iterator,
178
- typename undirected_graph<BidirectionalGraph>::edge_iterator>
179
- edges(const undirected_graph<BidirectionalGraph,GRef>& g)
180
- {
181
- return edges(g.m_g);
182
- }
183
-
184
- template <class BidirectionalGraph, class GRef>
185
- inline std::pair<typename undirected_graph<BidirectionalGraph,GRef>::out_edge_iterator,
186
- typename undirected_graph<BidirectionalGraph,GRef>::out_edge_iterator>
187
- out_edges(const typename BidirectionalGraph::vertex_descriptor u,
188
- const undirected_graph<BidirectionalGraph,GRef>& g)
189
- {
190
- std::pair<typename BidirectionalGraph::out_edge_iterator,
191
- typename BidirectionalGraph::out_edge_iterator>
192
- out_edges = boost::out_edges(u, g.m_g);
193
- std::pair<typename BidirectionalGraph::in_edge_iterator,
194
- typename BidirectionalGraph::in_edge_iterator>
195
- in_edges = boost::in_edges(u, g.m_g);
196
-
197
- typedef typename undirected_graph<BidirectionalGraph,GRef>::out_edge_iterator edge_iterator;
198
- return make_pair(
199
- edge_iterator(in_edges.first, in_edges.second, out_edges.first, out_edges.first),
200
- edge_iterator(in_edges.second, in_edges.second, out_edges.second, out_edges.second));
201
- }
202
-
203
- template <class BidirectionalGraph, class GRef>
204
- inline typename BidirectionalGraph::vertices_size_type
205
- num_vertices(const undirected_graph<BidirectionalGraph,GRef>& g)
206
- {
207
- return num_vertices(g.m_g);
208
- }
209
-
210
- template <class BidirectionalGraph, class GRef>
211
- inline typename undirected_graph<BidirectionalGraph>::edges_size_type
212
- num_edges(const undirected_graph<BidirectionalGraph,GRef>& g)
213
- {
214
- return num_edges(g.m_g);
215
- }
216
-
217
- template <class BidirectionalGraph, class GRef>
218
- inline typename BidirectionalGraph::degree_size_type
219
- out_degree(const typename BidirectionalGraph::vertex_descriptor u,
220
- const undirected_graph<BidirectionalGraph,GRef>& g)
221
- {
222
- return in_degree(u, g.m_g) + out_degree(u, g.m_g);
223
- }
224
-
225
- template <class BidirectionalGraph, class GRef>
226
- inline std::pair<typename BidirectionalGraph::edge_descriptor, bool>
227
- edge(const typename BidirectionalGraph::vertex_descriptor u,
228
- const typename BidirectionalGraph::vertex_descriptor v,
229
- const undirected_graph<BidirectionalGraph,GRef>& g)
230
- {
231
- return edge(v, u, g.m_g);
232
- }
233
-
234
- template <class BidirectionalGraph, class GRef>
235
- inline std::pair<typename BidirectionalGraph::out_edge_iterator,
236
- typename BidirectionalGraph::out_edge_iterator>
237
- in_edges(const typename BidirectionalGraph::vertex_descriptor u,
238
- const undirected_graph<BidirectionalGraph,GRef>& g)
239
- { return out_edges(u, g); }
240
-
241
- template <class BidirectionalGraph, class GRef>
242
- inline std::pair<typename undirected_graph<BidirectionalGraph,GRef>::adjacency_iterator,
243
- typename undirected_graph<BidirectionalGraph,GRef>::adjacency_iterator>
244
- adjacent_vertices(const typename BidirectionalGraph::vertex_descriptor u,
245
- const undirected_graph<BidirectionalGraph,GRef>& g)
246
- {
247
- std::pair<typename BidirectionalGraph::adjacency_iterator,
248
- typename BidirectionalGraph::adjacency_iterator>
249
- adjacency = boost::adjacent_vertices(u, g.m_g);
250
- std::pair<typename BidirectionalGraph::inv_adjacency_iterator,
251
- typename BidirectionalGraph::inv_adjacency_iterator>
252
- inv_adjacency = boost::inv_adjacent_vertices(u, g.m_g);
253
-
254
- typedef typename undirected_graph<BidirectionalGraph,GRef>::adjacency_iterator adjacency_iterator;
255
- return std::make_pair(
256
- adjacency_iterator(adjacency.first, adjacency.second, inv_adjacency.first, inv_adjacency.first),
257
- adjacency_iterator(adjacency.second, adjacency.second, inv_adjacency.second, inv_adjacency.second));
258
- }
259
-
260
- template <class BidirectionalGraph, class GRef>
261
- inline typename BidirectionalGraph::degree_size_type
262
- in_degree(const typename BidirectionalGraph::vertex_descriptor u,
263
- const undirected_graph<BidirectionalGraph,GRef>& g)
264
- { return out_degree(u, g); }
265
-
266
- template <class Edge, class BidirectionalGraph, class GRef>
267
- inline typename boost::graph_traits<BidirectionalGraph>::vertex_descriptor
268
- source(const Edge& e, const undirected_graph<BidirectionalGraph,GRef>& g)
269
- {
270
- if (e.second)
271
- return target(e.first, g.m_g);
272
- else
273
- return source(e.first, g.m_g);
274
- }
275
-
276
- template <class Edge, class BidirectionalGraph, class GRef>
277
- inline typename boost::graph_traits<BidirectionalGraph>::vertex_descriptor
278
- target(const Edge& e, const undirected_graph<BidirectionalGraph,GRef>& g)
279
- {
280
- if (e.second)
281
- return source(e.first, g.m_g);
282
- else
283
- return target(e.first, g.m_g);
284
- }
285
-
286
-
287
- namespace detail {
288
-
289
- struct undirected_graph_vertex_property_selector {
290
- template <class UndirectedGraph, class Property, class Tag>
291
- struct bind_ {
292
- typedef typename UndirectedGraph::base_type Graph;
293
- typedef boost::property_map<Graph, Tag> PMap;
294
- typedef typename PMap::type type;
295
- typedef typename PMap::const_type const_type;
296
- };
297
- };
298
-
299
- struct undirected_graph_edge_property_selector {
300
- template <class UndirectedGraph, class Property, class Tag>
301
- struct bind_ {
302
- typedef typename UndirectedGraph::base_type Graph;
303
- typedef boost::property_map<Graph, Tag> PMap;
304
- typedef typename PMap::type type;
305
- typedef typename PMap::const_type const_type;
306
- };
307
- };
308
-
309
- } // namespace detail
310
-
311
- /** This class adapts a property map on the edges of a graph to a property map
312
- * on the edges of the corresponding undirected graph */
313
- template<typename PropertyMap>
314
- class undirected_property_map
315
- {
316
- public:
317
- undirected_property_map(PropertyMap pmap)
318
- : m_map(pmap) {}
319
-
320
- PropertyMap& map() { return m_map; }
321
- PropertyMap const& map() const { return m_map; }
322
-
323
- private:
324
- PropertyMap m_map;
325
- };
326
-
327
- template<typename PropertyMap, typename EdgeDescriptor, typename ValueType>
328
- void put(undirected_property_map<PropertyMap>& map,
329
- EdgeDescriptor e, ValueType value)
330
- { put(map.map(), e.first, value); }
331
- template<typename PropertyMap, typename EdgeDescriptor>
332
- typename boost::property_traits<PropertyMap>::value_type
333
- get(undirected_property_map<PropertyMap> const& map,
334
- EdgeDescriptor e)
335
- { return get(map.map(), e.first); }
336
-
337
- template<typename PropertyMap>
338
- undirected_property_map<PropertyMap> make_undirected_edge_map(PropertyMap pmap)
339
- { return undirected_property_map<PropertyMap>(pmap); }
340
-
341
-
342
- } // namespace utilmm
343
-
344
- // Include specialization in the boost namespace
345
- namespace boost {
346
- template<typename PropertyMap>
347
- struct property_traits< utilmm::undirected_property_map<PropertyMap> >
348
- : property_traits<PropertyMap> {};
349
-
350
- template <>
351
- struct vertex_property_selector<utilmm::undirected_graph_tag> {
352
- typedef utilmm::detail::undirected_graph_vertex_property_selector type;
353
- };
354
-
355
- template <>
356
- struct edge_property_selector<utilmm::undirected_graph_tag> {
357
- typedef utilmm::detail::undirected_graph_edge_property_selector type;
358
- };
359
-
360
- namespace detail {
361
- template<typename BidirGraph, typename GRef, typename Property>
362
- struct get_property_map_type { };
363
- template<typename BidirGraph, typename Property>
364
- struct get_property_map_type<BidirGraph, const BidirGraph&, Property>
365
- { typedef typename property_map<BidirGraph, Property>::const_type type; };
366
- template<typename BidirGraph, typename Property>
367
- struct get_property_map_type<BidirGraph, BidirGraph&, Property>
368
- { typedef typename property_map<BidirGraph, Property>::type type; };
369
- }
370
-
371
- template <class BidirGraph, class GRef, class Property>
372
- typename detail::get_property_map_type<BidirGraph, GRef, Property>::type
373
- get(Property p, utilmm::undirected_graph<BidirGraph,GRef>& g)
374
- {
375
- return get(p, g.m_g);
376
- }
377
-
378
- template <class BidirGraph, class GRef, class Property>
379
- typename detail::get_property_map_type<BidirGraph, GRef, Property>::type
380
- get(Property p, const utilmm::undirected_graph<BidirGraph,GRef>& g)
381
- {
382
- return get(p, g.m_g);
383
- }
384
-
385
- template <class BidirectionalGraph, class GRef, class Property, class Key>
386
- typename property_traits<
387
- typename property_map<BidirectionalGraph, Property>::const_type
388
- >::value_type
389
- get(Property p, const utilmm::undirected_graph<BidirectionalGraph,GRef>& g, const Key& k)
390
- {
391
- return get(p, g.m_g, k);
392
- }
393
-
394
- template <class BidirectionalGraph, class GRef, class Property, class Key, class Value>
395
- void
396
- put(Property p, const utilmm::undirected_graph<BidirectionalGraph,GRef>& g, const Key& k,
397
- const Value& val)
398
- {
399
- put(p, g.m_g, k, val);
400
- }
401
-
402
- template<typename BidirectionalGraph, typename GRef, typename Tag,
403
- typename Value>
404
- inline void
405
- set_property(const utilmm::undirected_graph<BidirectionalGraph,GRef>& g, Tag tag,
406
- const Value& value)
407
- {
408
- set_property(g.m_g, tag, value);
409
- }
410
-
411
- template<typename BidirectionalGraph, typename GRef, typename Tag>
412
- inline
413
- typename graph_property<BidirectionalGraph, Tag>::type
414
- get_property(const utilmm::undirected_graph<BidirectionalGraph,GRef>& g, Tag tag)
415
- {
416
- return get_property(g.m_g, tag);
417
- }
418
-
419
- } // namespace boost
420
-
421
- #endif
@@ -1,162 +0,0 @@
1
- #! /usr/bin/env ruby
2
-
3
- require 'roby/log/event_stream'
4
- STDOUT.sync = true
5
-
6
- class Roby::Log::EventMatcher
7
- attr_reader :remote_ids
8
- attr_reader :predicate_id
9
- attr_reader :notifications
10
- def initialize
11
- @remote_ids = Hash.new
12
- @notifications = Hash.new
13
- @predicate_id = 0
14
- end
15
-
16
- def local_object(remote_id)
17
- if remote_id.kind_of?(Roby::Distributed::RemoteID)
18
- unless obj = remote_ids[remote_id]
19
- raise "no object for #{remote_id}: #{remote_ids.keys}"
20
- end
21
- obj
22
- else
23
- remote_id
24
- end
25
- end
26
-
27
- def filter(log)
28
- while log.has_sample?
29
- log.read_and_decode.each_slice(4) do |m, sec, usec, args|
30
- event(m, sec, usec, args)
31
- end
32
- end
33
- end
34
-
35
- def event(m, sec, usec, args)
36
- if m == :added_tasks || m == :added_events
37
- objects = args[1]
38
- for object in objects
39
- for remote_id in object.remote_siblings.values
40
- remote_ids[remote_id] = object
41
- end
42
- end
43
-
44
- elsif m == :finalized_task || m == :finalized_event
45
- object = args[1]
46
- remote_ids.delete(object)
47
- end
48
-
49
- time = nil
50
- if predicate_set = notifications[m]
51
- for p, callback in predicate_set
52
- if p.call(args)
53
- time ||= Time.at(sec, usec)
54
- callback.call(time, args)
55
- end
56
- end
57
- end
58
- end
59
-
60
- def parse(expr, &block)
61
- case expr
62
- when /^(\w+)\((.*)\)$/
63
- method = :generator_fired
64
- task_model = Regexp.new($2)
65
- symbol = $1.to_sym
66
- predicate = lambda do |args|
67
- generator = local_object(args[0])
68
- if generator.respond_to?(:task) && generator.symbol == symbol
69
- task = local_object(generator.task)
70
- Regexp.new(task_model) === local_object(task).model.ancestors[0][0]
71
- end
72
- end
73
- end
74
-
75
- if predicate
76
- notifications[method] ||= Array.new
77
- notifications[method] << [predicate, block]
78
- end
79
- end
80
- end
81
-
82
- config_path = ARGV[0]
83
- event_path = ARGV[1]
84
- unless config_path && event_path
85
- STDERR.puts <<-EOU
86
- Usage: scripts/generate/bookmarks config.yml event_set
87
-
88
- This script generates a bookmark file suitable for roby-log replay based on a
89
- log file and on a configuration file. The configuration file format is as
90
- follows:
91
-
92
- event_name:
93
- - start_point
94
- - end_point
95
-
96
- where start_point and end_point are matching expressions. The following
97
- expressions are recognized:
98
-
99
- start(task_model)
100
- ready(task_model)
101
- stop(task_model
102
-
103
- they trigger when, respectively, a task instance of the specified model is
104
- started, its ready event has emitted and it stopped.
105
-
106
- For instance, to get a 'localization_initialized' bookmark for a Localization
107
- task, you would write the following configuration file:
108
-
109
- localization_initialized:
110
- - start(Localization)
111
- - ready(Localization)
112
-
113
- EOU
114
-
115
- exit(1)
116
-
117
- end
118
-
119
- # Reverse the config file from a 'bookmark_name => event' into a 'event' =>
120
- # 'bookmark_name'
121
- config = YAML.load(File.open(ARGV[0]))
122
- bookmarks = Hash.new
123
-
124
- filter = Roby::Log::EventMatcher.new
125
- config.each do |name, (start_point, end_point)|
126
- bookmarks[name] = []
127
- filter.parse(start_point) do |time, args|
128
- STDERR.puts "#{time.to_hms} starting point for #{name}"
129
- bookmarks[name] << [time]
130
- end
131
- filter.parse(end_point) do |time, args|
132
- if bookmarks[name].last && bookmarks[name].last[0] && !bookmarks[name].last[1]
133
- STDERR.puts "#{time.to_hms} end point for #{name}"
134
- bookmarks[name].last[1] = time
135
- end
136
- end
137
- end
138
-
139
- log = Roby::Log::EventStream.open(ARGV[1])
140
- filter.filter(log)
141
-
142
- bookmark_data = Hash.new
143
- bookmarks.each do |name, ranges|
144
- if ranges.size == 1
145
- bookmark_data[name] = ranges[0].map { |t| t }
146
- else
147
- ranges.each_with_index do |r, i|
148
- bookmark_data["#{name}-#{i}"] = r.map { |t| t }
149
- end
150
- end
151
- end
152
-
153
- bookmark_data =
154
-
155
- bookmark_data.sort_by { |n, r| r[0] }.
156
- each do |name, range|
157
- puts "#{name}:"
158
- range.each do |time|
159
- puts " - \"#{time.to_hms}\""
160
- end
161
- end
162
-