pione 0.1.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.
- data/.gitignore +14 -0
- data/Gemfile +5 -0
- data/LICENSE.txt +22 -0
- data/README.md +94 -0
- data/Rakefile +118 -0
- data/bin/pione-broker +5 -0
- data/bin/pione-clean +5 -0
- data/bin/pione-client +5 -0
- data/bin/pione-eval +111 -0
- data/bin/pione-relay +5 -0
- data/bin/pione-relay-account-db +5 -0
- data/bin/pione-relay-client-db +5 -0
- data/bin/pione-search-log +30 -0
- data/bin/pione-syntax-checker +5 -0
- data/bin/pione-task-worker +5 -0
- data/bin/pione-tuple-space-provider +5 -0
- data/bin/pione-tuple-space-receiver +5 -0
- data/bin/pione-tuple-space-viewer +5 -0
- data/demo/demo.rb +311 -0
- data/demo/public/base.css +94 -0
- data/demo/public/demo.js +107 -0
- data/demo/public/index.html +91 -0
- data/demo/public/jquery-1.8.3.min.js +2 -0
- data/example/CountChar/CountChar.pione +64 -0
- data/example/CountChar/misc/CountChar.rb +22 -0
- data/example/CountChar/text/aidokushono_insho.txt +32 -0
- data/example/CountChar/text/aikokuka_shokan.txt +108 -0
- data/example/CountChar/text/carlyle_hakubutsukan.txt +58 -0
- data/example/CountChar/text/dark_minister.txt +2440 -0
- data/example/CountChar/text/kaikano_otto.txt +61 -0
- data/example/CountChar/text/kaikon.txt +30 -0
- data/example/CountChar/text/nagashimano_shi.txt +45 -0
- data/example/CountChar/text/saikachibuchi.txt +80 -0
- data/example/CountChar/text/saikonihonno_josei.txt +91 -0
- data/example/CountChar/text/taishojugonenno_bundan.txt +21 -0
- data/example/FeatureExample/FeatureExample.pione +7 -0
- data/example/Fib/Fib.pione +56 -0
- data/example/Fib/FibBC.pione +56 -0
- data/example/HelloWorld/HelloWorld.pione +5 -0
- data/example/LucasNumber/LucasNumber.pione +64 -0
- data/example/MakePair/MakePair.pione +14 -0
- data/example/MakePair/data/1.i +0 -0
- data/example/MakePair/data/2.i +0 -0
- data/example/MakePair/data/3.i +0 -0
- data/example/MakePair/data/4.i +0 -0
- data/example/MakePair/data/5.i +0 -0
- data/example/SieveOfEratosthenes/SieveOfEratosthenes.pione +61 -0
- data/example/SingleParticlesWithRef/Makefile +289 -0
- data/example/SingleParticlesWithRef/SingleParticlesWithRef.Makefile +153 -0
- data/example/SingleParticlesWithRef/SingleParticlesWithRef.pione +116 -0
- data/example/SingleParticlesWithRef/SingleParticlesWithRefFull.pione +400 -0
- data/example/SingleParticlesWithRef/data/121p-shift-0-0-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-0-120-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-0-180-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-0-240-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-0-300-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-0-60-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-120-0-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-120-120-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-120-180-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-120-240-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-120-300-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-120-60-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-180-0-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-180-120-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-180-180-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-180-240-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-180-300-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-180-60-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-240-0-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-240-120-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-240-180-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-240-240-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-240-300-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-240-60-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-300-0-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-300-120-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-300-180-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-300-240-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-300-300-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-300-60-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-60-0-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-60-120-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-60-180-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-60-240-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-60-300-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-60-60-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-0-0-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-0-120-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-0-180-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-0-240-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-0-300-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-0-60-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-120-0-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-120-120-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-120-180-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-120-240-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-120-300-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-120-60-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-180-0-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-180-120-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-180-180-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-180-240-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-180-300-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-180-60-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-240-0-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-240-120-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-240-180-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-240-240-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-240-300-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-240-60-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-300-0-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-300-120-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-300-180-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-300-240-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-300-300-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-300-60-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-60-0-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-60-120-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-60-180-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-60-240-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-60-300-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift-noise-60-60-0.roi +0 -0
- data/example/SingleParticlesWithRef/data/121p-shift.pdb +3381 -0
- data/example/SingleParticlesWithRef/data/all.ref2d +0 -0
- data/example/SingleParticlesWithRef/data/all.ref3d +0 -0
- data/example/Sum/Sum.pione +52 -0
- data/example/SyntaxError/call_rule_error.pione +6 -0
- data/example/SyntaxError/feature_line_error.pione +7 -0
- data/example/SyntaxError/flow_block_error.pione +5 -0
- data/example/SyntaxError/input_line_error.pione +6 -0
- data/example/SyntaxError/invalid_rule_name.pione +6 -0
- data/example/SyntaxError/param_line_error.pione +7 -0
- data/example/SyntaxError/variable-binding-error.pione +11 -0
- data/lib/pione.rb +241 -0
- data/lib/pione/agent/basic-agent.rb +333 -0
- data/lib/pione/agent/broker.rb +274 -0
- data/lib/pione/agent/command-listener.rb +47 -0
- data/lib/pione/agent/input-generator.rb +194 -0
- data/lib/pione/agent/logger.rb +65 -0
- data/lib/pione/agent/process-manager.rb +38 -0
- data/lib/pione/agent/rule-provider.rb +64 -0
- data/lib/pione/agent/task-worker.rb +274 -0
- data/lib/pione/agent/trivial-routine-worker.rb +28 -0
- data/lib/pione/agent/tuple-space-client.rb +146 -0
- data/lib/pione/agent/tuple-space-server-client-life-checker.rb +29 -0
- data/lib/pione/command-option/basic-option.rb +42 -0
- data/lib/pione/command-option/child-process-option.rb +17 -0
- data/lib/pione/command-option/common-option.rb +29 -0
- data/lib/pione/command-option/daemon-option.rb +12 -0
- data/lib/pione/command-option/presence-notifier-option.rb +15 -0
- data/lib/pione/command-option/task-worker-owner-option.rb +17 -0
- data/lib/pione/command-option/tuple-space-provider-option.rb +26 -0
- data/lib/pione/command-option/tuple-space-provider-owner-option.rb +16 -0
- data/lib/pione/command-option/tuple-space-receiver-option.rb +12 -0
- data/lib/pione/command/basic-command.rb +126 -0
- data/lib/pione/command/child-process.rb +43 -0
- data/lib/pione/command/daemon-process.rb +18 -0
- data/lib/pione/command/front-owner-command.rb +37 -0
- data/lib/pione/command/pione-broker.rb +53 -0
- data/lib/pione/command/pione-clean.rb +16 -0
- data/lib/pione/command/pione-client.rb +273 -0
- data/lib/pione/command/pione-relay-account-db.rb +85 -0
- data/lib/pione/command/pione-relay-client-db.rb +80 -0
- data/lib/pione/command/pione-relay.rb +47 -0
- data/lib/pione/command/pione-syntax-checker.rb +103 -0
- data/lib/pione/command/pione-task-worker.rb +123 -0
- data/lib/pione/command/pione-tuple-space-provider.rb +87 -0
- data/lib/pione/command/pione-tuple-space-receiver.rb +55 -0
- data/lib/pione/command/pione-tuple-space-viewer.rb +151 -0
- data/lib/pione/command/tuple-space-provider-owner.rb +6 -0
- data/lib/pione/front/basic-front.rb +64 -0
- data/lib/pione/front/broker-front.rb +30 -0
- data/lib/pione/front/client-front.rb +28 -0
- data/lib/pione/front/relay-front.rb +19 -0
- data/lib/pione/front/task-worker-front.rb +16 -0
- data/lib/pione/front/task-worker-owner.rb +42 -0
- data/lib/pione/front/tuple-space-provider-front.rb +22 -0
- data/lib/pione/front/tuple-space-provider-owner.rb +11 -0
- data/lib/pione/front/tuple-space-receiver-front.rb +18 -0
- data/lib/pione/model/assignment.rb +89 -0
- data/lib/pione/model/basic-model.rb +395 -0
- data/lib/pione/model/binary-operator.rb +80 -0
- data/lib/pione/model/block.rb +233 -0
- data/lib/pione/model/boolean.rb +138 -0
- data/lib/pione/model/call-rule.rb +69 -0
- data/lib/pione/model/data-expr.rb +360 -0
- data/lib/pione/model/feature-expr.rb +794 -0
- data/lib/pione/model/float.rb +107 -0
- data/lib/pione/model/integer.rb +140 -0
- data/lib/pione/model/list.rb +104 -0
- data/lib/pione/model/message.rb +80 -0
- data/lib/pione/model/package.rb +48 -0
- data/lib/pione/model/parameters.rb +282 -0
- data/lib/pione/model/rule-expr.rb +120 -0
- data/lib/pione/model/rule-io.rb +166 -0
- data/lib/pione/model/rule.rb +294 -0
- data/lib/pione/model/string.rb +111 -0
- data/lib/pione/model/undefined-value.rb +24 -0
- data/lib/pione/model/variable-table.rb +315 -0
- data/lib/pione/model/variable.rb +87 -0
- data/lib/pione/parser/block-parser.rb +83 -0
- data/lib/pione/parser/common-parser.rb +145 -0
- data/lib/pione/parser/document-parser.rb +58 -0
- data/lib/pione/parser/error-message.yml +4 -0
- data/lib/pione/parser/expr-parser.rb +266 -0
- data/lib/pione/parser/feature-expr-parser.rb +105 -0
- data/lib/pione/parser/flow-element-parser.rb +181 -0
- data/lib/pione/parser/literal-parser.rb +182 -0
- data/lib/pione/parser/rule-definition-parser.rb +163 -0
- data/lib/pione/parser/syntax-error.rb +61 -0
- data/lib/pione/patch/array-patch.rb +3 -0
- data/lib/pione/patch/drb-patch.rb +467 -0
- data/lib/pione/patch/monitor-patch.rb +16 -0
- data/lib/pione/patch/rinda-patch.rb +759 -0
- data/lib/pione/patch/uri-patch.rb +66 -0
- data/lib/pione/relay/receiver-socket.rb +69 -0
- data/lib/pione/relay/relay-account-db.rb +55 -0
- data/lib/pione/relay/relay-client-db.rb +53 -0
- data/lib/pione/relay/relay-socket.rb +215 -0
- data/lib/pione/relay/trampoline.rb +22 -0
- data/lib/pione/relay/transmitter-socket.rb +167 -0
- data/lib/pione/resource/basic-resource.rb +92 -0
- data/lib/pione/resource/dropbox-resource.rb +106 -0
- data/lib/pione/resource/ftp.rb +84 -0
- data/lib/pione/resource/local.rb +113 -0
- data/lib/pione/rule-handler/action-handler.rb +184 -0
- data/lib/pione/rule-handler/basic-handler.rb +217 -0
- data/lib/pione/rule-handler/flow-handler.rb +339 -0
- data/lib/pione/rule-handler/root-handler.rb +23 -0
- data/lib/pione/rule-handler/system-handler.rb +13 -0
- data/lib/pione/system/common.rb +22 -0
- data/lib/pione/system/config.rb +20 -0
- data/lib/pione/system/document.rb +81 -0
- data/lib/pione/system/file-cache.rb +150 -0
- data/lib/pione/system/global.rb +346 -0
- data/lib/pione/system/identifier.rb +61 -0
- data/lib/pione/system/init.rb +16 -0
- data/lib/pione/system/object.rb +35 -0
- data/lib/pione/transformer/block-transformer.rb +23 -0
- data/lib/pione/transformer/document-transformer.rb +36 -0
- data/lib/pione/transformer/expr-transformer.rb +89 -0
- data/lib/pione/transformer/feature-expr-transformer.rb +56 -0
- data/lib/pione/transformer/flow-element-transformer.rb +66 -0
- data/lib/pione/transformer/literal-transformer.rb +76 -0
- data/lib/pione/transformer/rule-definition-transformer.rb +62 -0
- data/lib/pione/transformer/transformer-module.rb +37 -0
- data/lib/pione/tuple-space/data-finder.rb +165 -0
- data/lib/pione/tuple-space/presence-notifier.rb +83 -0
- data/lib/pione/tuple-space/relay.rb +9 -0
- data/lib/pione/tuple-space/tuple-space-provider.rb +85 -0
- data/lib/pione/tuple-space/tuple-space-receiver.rb +140 -0
- data/lib/pione/tuple-space/tuple-space-server-interface.rb +60 -0
- data/lib/pione/tuple-space/tuple-space-server.rb +156 -0
- data/lib/pione/tuple-space/update-criteria.rb +96 -0
- data/lib/pione/tuple/agent-tuple.rb +10 -0
- data/lib/pione/tuple/attribute-tuple.rb +7 -0
- data/lib/pione/tuple/base-uri-tuple.rb +9 -0
- data/lib/pione/tuple/basic-tuple.rb +317 -0
- data/lib/pione/tuple/bye-tuple.rb +9 -0
- data/lib/pione/tuple/command-tuple.rb +9 -0
- data/lib/pione/tuple/data-tuple.rb +18 -0
- data/lib/pione/tuple/dry-run-tuple.rb +8 -0
- data/lib/pione/tuple/exception-tuple.rb +11 -0
- data/lib/pione/tuple/finished-tuple.rb +17 -0
- data/lib/pione/tuple/foreground-tuple.rb +7 -0
- data/lib/pione/tuple/log-tuple.rb +14 -0
- data/lib/pione/tuple/process-info-tuple.rb +9 -0
- data/lib/pione/tuple/request-rule-tuple.rb +9 -0
- data/lib/pione/tuple/rule-tuple.rb +10 -0
- data/lib/pione/tuple/shift-tuple.rb +13 -0
- data/lib/pione/tuple/task-tuple.rb +36 -0
- data/lib/pione/tuple/task-worker-resource-tuple.rb +9 -0
- data/lib/pione/tuple/working-tuple.rb +13 -0
- data/lib/pione/uri-scheme/basic-scheme.rb +40 -0
- data/lib/pione/uri-scheme/broadcast-scheme.rb +11 -0
- data/lib/pione/uri-scheme/dropbox-scheme.rb +9 -0
- data/lib/pione/uri-scheme/local-scheme.rb +28 -0
- data/lib/pione/util/error-report.rb +12 -0
- data/lib/pione/util/log.rb +79 -0
- data/lib/pione/util/message.rb +155 -0
- data/lib/pione/util/misc.rb +73 -0
- data/lib/pione/util/terminal.rb +78 -0
- data/lib/pione/util/waiter-table.rb +53 -0
- data/lib/pione/version.rb +3 -0
- data/misc/env.sh +2 -0
- data/misc/test-drb-stop-service.rb +34 -0
- data/misc/test-ensure-and-thread-kill.rb +40 -0
- data/misc/test-many-waiters-client.rb +56 -0
- data/misc/test-many-waiters-server.rb +14 -0
- data/misc/write_and_take_test.png +0 -0
- data/misc/write_and_take_test.rb +36 -0
- data/pione.gemspec +49 -0
- data/test/agent/spec_basic-agent.rb +170 -0
- data/test/agent/spec_broker.rb +36 -0
- data/test/agent/spec_command-listener.rb +30 -0
- data/test/agent/spec_input-generator.rb +123 -0
- data/test/agent/spec_logger.rb +71 -0
- data/test/agent/spec_rule-provider.rb +65 -0
- data/test/agent/spec_task-worker.rb +307 -0
- data/test/agent/spec_tuple-space-client.rb +30 -0
- data/test/model/spec_assignment.rb +51 -0
- data/test/model/spec_binary-operator.rb +39 -0
- data/test/model/spec_block.rb +154 -0
- data/test/model/spec_boolean.rb +115 -0
- data/test/model/spec_call-rule.rb +23 -0
- data/test/model/spec_data-expr.rb +312 -0
- data/test/model/spec_feature-expr.rb +359 -0
- data/test/model/spec_feature-expr.yml +16 -0
- data/test/model/spec_float.rb +141 -0
- data/test/model/spec_integer.rb +141 -0
- data/test/model/spec_list.rb +26 -0
- data/test/model/spec_message.rb +42 -0
- data/test/model/spec_package.rb +15 -0
- data/test/model/spec_parameters.rb +148 -0
- data/test/model/spec_rule-expr.rb +66 -0
- data/test/model/spec_rule-io.rb +32 -0
- data/test/model/spec_rule.rb +158 -0
- data/test/model/spec_string.rb +106 -0
- data/test/model/spec_variable-table.rb +117 -0
- data/test/model/spec_variable.rb +84 -0
- data/test/parser/spec_block-parser.rb +5 -0
- data/test/parser/spec_block-parser.yml +85 -0
- data/test/parser/spec_common-parser.rb +281 -0
- data/test/parser/spec_expr-parser.rb +6 -0
- data/test/parser/spec_expr-parser.yml +82 -0
- data/test/parser/spec_feature-expr-parser.rb +32 -0
- data/test/parser/spec_feature-expr-parser.yml +25 -0
- data/test/parser/spec_flow-element-parser.rb +5 -0
- data/test/parser/spec_flow-element-parser.yml +180 -0
- data/test/parser/spec_literal-parser.rb +5 -0
- data/test/parser/spec_literal-parser.yml +123 -0
- data/test/parser/spec_rule-definition-parser.rb +5 -0
- data/test/parser/spec_rule-definition-parser.yml +93 -0
- data/test/patch/spec_rinda-patch.rb +32 -0
- data/test/patch/spec_uri-patch.rb +23 -0
- data/test/rule-handler/spec_action-handler.rb +135 -0
- data/test/rule-handler/spec_flow-handler.rb +127 -0
- data/test/spec_common.rb +14 -0
- data/test/spec_data-finder.rb +88 -0
- data/test/spec_data-finder.yml +115 -0
- data/test/spec_document.rb +76 -0
- data/test/spec_identifier.rb +29 -0
- data/test/spec_log.rb +52 -0
- data/test/spec_object.rb +20 -0
- data/test/spec_resource.rb +73 -0
- data/test/spec_update-criteria.rb +83 -0
- data/test/test-util.rb +223 -0
- data/test/transformer/spec_block-transformer.rb +26 -0
- data/test/transformer/spec_expr-transformer.rb +106 -0
- data/test/transformer/spec_feature-expr-transformer.rb +21 -0
- data/test/transformer/spec_flow-element-transformer.rb +154 -0
- data/test/transformer/spec_literal-transformer.rb +58 -0
- data/test/transformer/spec_rule-definition-transformer.rb +168 -0
- data/test/tuple-space/spec_tuple-space-provider.rb +36 -0
- data/test/tuple-space/spec_tuple-space-receiver.rb +32 -0
- data/test/tuple-space/spec_tuple-space-server.rb +49 -0
- data/test/tuple/spec_basic-tuple.rb +87 -0
- data/test/tuple/spec_data-tuple.rb +85 -0
- data/test/tuple/spec_finished-tuple.rb +61 -0
- data/test/tuple/spec_task-tuple.rb +127 -0
- data/test/tuple/spec_working-tuple.rb +58 -0
- data/test/uri-scheme/spec_broadcast-scheme.rb +40 -0
- data/test/uri-scheme/spec_dropbox-scheme.rb +31 -0
- data/test/uri-scheme/spec_local-scheme.rb +69 -0
- metadata +660 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
module Pione
|
|
2
|
+
module System
|
|
3
|
+
# FileCache is a caching system for task workers.
|
|
4
|
+
module FileCache
|
|
5
|
+
# Returns file cache class.
|
|
6
|
+
# @return [Class]
|
|
7
|
+
# CacheMethod class
|
|
8
|
+
def self.cache_method
|
|
9
|
+
@klass || SimpleCacheMethod
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Sets a file cache class.
|
|
13
|
+
# @param [Class] klass
|
|
14
|
+
# CacheMethod class
|
|
15
|
+
# @return [void]
|
|
16
|
+
def self.set_cache_method(klass)
|
|
17
|
+
@klass = klass
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Returns the singleton.
|
|
21
|
+
# @return [CacheMethod]
|
|
22
|
+
# cache method instance
|
|
23
|
+
def self.instance
|
|
24
|
+
@instance ||= cache_method.new
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Gets cached data path from the uri resource.
|
|
28
|
+
# @param [String] uri
|
|
29
|
+
# uri to get
|
|
30
|
+
# @return [String]
|
|
31
|
+
# cached path string
|
|
32
|
+
def self.get(uri)
|
|
33
|
+
instance.get(uri)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Puts the data to uri resource and caches it.
|
|
37
|
+
def self.put(src, uri)
|
|
38
|
+
instance.put(src, uri)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Shifts the resource from old uri to new uri.
|
|
42
|
+
# @param [String] old_uri
|
|
43
|
+
# old resource uri
|
|
44
|
+
# @param [String] new_uri
|
|
45
|
+
# new resource uri
|
|
46
|
+
# @return [void]
|
|
47
|
+
def self.shift(old_uri, new_uri)
|
|
48
|
+
instance.shift(old_uri, new_uri)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# FileCache is an interface class of cache methods.
|
|
52
|
+
class FileCacheMethod
|
|
53
|
+
# Gets the cache location path of the URI.
|
|
54
|
+
# @param [String] uri
|
|
55
|
+
# resource uri
|
|
56
|
+
# @return [String]
|
|
57
|
+
# cached path
|
|
58
|
+
def get(uri)
|
|
59
|
+
raise NotImplementedError
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Puts the file into cache with the URI.
|
|
63
|
+
# @return [void]
|
|
64
|
+
def put(src, uri)
|
|
65
|
+
raise NotImplementedError
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Shitfs the URI.
|
|
69
|
+
# @param [String] old_uri
|
|
70
|
+
# old resource uri
|
|
71
|
+
# @param [String] new_uri
|
|
72
|
+
# new resource uri
|
|
73
|
+
# @return [void]
|
|
74
|
+
def shift(old_uri, new_uri)
|
|
75
|
+
raise NotImplementedError
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# SimpleCacheMethod is a simple cache method implementation.
|
|
80
|
+
class SimpleCacheMethod < FileCacheMethod
|
|
81
|
+
# Creates a method.
|
|
82
|
+
def initialize
|
|
83
|
+
@table = {}
|
|
84
|
+
@tmpdir = Global.file_cache_directory
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Gets cached data path from the uri resource.
|
|
88
|
+
# @param [String] uri
|
|
89
|
+
# resource uri
|
|
90
|
+
# @return [String]
|
|
91
|
+
# cached path
|
|
92
|
+
def get(uri)
|
|
93
|
+
# check cached or not
|
|
94
|
+
unless @table.has_key?(uri)
|
|
95
|
+
# prepare cache path
|
|
96
|
+
path = prepare_cache_path
|
|
97
|
+
|
|
98
|
+
# link the resource file to cache path
|
|
99
|
+
Resource[uri].link_to(path)
|
|
100
|
+
@table[uri.to_s] = path
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
return @table[uri.to_s]
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Puts the data to uri resource and caches it in local.
|
|
107
|
+
# @return [void]
|
|
108
|
+
def put(src, uri)
|
|
109
|
+
# prepare cache path
|
|
110
|
+
path = prepare_cache_path
|
|
111
|
+
|
|
112
|
+
# move the file from the working directory to cache
|
|
113
|
+
FileUtils.mv(src, path)
|
|
114
|
+
|
|
115
|
+
# make a symbolic link from original location to the cache
|
|
116
|
+
FileUtils.symlink(path, src)
|
|
117
|
+
|
|
118
|
+
# copy from cache to the resource file
|
|
119
|
+
@table[uri.to_s] = path
|
|
120
|
+
Resource[uri].link_from(path)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# @param [String] old_uri
|
|
124
|
+
# old resource uri
|
|
125
|
+
# @param [String] new_uri
|
|
126
|
+
# new resource uri
|
|
127
|
+
# @return [void]
|
|
128
|
+
def shift(old_uri, new_uri)
|
|
129
|
+
if path = @table[old_uri.to_s]
|
|
130
|
+
if new_uri.scheme == "local"
|
|
131
|
+
FileUtils.symlink(new_uri.path, path, :force => true)
|
|
132
|
+
end
|
|
133
|
+
@table[new_uri.to_s] = path
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
private
|
|
138
|
+
|
|
139
|
+
# Makes new cache path.
|
|
140
|
+
# @api private
|
|
141
|
+
def prepare_cache_path
|
|
142
|
+
cache = Tempfile.new("", Global.file_cache_directory)
|
|
143
|
+
path = cache.path
|
|
144
|
+
cache.close(true)
|
|
145
|
+
return path
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
module Pione
|
|
2
|
+
module System
|
|
3
|
+
# Global is a table of global variables in PIONE system. It defines item
|
|
4
|
+
# names, default values, and configuration conditions. You can set and get
|
|
5
|
+
# value by calling item named method.
|
|
6
|
+
module Global
|
|
7
|
+
# GlobalInterface provides item definition methods.
|
|
8
|
+
module GlobalInterface
|
|
9
|
+
# @api private
|
|
10
|
+
def self.extended(mod)
|
|
11
|
+
mod.instance_variable_set(:@__names__, [])
|
|
12
|
+
mod.instance_variable_set(:@__config__, {})
|
|
13
|
+
mod.instance_variable_set(:@__initializer__, [])
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Defines a global variable item.
|
|
17
|
+
# @param [Symbol] name
|
|
18
|
+
# item name
|
|
19
|
+
# @param [Boolean] configurable
|
|
20
|
+
# this means the item is configurable if true
|
|
21
|
+
# @param [Object] val
|
|
22
|
+
# default value
|
|
23
|
+
# @return [void]
|
|
24
|
+
def define_item(name, config, val=nil, &b)
|
|
25
|
+
@__names__ << name
|
|
26
|
+
if config
|
|
27
|
+
@__config__[name] = config.kind_of?(TrueClass) ? name : config
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
singleton_class.module_eval do |mod|
|
|
31
|
+
# value reader
|
|
32
|
+
define_method(name) do
|
|
33
|
+
instance_variable_get("@%s" % name)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# value writer
|
|
37
|
+
define_method("set_%s" % name) do |val|
|
|
38
|
+
instance_variable_set("@%s" % name, val)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# value writer
|
|
42
|
+
define_method("%s=" % name) do |val|
|
|
43
|
+
instance_variable_set("@%s" % name, val)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
instance_variable_set("@%s" % name, val) if val
|
|
48
|
+
@__initializer__ << [name, b] if block_given?
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Returns all item names.
|
|
52
|
+
# @return [Symbol]
|
|
53
|
+
# all item names
|
|
54
|
+
def all_names
|
|
55
|
+
@__names__
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Initializes global values.
|
|
59
|
+
# @return [void]
|
|
60
|
+
def init
|
|
61
|
+
@__config__.each do |name, config_name|
|
|
62
|
+
if val = Global.config[config_name]
|
|
63
|
+
instance_variable_set("@%s" % name, val)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
@__initializer__.each do |name, action|
|
|
68
|
+
unless instance_variable_get("@%s" % name)
|
|
69
|
+
instance_variable_set("@%s" % name, action.call)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
extend GlobalInterface
|
|
76
|
+
|
|
77
|
+
#
|
|
78
|
+
# debug
|
|
79
|
+
#
|
|
80
|
+
|
|
81
|
+
# show distributed object communication
|
|
82
|
+
define_item(:show_communication, false, false)
|
|
83
|
+
|
|
84
|
+
# show presence notifier
|
|
85
|
+
define_item(:show_presence_notifier, false, false)
|
|
86
|
+
|
|
87
|
+
#
|
|
88
|
+
# system
|
|
89
|
+
#
|
|
90
|
+
|
|
91
|
+
define_item(:config, true, Config.new("~/.pione/config.yml"))
|
|
92
|
+
|
|
93
|
+
# .pione dir
|
|
94
|
+
define_item(:dot_pione_dir, true) do
|
|
95
|
+
Pathname.new("~/.pione").expand_path.tap {|path|
|
|
96
|
+
path.mkpath unless path.exist?
|
|
97
|
+
}
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# config path
|
|
101
|
+
define_item(:config_path, true) do
|
|
102
|
+
Global.dot_pione_dir + "config.yml"
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# root of working directory
|
|
106
|
+
define_item(:working_directory_root, true) do
|
|
107
|
+
Pathname.new(File.join(Dir.tmpdir, "pione-wd-" + Etc.getlogin)).tap {|path|
|
|
108
|
+
path.mkpath unless path.exist?
|
|
109
|
+
}
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# working directory
|
|
113
|
+
define_item(:working_directory, false) do
|
|
114
|
+
Pathname.new(Dir.mktmpdir(nil, Global.working_directory_root))
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# root of file cache directory
|
|
118
|
+
define_item(:file_cache_directory_root, true) do
|
|
119
|
+
Pathname.new(File.join(Dir.tmpdir, "pione-file-cache-" + Etc.getlogin)).tap {|path|
|
|
120
|
+
path.mkpath unless path.exist?
|
|
121
|
+
}
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# file cache directory
|
|
125
|
+
define_item(:file_cache_directory, false) do
|
|
126
|
+
Pathname.new(Dir.mktmpdir(nil, Global.file_cache_directory_root))
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# system front server
|
|
130
|
+
define_item(:front, false)
|
|
131
|
+
|
|
132
|
+
# This means the process's IP address.
|
|
133
|
+
define_item(:my_ip_address, true) do
|
|
134
|
+
Util.my_ip_address_list.first
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# This means current working directory. The directory is defined by the
|
|
138
|
+
# following rule:
|
|
139
|
+
# - 1. if environment variable "PWD" is defined, use it
|
|
140
|
+
# - 2. if "pwd" command exists, use the command result with logical option
|
|
141
|
+
# - 3. otherwise Dir.pwd
|
|
142
|
+
define_item(:pwd, false) do
|
|
143
|
+
(ENV["PWD"] || `pwd -L`.chomp || Dir.pwd)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
#
|
|
147
|
+
# pione-client
|
|
148
|
+
#
|
|
149
|
+
|
|
150
|
+
# client-front port range begin
|
|
151
|
+
define_item(:client_front_port_range_begin, true, 40000)
|
|
152
|
+
|
|
153
|
+
# client-front port range end
|
|
154
|
+
define_item(:client_front_port_range_end, true, 40999)
|
|
155
|
+
|
|
156
|
+
# client-front port range
|
|
157
|
+
define_item(:client_front_port_range, false) do
|
|
158
|
+
Range.new(
|
|
159
|
+
Global.client_front_port_range_begin,
|
|
160
|
+
Global.client_front_port_range_end
|
|
161
|
+
)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
#
|
|
165
|
+
# pione-broker
|
|
166
|
+
#
|
|
167
|
+
|
|
168
|
+
# broker-front port range begin
|
|
169
|
+
define_item(:broker_front_port_range_begin, true, 41000)
|
|
170
|
+
|
|
171
|
+
# broker-front port range end
|
|
172
|
+
define_item(:broker_front_port_range_end, true, 41999)
|
|
173
|
+
|
|
174
|
+
# broker-front port range
|
|
175
|
+
define_item(:broker_front_port_range, false) do
|
|
176
|
+
Range.new(
|
|
177
|
+
Global.broker_front_port_range_begin,
|
|
178
|
+
Global.broker_front_port_range_end
|
|
179
|
+
)
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
#
|
|
183
|
+
# provider & receiver
|
|
184
|
+
#
|
|
185
|
+
|
|
186
|
+
# presence port
|
|
187
|
+
define_item(:presence_port, true, 56000)
|
|
188
|
+
|
|
189
|
+
#
|
|
190
|
+
# pione-tuple-space-provider
|
|
191
|
+
#
|
|
192
|
+
|
|
193
|
+
# tuple space provider uri
|
|
194
|
+
define_item(:tuple_space_provider_uri, false)
|
|
195
|
+
|
|
196
|
+
# provider-front port range begin
|
|
197
|
+
define_item(:tuple_space_provider_front_port_range_begin, true, 42000)
|
|
198
|
+
|
|
199
|
+
# provider-front port range end
|
|
200
|
+
define_item(:tuple_space_provider_front_port_range_end, true, 42999)
|
|
201
|
+
|
|
202
|
+
# provider-front port range
|
|
203
|
+
define_item(:tuple_space_provider_front_port_range, false) do
|
|
204
|
+
Range.new(
|
|
205
|
+
Global.tuple_space_provider_front_port_range_begin,
|
|
206
|
+
Global.tuple_space_provider_front_port_range_end
|
|
207
|
+
)
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
# presence notification address
|
|
211
|
+
define_item(:presence_notification_addresses, true) do
|
|
212
|
+
[URI.parse("broadcast://%s:%s" % ["255.255.255.255", Global.presence_port])]
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
#
|
|
216
|
+
# pione-tuple-space-receiver
|
|
217
|
+
#
|
|
218
|
+
|
|
219
|
+
# tuple space receiver uri
|
|
220
|
+
define_item(:tuple_space_receiver_uri, false)
|
|
221
|
+
|
|
222
|
+
# receiver-front port range begin
|
|
223
|
+
define_item(:tuple_space_receiver_front_port_range_begin, true, 43000)
|
|
224
|
+
|
|
225
|
+
# receiver-front port range end
|
|
226
|
+
define_item(:tuple_space_receiver_front_port_range_end, true, 43999)
|
|
227
|
+
|
|
228
|
+
# receiver-front port range
|
|
229
|
+
define_item(:tuple_space_receiver_front_port_range, false) do
|
|
230
|
+
Range.new(
|
|
231
|
+
Global.tuple_space_receiver_front_port_range_begin,
|
|
232
|
+
Global.tuple_space_receiver_front_port_range_end
|
|
233
|
+
)
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
# disconnect time for tuple space receiver
|
|
237
|
+
define_item(:tuple_space_receiver_disconnect_time, true, 180)
|
|
238
|
+
|
|
239
|
+
#
|
|
240
|
+
# relay
|
|
241
|
+
#
|
|
242
|
+
|
|
243
|
+
# relay user database path
|
|
244
|
+
define_item(:relay_client_db_path, true) do
|
|
245
|
+
Global.dot_pione_dir + "relay-client.db"
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
# relay client database object
|
|
249
|
+
define_item(:relay_client_db, false)
|
|
250
|
+
|
|
251
|
+
# relay account database path
|
|
252
|
+
define_item(:relay_account_db_path, true) do
|
|
253
|
+
Global.dot_pione_dir + "relay-account.db"
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
# relay account database object
|
|
257
|
+
define_item(:relay_account_db, false)
|
|
258
|
+
|
|
259
|
+
# relay server's realm
|
|
260
|
+
define_item(:relay_realm, true)
|
|
261
|
+
|
|
262
|
+
# relay uri
|
|
263
|
+
define_item(:relay_uri, false)
|
|
264
|
+
|
|
265
|
+
# relay port
|
|
266
|
+
define_item(:relay_port, true, 56001)
|
|
267
|
+
|
|
268
|
+
# certname for relay server
|
|
269
|
+
define_item(:relay_ssl_certname, true, [["CN", "localhost.localhost"]])
|
|
270
|
+
|
|
271
|
+
# relay-front port range begin
|
|
272
|
+
define_item(:relay_front_port_range_begin, true, 44000)
|
|
273
|
+
|
|
274
|
+
# relay-front port range end
|
|
275
|
+
define_item(:relay_front_port_range_end, true, 44999)
|
|
276
|
+
|
|
277
|
+
# relay-front port range
|
|
278
|
+
define_item(:relay_front_port_range, false) do
|
|
279
|
+
Range.new(
|
|
280
|
+
Global.relay_front_port_range_begin,
|
|
281
|
+
Global.relay_front_port_range_end
|
|
282
|
+
)
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
# relay-proxy port range begin
|
|
286
|
+
define_item(:relay_proxy_port_range_begin, true, 45000)
|
|
287
|
+
|
|
288
|
+
# relay-proxy port range end
|
|
289
|
+
define_item(:relay_proxy_port_range_end, true, 45999)
|
|
290
|
+
|
|
291
|
+
# relay-proxy port range
|
|
292
|
+
define_item(:relay_proxy_port_range, false) do
|
|
293
|
+
Range.new(
|
|
294
|
+
Global.relay_proxy_port_range_begin,
|
|
295
|
+
Global.relay_proxy_port_range_end
|
|
296
|
+
)
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
# relay-client authentication timeout second
|
|
300
|
+
define_item(:relay_client_auth_timeout_sec, true, 5)
|
|
301
|
+
|
|
302
|
+
# relay tuple space server
|
|
303
|
+
define_item(:relay_tuple_space_server, false)
|
|
304
|
+
|
|
305
|
+
# relay-transmitter proxy side port range begin
|
|
306
|
+
define_item(:relay_transmitter_proxy_side_port_begin, true, 46000)
|
|
307
|
+
|
|
308
|
+
# relay-transmitter proxy side port range end
|
|
309
|
+
define_item(:relay_transmitter_proxy_side_port_end, true, 46999)
|
|
310
|
+
|
|
311
|
+
# relay-transmitter proxy side port range
|
|
312
|
+
define_item(:relay_transmitter_proxy_side_port_range, false) do
|
|
313
|
+
Range.new(
|
|
314
|
+
Global.relay_transmitter_proxy_side_port_begin,
|
|
315
|
+
Global.relay_transmitter_proxy_side_port_end
|
|
316
|
+
)
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
# relay-receiver
|
|
320
|
+
define_item(:relay_receiver, false)
|
|
321
|
+
|
|
322
|
+
#
|
|
323
|
+
# task worker
|
|
324
|
+
#
|
|
325
|
+
|
|
326
|
+
# task-worker-front port range begin
|
|
327
|
+
define_item(:task_worker_front_port_range_begin, true, 50000)
|
|
328
|
+
|
|
329
|
+
# task-worker-front port range end
|
|
330
|
+
define_item(:task_worker_front_port_range_end, true, 54999)
|
|
331
|
+
|
|
332
|
+
# task-worker-front port range
|
|
333
|
+
define_item(:task_worker_front_port_range, false) do
|
|
334
|
+
Range.new(
|
|
335
|
+
Global.task_worker_front_port_range_begin,
|
|
336
|
+
Global.task_worker_front_port_range_end
|
|
337
|
+
)
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
#
|
|
341
|
+
# input generator
|
|
342
|
+
#
|
|
343
|
+
define_item(:input_generator_stream_check_timespan, true, 3)
|
|
344
|
+
end
|
|
345
|
+
end
|
|
346
|
+
end
|