weel 1.99.127 → 1.99.129
Sign up to get free protection for your applications and to get access to all the features.
- 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
|