weel 1.99.93 → 1.99.98
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.
- checksums.yaml +4 -4
- data/lib/weel.rb +37 -9
- data/weel.gemspec +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9e82bd07a1a46e7456badf0f68f51b61ce8185c4292590e2c3113e3dcef9b23b
|
|
4
|
+
data.tar.gz: a8e5dc3301a874267a5742395816501d778c2b7ccd934590c55e28410c34994e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8b37432797796439fcff05c476d09f1c3f7ee388f01a83e593c9db8fcb7bc57f413f5809f0a48c31b2ba04f146928ec236a87e6e5e1ca78a487c7eccbfcb82a2
|
|
7
|
+
data.tar.gz: be8e00b7a57362406dfd61d9c84d53ad2451f7219c535c0a2e4562eedd527dba6ca50c32a735e8d898e959eeb6ac9e120ab9e6507f476dfebe9e96cbaa22d60f
|
data/lib/weel.rb
CHANGED
|
@@ -43,8 +43,7 @@ class WEEL
|
|
|
43
43
|
|
|
44
44
|
class ReadStructure # {{{
|
|
45
45
|
def initialize(data,endpoints,additional)
|
|
46
|
-
@__weel_data = data.
|
|
47
|
-
@__weel_data.transform_values! do |v|
|
|
46
|
+
@__weel_data = data.transform_values do |v|
|
|
48
47
|
if Object.const_defined?(:XML) && XML.const_defined?(:Smart) && v.is_a?(XML::Smart::Dom)
|
|
49
48
|
v.root.to_doc
|
|
50
49
|
else
|
|
@@ -55,8 +54,7 @@ class WEEL
|
|
|
55
54
|
end
|
|
56
55
|
end
|
|
57
56
|
end
|
|
58
|
-
@__weel_endpoints = endpoints.dup
|
|
59
|
-
@__weel_endpoints.transform_values!{ |v| v.dup }
|
|
57
|
+
@__weel_endpoints = endpoints.transform_values{ |v| v.dup }
|
|
60
58
|
@additional = additional
|
|
61
59
|
end
|
|
62
60
|
|
|
@@ -223,6 +221,8 @@ class WEEL
|
|
|
223
221
|
else
|
|
224
222
|
if args.empty? && @__weel_values.key?(name)
|
|
225
223
|
@__weel_values[name]
|
|
224
|
+
elsif args.empty? && @__weel_values.key?(name.to_s)
|
|
225
|
+
@__weel_values[name.to_s]
|
|
226
226
|
elsif name.to_s[-1..-1] == "=" && args.length == 1
|
|
227
227
|
temp = name.to_s[0..-2]
|
|
228
228
|
@__weel_values[temp.to_sym] = args[0]
|
|
@@ -238,7 +238,7 @@ class WEEL
|
|
|
238
238
|
end # }}}
|
|
239
239
|
|
|
240
240
|
class HandlerWrapperBase # {{{
|
|
241
|
-
def self::loop_guard(lid,count); false; end
|
|
241
|
+
def self::loop_guard(arguments,lid,count); false; end
|
|
242
242
|
def self::inform_state_change(arguments,newstate); end
|
|
243
243
|
def self::inform_syntax_error(arguments,err,code); end
|
|
244
244
|
def self::inform_handlerwrapper_error(arguments,err); end
|
|
@@ -275,6 +275,7 @@ class WEEL
|
|
|
275
275
|
def simulate(type,nesting,sequence,parent,parameters={}); end
|
|
276
276
|
|
|
277
277
|
def callback(result=nil,options={}); end
|
|
278
|
+
def mem_guard; end
|
|
278
279
|
|
|
279
280
|
def test_condition(mr,code); mr.instance_eval(code); end
|
|
280
281
|
def manipulate(mr,code,result=nil,options=nil); mr.instance_eval(code); end
|
|
@@ -416,7 +417,9 @@ class WEEL
|
|
|
416
417
|
|
|
417
418
|
__weel_protect_yield(&block)
|
|
418
419
|
|
|
419
|
-
Thread.current[:branch_wait_count] = (type.is_a?(Hash) && type
|
|
420
|
+
Thread.current[:branch_wait_count] = (type.is_a?(Hash) && type[:wait] != nil && (type[:wait].is_a?(Integer) && type[:wait] > 0) ? type[:wait] : Thread.current[:branches].size)
|
|
421
|
+
Thread.current[:branch_wait_count_cancel] = 0
|
|
422
|
+
Thread.current[:branch_wait_count_cancel_condition] = (type.is_a?(Hash) && type[:cancel] != nil && type[:cancel] == :first ) ? :first : :last
|
|
420
423
|
1.upto Thread.current[:branches].size do
|
|
421
424
|
Thread.current[:branch_event].wait
|
|
422
425
|
end
|
|
@@ -459,11 +462,12 @@ class WEEL
|
|
|
459
462
|
current_branch_sim_pos = branch_parent[:branch_sim_pos]
|
|
460
463
|
end
|
|
461
464
|
|
|
462
|
-
|
|
465
|
+
branch_parent[:branches] << Thread.new(*vars) do |*local|
|
|
463
466
|
Thread.current.abort_on_exception = true
|
|
464
467
|
Thread.current[:branch_status] = false
|
|
465
468
|
Thread.current[:branch_parent] = branch_parent
|
|
466
469
|
Thread.current[:start_event] = Continue.new
|
|
470
|
+
Thread.current[:branch_wait_count_cancel_active] = false
|
|
467
471
|
|
|
468
472
|
if __weel_sim
|
|
469
473
|
Thread.current[:branch_sim_pos] = @__weel_sim += 1
|
|
@@ -767,6 +771,7 @@ class WEEL
|
|
|
767
771
|
when :call
|
|
768
772
|
begin
|
|
769
773
|
again = catch Signal::Again do
|
|
774
|
+
handlerwrapper.mem_guard
|
|
770
775
|
rs = ReadStructure.new(@__weel_data,@__weel_endpoints,handlerwrapper.additional)
|
|
771
776
|
if prepare
|
|
772
777
|
if prepare.is_a?(Proc)
|
|
@@ -869,6 +874,25 @@ class WEEL
|
|
|
869
874
|
@__weel_handlerwrapper::inform_handlerwrapper_error @__weel_handlerwrapper_args, err
|
|
870
875
|
self.__weel_state = :stopping
|
|
871
876
|
ensure
|
|
877
|
+
handlerwrapper.mem_guard unless handlerwrapper.nil?
|
|
878
|
+
if Thread.current[:branch_parent]
|
|
879
|
+
Thread.current[:branch_parent][:mutex].synchronize do
|
|
880
|
+
if Thread.current[:branch_parent][:branch_wait_count_cancel_condition] == :first
|
|
881
|
+
if !Thread.current[:branch_wait_count_cancel_active]
|
|
882
|
+
Thread.current[:branch_wait_count_cancel_active] = true
|
|
883
|
+
Thread.current[:branch_parent][:branch_wait_count_cancel] += 1
|
|
884
|
+
end
|
|
885
|
+
if Thread.current[:branch_parent][:branch_wait_count_cancel] == Thread.current[:branch_parent][:branch_wait_count] && self.__weel_state != :stopping && self.__weel_state != :finishing
|
|
886
|
+
Thread.current[:branch_parent][:branches].each do |thread|
|
|
887
|
+
if thread.alive? && thread != Thread.current
|
|
888
|
+
thread[:nolongernecessary] = true
|
|
889
|
+
__weel_recursive_continue(thread)
|
|
890
|
+
end
|
|
891
|
+
end
|
|
892
|
+
end
|
|
893
|
+
end
|
|
894
|
+
end
|
|
895
|
+
end
|
|
872
896
|
Thread.current[:continue].clear if Thread.current[:continue] && Thread.current[:continue].is_a?(Continue)
|
|
873
897
|
end
|
|
874
898
|
end # }}}
|
|
@@ -1104,8 +1128,12 @@ public
|
|
|
1104
1128
|
# Stop the workflow execution
|
|
1105
1129
|
def stop # {{{
|
|
1106
1130
|
Thread.new do
|
|
1107
|
-
@dslr.__weel_state
|
|
1108
|
-
|
|
1131
|
+
if @dslr.__weel_state == :running
|
|
1132
|
+
@dslr.__weel_state = :stopping
|
|
1133
|
+
@dslr.__weel_main.join if @dslr.__weel_main
|
|
1134
|
+
elsif @dslr.__weel_state == :ready || @dslr.__weel_state == :stopped
|
|
1135
|
+
@dslr.__weel_state = :stopped
|
|
1136
|
+
end
|
|
1109
1137
|
end
|
|
1110
1138
|
end # }}}
|
|
1111
1139
|
# Start the workflow execution
|
data/weel.gemspec
CHANGED
metadata
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: weel
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.99.
|
|
4
|
+
version: 1.99.98
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Juergen eTM Mangler
|
|
8
8
|
- Gerhard Stuermer
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2021-05-11 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: test-unit
|
|
@@ -86,7 +86,7 @@ homepage: http://cpee.org/
|
|
|
86
86
|
licenses:
|
|
87
87
|
- LGPL-3.0
|
|
88
88
|
metadata: {}
|
|
89
|
-
post_install_message:
|
|
89
|
+
post_install_message:
|
|
90
90
|
rdoc_options: []
|
|
91
91
|
require_paths:
|
|
92
92
|
- lib
|
|
@@ -101,8 +101,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
101
101
|
- !ruby/object:Gem::Version
|
|
102
102
|
version: '0'
|
|
103
103
|
requirements: []
|
|
104
|
-
rubygems_version: 3.1.
|
|
105
|
-
signing_key:
|
|
104
|
+
rubygems_version: 3.1.4
|
|
105
|
+
signing_key:
|
|
106
106
|
specification_version: 4
|
|
107
107
|
summary: Workflow Execution Engine Library (WEEL)
|
|
108
108
|
test_files:
|