weel 1.99.127 → 1.99.129
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 +117 -63
- data/weel.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 52a9d1b00bfbd9df62e95f290c520c447b8cb2bb4d4add32efa2b7ec2e31fc54
|
|
4
|
+
data.tar.gz: 8d0d3bb0a413fb1ad7a2d81ea63c2eade55e5f0173045daaced8f495fc6f1de0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cce8bf3f578fd2700c317a011437fc6f806f5b4b51d335473a041c3e0253fa06e981d9dfd00edebbae8c9cad1b8a1bbfe20e4afab3445b1549eda6cab18b5281
|
|
7
|
+
data.tar.gz: 8497d993333e112bf56c4431040ca454ee8eeeb57f6fd9437abe9c6deac2b6115c0b672aa28e8ce2f47d23dcc5b5f6226315fd6e0d9f01d7507bfe1460c48b86
|
data/lib/weel.rb
CHANGED
|
@@ -290,6 +290,42 @@ class WEEL
|
|
|
290
290
|
end
|
|
291
291
|
end
|
|
292
292
|
end # }}}
|
|
293
|
+
class ReadOnlyHash # {{{
|
|
294
|
+
def initialize(values)
|
|
295
|
+
@__weel_values = values.transform_values do |v|
|
|
296
|
+
if Object.const_defined?(:XML) && XML.const_defined?(:Smart) && v.is_a?(XML::Smart::Dom)
|
|
297
|
+
v.root.to_doc
|
|
298
|
+
else
|
|
299
|
+
begin
|
|
300
|
+
Marshal.load(Marshal.dump(v))
|
|
301
|
+
rescue
|
|
302
|
+
v.to_s rescue nil
|
|
303
|
+
end
|
|
304
|
+
end
|
|
305
|
+
end
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
def to_json(*args)
|
|
309
|
+
@__weel_values.to_json(*args)
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
def method_missing(name,*args)
|
|
313
|
+
if args.empty? && @__weel_values.key?(name)
|
|
314
|
+
@__weel_values[name]
|
|
315
|
+
elsif args.empty? && @__weel_values.key?(name.to_s)
|
|
316
|
+
@__weel_values[name.to_s]
|
|
317
|
+
elsif name.to_s[-1..-1] == "=" && args.length == 1
|
|
318
|
+
temp = name.to_s[0..-2]
|
|
319
|
+
@__weel_values[temp.to_sym] = args[0]
|
|
320
|
+
elsif name.to_s == "[]=" && args.length == 2
|
|
321
|
+
@__weel_values[args[0]] = args[1]
|
|
322
|
+
elsif name.to_s == "[]" && args.length == 1
|
|
323
|
+
@__weel_values[args[0]]
|
|
324
|
+
else
|
|
325
|
+
nil
|
|
326
|
+
end
|
|
327
|
+
end
|
|
328
|
+
end # }}}
|
|
293
329
|
|
|
294
330
|
class ProcString #{{{
|
|
295
331
|
attr_reader :code
|
|
@@ -718,6 +754,16 @@ class WEEL
|
|
|
718
754
|
self.__weel_state = :stopping
|
|
719
755
|
end #}}}
|
|
720
756
|
|
|
757
|
+
def status # {{{
|
|
758
|
+
@__weel_status
|
|
759
|
+
end # }}}
|
|
760
|
+
def data # {{{
|
|
761
|
+
ReadOnlyHash.new(@__weel_data)
|
|
762
|
+
end # }}}
|
|
763
|
+
def endpoints # {{{
|
|
764
|
+
ReadHash.new(@__weel_endpoints)
|
|
765
|
+
end # }}}
|
|
766
|
+
|
|
721
767
|
private
|
|
722
768
|
def __weel_protect_yield(*local) #{{{
|
|
723
769
|
begin
|
|
@@ -829,70 +875,72 @@ class WEEL
|
|
|
829
875
|
@__weel_connectionwrapper::inform_position_change @__weel_connectionwrapper_args, :after => [wp]
|
|
830
876
|
end
|
|
831
877
|
when :call
|
|
832
|
-
|
|
833
|
-
connectionwrapper
|
|
834
|
-
params = connectionwrapper.prepare(@__weel_lock,@__weel_data,@__weel_endpoints,@__weel_status,Thread.current[:local],connectionwrapper.additional,prepare,endpoint,parameters)
|
|
835
|
-
|
|
836
|
-
raise Signal::Stop unless connectionwrapper.vote_sync_before(params)
|
|
837
|
-
raise Signal::Skip if self.__weel_state == :stopping || self.__weel_state == :finishing
|
|
838
|
-
|
|
839
|
-
connectionwrapper.activity_handle wp.passthrough, params
|
|
840
|
-
wp.passthrough = connectionwrapper.activity_passthrough_value
|
|
841
|
-
unless wp.passthrough.nil?
|
|
842
|
-
@__weel_connectionwrapper::inform_position_change @__weel_connectionwrapper_args, :wait => [wp]
|
|
843
|
-
end
|
|
844
|
-
begin
|
|
845
|
-
# cleanup after callback updates
|
|
878
|
+
begin
|
|
879
|
+
again = catch Signal::Again do # Will be nil if we do not throw (using default connectionwrapper)
|
|
846
880
|
connectionwrapper.mem_guard
|
|
881
|
+
params = connectionwrapper.prepare(@__weel_lock,@__weel_data,@__weel_endpoints,@__weel_status,Thread.current[:local],connectionwrapper.additional,prepare,endpoint,parameters)
|
|
847
882
|
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
waitingresult = nil
|
|
851
|
-
waitingresult = Thread.current[:continue].wait unless Thread.current[:nolongernecessary] || self.__weel_state == :stopping || self.__weel_state == :finishing || self.__weel_state == :stopped
|
|
883
|
+
raise Signal::Stop unless connectionwrapper.vote_sync_before(params)
|
|
884
|
+
raise Signal::Skip if self.__weel_state == :stopping || self.__weel_state == :finishing
|
|
852
885
|
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
if self.__weel_state == :stopping || self.__weel_state == :finishing
|
|
858
|
-
connectionwrapper.activity_stop
|
|
859
|
-
wp.passthrough = connectionwrapper.activity_passthrough_value
|
|
860
|
-
raise Signal::Proceed if wp.passthrough # if stop, but no passthrough, let manipulate happen and then stop
|
|
886
|
+
connectionwrapper.activity_handle wp.passthrough, params
|
|
887
|
+
wp.passthrough = connectionwrapper.activity_passthrough_value
|
|
888
|
+
unless wp.passthrough.nil?
|
|
889
|
+
@__weel_connectionwrapper::inform_position_change @__weel_connectionwrapper_args, :wait => [wp]
|
|
861
890
|
end
|
|
891
|
+
begin
|
|
892
|
+
# cleanup after callback updates
|
|
893
|
+
connectionwrapper.mem_guard
|
|
894
|
+
|
|
895
|
+
# with loop if catching Signal::Again
|
|
896
|
+
# handshake call and wait until it finished
|
|
897
|
+
waitingresult = nil
|
|
898
|
+
waitingresult = Thread.current[:continue].wait unless Thread.current[:nolongernecessary] || self.__weel_state == :stopping || self.__weel_state == :finishing || self.__weel_state == :stopped
|
|
899
|
+
|
|
900
|
+
if Thread.current[:nolongernecessary]
|
|
901
|
+
connectionwrapper.activity_no_longer_necessary
|
|
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
|
|
862
909
|
|
|
863
|
-
|
|
910
|
+
next if waitingresult == WEEL::Signal::UpdateAgain && connectionwrapper.activity_result_value&.length == 0
|
|
864
911
|
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
end
|
|
872
|
-
if code.is_a?(String)
|
|
873
|
-
connectionwrapper.inform_activity_manipulate
|
|
874
|
-
struct = nil
|
|
875
|
-
|
|
876
|
-
# when you throw without parameters, ma contains nil, so we return Signal::Proceed to give ma a meaningful value in other cases
|
|
877
|
-
ma = catch Signal::Again do
|
|
878
|
-
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)
|
|
879
|
-
Signal::Proceed
|
|
912
|
+
code, cmess = if waitingresult == WEEL::Signal::UpdateAgain
|
|
913
|
+
[update, 'update']
|
|
914
|
+
elsif waitingresult == WEEL::Signal::Salvage
|
|
915
|
+
[salvage, 'salvage'] || raise('HTTP Error. The service return status was not between 200 and 300.')
|
|
916
|
+
else
|
|
917
|
+
[finalize, 'finalize']
|
|
880
918
|
end
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
919
|
+
if code.is_a?(String)
|
|
920
|
+
connectionwrapper.inform_activity_manipulate
|
|
921
|
+
struct = nil
|
|
922
|
+
|
|
923
|
+
# when you throw without parameters, ma contains nil, so we return Signal::Proceed to give ma a meaningful value in other cases
|
|
924
|
+
ma = catch Signal::Again do
|
|
925
|
+
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)
|
|
926
|
+
Signal::Proceed
|
|
927
|
+
end
|
|
928
|
+
connectionwrapper.inform_manipulate_change(
|
|
929
|
+
((struct && struct.changed_status) ? @__weel_status : nil),
|
|
930
|
+
((struct && struct.changed_data.any?) ? struct.changed_data.uniq : nil),
|
|
931
|
+
((struct && struct.changed_endpoints.any?) ? struct.changed_endpoints.uniq : nil),
|
|
932
|
+
@__weel_data,
|
|
933
|
+
@__weel_endpoints
|
|
934
|
+
)
|
|
935
|
+
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
|
|
936
|
+
end
|
|
937
|
+
end while waitingresult == Signal::UpdateAgain # this signal again loops because async update, proposal: rename to UpdateAgain
|
|
938
|
+
if connectionwrapper.activity_passthrough_value.nil?
|
|
939
|
+
connectionwrapper.inform_activity_done
|
|
940
|
+
wp.passthrough = nil
|
|
941
|
+
wp.detail = :after
|
|
942
|
+
@__weel_connectionwrapper::inform_position_change @__weel_connectionwrapper_args, :after => [wp]
|
|
889
943
|
end
|
|
890
|
-
end while waitingresult == Signal::UpdateAgain # this signal again loops because async update, proposal: rename to UpdateAgain
|
|
891
|
-
if connectionwrapper.activity_passthrough_value.nil?
|
|
892
|
-
connectionwrapper.inform_activity_done
|
|
893
|
-
wp.passthrough = nil
|
|
894
|
-
wp.detail = :after
|
|
895
|
-
@__weel_connectionwrapper::inform_position_change @__weel_connectionwrapper_args, :after => [wp]
|
|
896
944
|
end
|
|
897
945
|
end while again == Signal::Again # there is a catch
|
|
898
946
|
end
|
|
@@ -1016,7 +1064,7 @@ class WEEL
|
|
|
1016
1064
|
def __weel_state=(newState)# {{{
|
|
1017
1065
|
return @__weel_state if newState == @__weel_state && @__weel_state != :ready
|
|
1018
1066
|
|
|
1019
|
-
@__weel_positions = Array.new if newState == :running
|
|
1067
|
+
@__weel_positions = Array.new if newState == :running || @dslr.__weel_state == :simulating
|
|
1020
1068
|
@__weel_state = newState
|
|
1021
1069
|
|
|
1022
1070
|
if newState == :stopping || newState == :finishing
|
|
@@ -1097,7 +1145,7 @@ public
|
|
|
1097
1145
|
@dslr.__weel_state = :stopping
|
|
1098
1146
|
@dslr.__weel_connectionwrapper::inform_syntax_error(@dslr.__weel_connectionwrapper_args,err,code)
|
|
1099
1147
|
end
|
|
1100
|
-
if @dslr.__weel_state == :running || @dslr.__weel_state == :finishing
|
|
1148
|
+
if @dslr.__weel_state == :running || @dslr.__weel_state == :finishing || @dslr.__weel_state == :simulating
|
|
1101
1149
|
ipc = { :unmark => [] }
|
|
1102
1150
|
@dslr.__weel_positions.each{ |wp| ipc[:unmark] << wp }
|
|
1103
1151
|
@dslr.__weel_positions.clear
|
|
@@ -1156,7 +1204,7 @@ public
|
|
|
1156
1204
|
# Stop the workflow execution
|
|
1157
1205
|
def stop # {{{
|
|
1158
1206
|
Thread.new do
|
|
1159
|
-
if @dslr.__weel_state == :running
|
|
1207
|
+
if @dslr.__weel_state == :running || @dslr.__weel_state == :simulating
|
|
1160
1208
|
@dslr.__weel_state = :stopping
|
|
1161
1209
|
@dslr.__weel_main.join if @dslr.__weel_main
|
|
1162
1210
|
elsif @dslr.__weel_state == :ready || @dslr.__weel_state == :stopped
|
|
@@ -1178,12 +1226,18 @@ public
|
|
|
1178
1226
|
end
|
|
1179
1227
|
end
|
|
1180
1228
|
end # }}}
|
|
1181
|
-
|
|
1229
|
+
# Sim the workflow execution
|
|
1182
1230
|
def sim # {{{
|
|
1183
|
-
|
|
1184
|
-
return nil unless stat == :ready || stat == :stopped
|
|
1231
|
+
return nil if @dslr.__weel_state != :ready && @dslr.__weel_state != :stopped
|
|
1185
1232
|
@dslr.__weel_main = Thread.new do
|
|
1186
|
-
|
|
1233
|
+
Thread.current[:branch_search] = true if @dslr.__weel_search_positions.any?
|
|
1234
|
+
begin
|
|
1235
|
+
__weel_control_flow(:simulating, stat)
|
|
1236
|
+
rescue => e
|
|
1237
|
+
puts e.message
|
|
1238
|
+
puts e.backtrace
|
|
1239
|
+
connectionwrapper::inform_connectionwrapper_error connectionwrapper_args, e
|
|
1240
|
+
end
|
|
1187
1241
|
end
|
|
1188
1242
|
end # }}}
|
|
1189
1243
|
|
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.129
|
|
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-01 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: test-unit
|