weel 1.99.128 → 1.99.130
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 +72 -63
- data/weel.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a65829729d2a2508096cec3ee8ab6ee5abbd32d718cc50a4b2c68fc5632728bc
|
4
|
+
data.tar.gz: 4c1a71c7a48f37a41fe99c8b79f70adc2fa175f44635ead7694c7d3a5a4865ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f6f771194196936be9d5b82fe7995fdf432bc61a59abfc51b004cd214a2b9738947e8eb90ef23bc0558dc5871d772358bff92109a21afa9cae18a303584dcfae
|
7
|
+
data.tar.gz: 5df275e55141dc2beb82530b968b0afa004985466f829acb59d7d48debb23f02180b96ddf2c6fb1dd0327049a61b0321a23dce67d8d7de42177ab524a2492482
|
data/lib/weel.rb
CHANGED
@@ -355,9 +355,8 @@ class WEEL
|
|
355
355
|
def activity_passthrough_value; end
|
356
356
|
def activity_uuid; '42424242-cpee-cpee-cpee-424242424242'; end
|
357
357
|
|
358
|
-
def activity_no_longer_necessary; end
|
359
|
-
|
360
358
|
def inform_activity_done; end
|
359
|
+
def inform_activity_cancelled; end
|
361
360
|
def inform_activity_manipulate; end
|
362
361
|
def inform_activity_failed(err); end
|
363
362
|
def inform_manipulate_change(status,changed_data,changed_endpoints,data,endpoints); end
|
@@ -380,8 +379,8 @@ class WEEL
|
|
380
379
|
end
|
381
380
|
end
|
382
381
|
|
383
|
-
def join_branches(branches); end
|
384
|
-
def split_branches(branches); end
|
382
|
+
def join_branches(id,branches=[]); end
|
383
|
+
def split_branches(id,branches=[]); end
|
385
384
|
end # }}}
|
386
385
|
|
387
386
|
class Position # {{{
|
@@ -534,7 +533,7 @@ class WEEL
|
|
534
533
|
end
|
535
534
|
|
536
535
|
cw = @__weel_connectionwrapper.new @__weel_connectionwrapper_args
|
537
|
-
cw.split_branches
|
536
|
+
cw.split_branches Thread.current.__id__, Thread.current[:branch_traces]
|
538
537
|
|
539
538
|
Thread.current[:branches].each do |thread|
|
540
539
|
# decide after executing block in parallel cause for coopis
|
@@ -547,7 +546,7 @@ class WEEL
|
|
547
546
|
|
548
547
|
Thread.current[:branch_event].wait unless self.__weel_state == :stopping || self.__weel_state == :finishing || self.__weel_state == :stopped || Thread.current[:branches].length == 0
|
549
548
|
|
550
|
-
cw.join_branches
|
549
|
+
cw.join_branches Thread.current.__id__, Thread.current[:branch_traces]
|
551
550
|
|
552
551
|
unless self.__weel_state == :stopping || self.__weel_state == :finishing || self.__weel_state == :stopped
|
553
552
|
# first set all to no_longer_neccessary, just in case, but this should not be necessary
|
@@ -635,9 +634,11 @@ class WEEL
|
|
635
634
|
Thread.current[:alternative_mode] << mode
|
636
635
|
|
637
636
|
cw = @__weel_connectionwrapper.new @__weel_connectionwrapper_args
|
638
|
-
cw.split_branches(Thread.current[:branch_traces])
|
639
637
|
|
638
|
+
cw.split_branches Thread.current.__id__
|
640
639
|
__weel_protect_yield(&block)
|
640
|
+
cw.join_branches Thread.current.__id__
|
641
|
+
|
641
642
|
Thread.current[:alternative_executed].pop
|
642
643
|
Thread.current[:alternative_mode].pop
|
643
644
|
nil
|
@@ -875,70 +876,77 @@ class WEEL
|
|
875
876
|
@__weel_connectionwrapper::inform_position_change @__weel_connectionwrapper_args, :after => [wp]
|
876
877
|
end
|
877
878
|
when :call
|
878
|
-
|
879
|
-
connectionwrapper
|
880
|
-
params = connectionwrapper.prepare(@__weel_lock,@__weel_data,@__weel_endpoints,@__weel_status,Thread.current[:local],connectionwrapper.additional,prepare,endpoint,parameters)
|
881
|
-
|
882
|
-
raise Signal::Stop unless connectionwrapper.vote_sync_before(params)
|
883
|
-
raise Signal::Skip if self.__weel_state == :stopping || self.__weel_state == :finishing
|
884
|
-
|
885
|
-
connectionwrapper.activity_handle wp.passthrough, params
|
886
|
-
wp.passthrough = connectionwrapper.activity_passthrough_value
|
887
|
-
unless wp.passthrough.nil?
|
888
|
-
@__weel_connectionwrapper::inform_position_change @__weel_connectionwrapper_args, :wait => [wp]
|
889
|
-
end
|
890
|
-
begin
|
891
|
-
# cleanup after callback updates
|
879
|
+
begin
|
880
|
+
again = catch Signal::Again do # Will be nil if we do not throw (using default connectionwrapper)
|
892
881
|
connectionwrapper.mem_guard
|
882
|
+
params = connectionwrapper.prepare(@__weel_lock,@__weel_data,@__weel_endpoints,@__weel_status,Thread.current[:local],connectionwrapper.additional,prepare,endpoint,parameters)
|
893
883
|
|
894
|
-
|
895
|
-
|
896
|
-
waitingresult = nil
|
897
|
-
waitingresult = Thread.current[:continue].wait unless Thread.current[:nolongernecessary] || self.__weel_state == :stopping || self.__weel_state == :finishing || self.__weel_state == :stopped
|
884
|
+
raise Signal::Stop unless connectionwrapper.vote_sync_before(params)
|
885
|
+
raise Signal::Skip if self.__weel_state == :stopping || self.__weel_state == :finishing
|
898
886
|
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
if self.__weel_state == :stopping || self.__weel_state == :finishing
|
904
|
-
connectionwrapper.activity_stop
|
905
|
-
wp.passthrough = connectionwrapper.activity_passthrough_value
|
906
|
-
raise Signal::Proceed if wp.passthrough # if stop, but no passthrough, let manipulate happen and then stop
|
887
|
+
connectionwrapper.activity_handle wp.passthrough, params
|
888
|
+
wp.passthrough = connectionwrapper.activity_passthrough_value
|
889
|
+
unless wp.passthrough.nil?
|
890
|
+
@__weel_connectionwrapper::inform_position_change @__weel_connectionwrapper_args, :wait => [wp]
|
907
891
|
end
|
892
|
+
begin
|
893
|
+
# cleanup after callback updates
|
894
|
+
connectionwrapper.mem_guard
|
908
895
|
|
909
|
-
|
896
|
+
# with loop if catching Signal::Again
|
897
|
+
# handshake call and wait until it finished
|
898
|
+
waitingresult = nil
|
899
|
+
waitingresult = Thread.current[:continue].wait unless Thread.current[:nolongernecessary] || self.__weel_state == :stopping || self.__weel_state == :finishing || self.__weel_state == :stopped
|
900
|
+
|
901
|
+
if Thread.current[:nolongernecessary]
|
902
|
+
raise Signal::NoLongerNecessary
|
903
|
+
end
|
904
|
+
if self.__weel_state == :stopping || self.__weel_state == :finishing
|
905
|
+
connectionwrapper.activity_stop
|
906
|
+
wp.passthrough = connectionwrapper.activity_passthrough_value
|
907
|
+
raise Signal::Proceed if wp.passthrough # if stop, but no passthrough, let manipulate happen and then stop
|
908
|
+
end
|
909
|
+
|
910
|
+
next if waitingresult == WEEL::Signal::UpdateAgain && connectionwrapper.activity_result_value&.length == 0
|
911
|
+
|
912
|
+
code, cmess = if waitingresult == WEEL::Signal::UpdateAgain
|
913
|
+
[update, 'update']
|
914
|
+
elsif waitingresult == WEEL::Signal::Salvage
|
915
|
+
if salvage
|
916
|
+
[salvage, 'salvage']
|
917
|
+
else
|
918
|
+
raise('HTTP Error. The service return status was not between 200 and 300.')
|
919
|
+
end
|
920
|
+
else
|
921
|
+
[finalize, 'finalize']
|
922
|
+
end
|
923
|
+
if code.is_a?(String)
|
924
|
+
connectionwrapper.inform_activity_manipulate
|
925
|
+
struct = nil
|
926
|
+
|
927
|
+
# when you throw without parameters, ma contains nil, so we return Signal::Proceed to give ma a meaningful value in other cases
|
928
|
+
ma = catch Signal::Again do
|
929
|
+
struct = connectionwrapper.manipulate(false,@__weel_lock,@__weel_data,@__weel_endpoints,@__weel_status,Thread.current[:local],connectionwrapper.additional,code,'Activity ' + position.to_s + ' ' + cmess,connectionwrapper.activity_result_value,connectionwrapper.activity_result_options)
|
930
|
+
Signal::Proceed
|
931
|
+
end
|
932
|
+
connectionwrapper.inform_manipulate_change(
|
933
|
+
((struct && struct.changed_status) ? @__weel_status : nil),
|
934
|
+
((struct && struct.changed_data.any?) ? struct.changed_data.uniq : nil),
|
935
|
+
((struct && struct.changed_endpoints.any?) ? struct.changed_endpoints.uniq : nil),
|
936
|
+
@__weel_data,
|
937
|
+
@__weel_endpoints
|
938
|
+
)
|
939
|
+
throw(Signal::Again, Signal::Again) if ma.nil? || ma == Signal::Again # this signal again loops "there is a catch" because rescue signal throw that throughly restarts the task
|
940
|
+
else
|
910
941
|
|
911
|
-
code, cmess = if waitingresult == WEEL::Signal::UpdateAgain
|
912
|
-
[update, 'update']
|
913
|
-
elsif waitingresult == WEEL::Signal::Salvage
|
914
|
-
[salvage, 'salvage'] || raise('HTTP Error. The service return status was not between 200 and 300.')
|
915
|
-
else
|
916
|
-
[finalize, 'finalize']
|
917
|
-
end
|
918
|
-
if code.is_a?(String)
|
919
|
-
connectionwrapper.inform_activity_manipulate
|
920
|
-
struct = nil
|
921
|
-
|
922
|
-
# when you throw without parameters, ma contains nil, so we return Signal::Proceed to give ma a meaningful value in other cases
|
923
|
-
ma = catch Signal::Again do
|
924
|
-
struct = connectionwrapper.manipulate(false,@__weel_lock,@__weel_data,@__weel_endpoints,@__weel_status,Thread.current[:local],connectionwrapper.additional,code,'Activity ' + position.to_s + ' ' + cmess,connectionwrapper.activity_result_value,connectionwrapper.activity_result_options)
|
925
|
-
Signal::Proceed
|
926
942
|
end
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
932
|
-
|
933
|
-
)
|
934
|
-
throw(Signal::Again, Signal::Again) if ma.nil? || ma == Signal::Again # this signal again loops "there is a catch" because rescue signal throw that throughly restarts the task
|
943
|
+
end while waitingresult == Signal::UpdateAgain # this signal again loops because async update, proposal: rename to UpdateAgain
|
944
|
+
if connectionwrapper.activity_passthrough_value.nil?
|
945
|
+
connectionwrapper.inform_activity_done
|
946
|
+
wp.passthrough = nil
|
947
|
+
wp.detail = :after
|
948
|
+
@__weel_connectionwrapper::inform_position_change @__weel_connectionwrapper_args, :after => [wp]
|
935
949
|
end
|
936
|
-
end while waitingresult == Signal::UpdateAgain # this signal again loops because async update, proposal: rename to UpdateAgain
|
937
|
-
if connectionwrapper.activity_passthrough_value.nil?
|
938
|
-
connectionwrapper.inform_activity_done
|
939
|
-
wp.passthrough = nil
|
940
|
-
wp.detail = :after
|
941
|
-
@__weel_connectionwrapper::inform_position_change @__weel_connectionwrapper_args, :after => [wp]
|
942
950
|
end
|
943
951
|
end while again == Signal::Again # there is a catch
|
944
952
|
end
|
@@ -949,6 +957,7 @@ class WEEL
|
|
949
957
|
wp.detail = :unmark
|
950
958
|
end
|
951
959
|
rescue Signal::NoLongerNecessary
|
960
|
+
connectionwrapper.inform_activity_cancelled
|
952
961
|
connectionwrapper.inform_activity_done
|
953
962
|
@__weel_positions.delete wp
|
954
963
|
Thread.current[:branch_position] = nil
|
data/weel.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.130
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juergen eTM Mangler
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-
|
12
|
+
date: 2024-10-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: test-unit
|
@@ -100,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
100
|
- !ruby/object:Gem::Version
|
101
101
|
version: '0'
|
102
102
|
requirements: []
|
103
|
-
rubygems_version: 3.5.
|
103
|
+
rubygems_version: 3.5.16
|
104
104
|
signing_key:
|
105
105
|
specification_version: 4
|
106
106
|
summary: Workflow Execution Engine Library (WEEL)
|