weel 1.99.128 → 1.99.129

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/weel.rb +71 -63
  3. data/weel.gemspec +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: db2306d1398c142ad06651d1a9db48e0c9a4943133f9bd6571b5bc2471a0c2a2
4
- data.tar.gz: c181a1d7ef50b406e97dbefff98d3cd326323c3aaf77e87605ab2c6eeae3397d
3
+ metadata.gz: 52a9d1b00bfbd9df62e95f290c520c447b8cb2bb4d4add32efa2b7ec2e31fc54
4
+ data.tar.gz: 8d0d3bb0a413fb1ad7a2d81ea63c2eade55e5f0173045daaced8f495fc6f1de0
5
5
  SHA512:
6
- metadata.gz: 92d0c335a5e58548963d9e5fa22ef985534670bc26f077636065f558ffb159210b38e27b6262f2ba0dffe45c8f593d8e905315ca6cafd09c72d9c38cdcbea267
7
- data.tar.gz: d65d56e15a65ccbb609e5a205743a59dbede363d4b3772432a5ee04a1ecc39e2f4402dce911f1a0922aa3b166a5e037b88f1f2ec1fc982386d20be15f9c2c0b7
6
+ metadata.gz: cce8bf3f578fd2700c317a011437fc6f806f5b4b51d335473a041c3e0253fa06e981d9dfd00edebbae8c9cad1b8a1bbfe20e4afab3445b1549eda6cab18b5281
7
+ data.tar.gz: 8497d993333e112bf56c4431040ca454ee8eeeb57f6fd9437abe9c6deac2b6115c0b672aa28e8ce2f47d23dcc5b5f6226315fd6e0d9f01d7507bfe1460c48b86
data/lib/weel.rb CHANGED
@@ -875,70 +875,72 @@ class WEEL
875
875
  @__weel_connectionwrapper::inform_position_change @__weel_connectionwrapper_args, :after => [wp]
876
876
  end
877
877
  when :call
878
- again = catch Signal::Again do # Will be nil if we do not throw (using default connectionwrapper)
879
- connectionwrapper.mem_guard
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
878
+ begin
879
+ again = catch Signal::Again do # Will be nil if we do not throw (using default connectionwrapper)
892
880
  connectionwrapper.mem_guard
881
+ params = connectionwrapper.prepare(@__weel_lock,@__weel_data,@__weel_endpoints,@__weel_status,Thread.current[:local],connectionwrapper.additional,prepare,endpoint,parameters)
893
882
 
894
- # with loop if catching Signal::Again
895
- # handshake call and wait until it finished
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
883
+ raise Signal::Stop unless connectionwrapper.vote_sync_before(params)
884
+ raise Signal::Skip if self.__weel_state == :stopping || self.__weel_state == :finishing
898
885
 
899
- if Thread.current[:nolongernecessary]
900
- connectionwrapper.activity_no_longer_necessary
901
- raise Signal::NoLongerNecessary
902
- end
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
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]
907
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
908
909
 
909
- next if waitingresult == WEEL::Signal::UpdateAgain && connectionwrapper.activity_result_value&.length == 0
910
+ next if waitingresult == WEEL::Signal::UpdateAgain && connectionwrapper.activity_result_value&.length == 0
910
911
 
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
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']
918
+ end
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
926
936
  end
927
- connectionwrapper.inform_manipulate_change(
928
- ((struct && struct.changed_status) ? @__weel_status : nil),
929
- ((struct && struct.changed_data.any?) ? struct.changed_data.uniq : nil),
930
- ((struct && struct.changed_endpoints.any?) ? struct.changed_endpoints.uniq : nil),
931
- @__weel_data,
932
- @__weel_endpoints
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
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]
935
943
  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
944
  end
943
945
  end while again == Signal::Again # there is a catch
944
946
  end
@@ -1062,7 +1064,7 @@ class WEEL
1062
1064
  def __weel_state=(newState)# {{{
1063
1065
  return @__weel_state if newState == @__weel_state && @__weel_state != :ready
1064
1066
 
1065
- @__weel_positions = Array.new if newState == :running
1067
+ @__weel_positions = Array.new if newState == :running || @dslr.__weel_state == :simulating
1066
1068
  @__weel_state = newState
1067
1069
 
1068
1070
  if newState == :stopping || newState == :finishing
@@ -1143,7 +1145,7 @@ public
1143
1145
  @dslr.__weel_state = :stopping
1144
1146
  @dslr.__weel_connectionwrapper::inform_syntax_error(@dslr.__weel_connectionwrapper_args,err,code)
1145
1147
  end
1146
- if @dslr.__weel_state == :running || @dslr.__weel_state == :finishing
1148
+ if @dslr.__weel_state == :running || @dslr.__weel_state == :finishing || @dslr.__weel_state == :simulating
1147
1149
  ipc = { :unmark => [] }
1148
1150
  @dslr.__weel_positions.each{ |wp| ipc[:unmark] << wp }
1149
1151
  @dslr.__weel_positions.clear
@@ -1202,7 +1204,7 @@ public
1202
1204
  # Stop the workflow execution
1203
1205
  def stop # {{{
1204
1206
  Thread.new do
1205
- if @dslr.__weel_state == :running
1207
+ if @dslr.__weel_state == :running || @dslr.__weel_state == :simulating
1206
1208
  @dslr.__weel_state = :stopping
1207
1209
  @dslr.__weel_main.join if @dslr.__weel_main
1208
1210
  elsif @dslr.__weel_state == :ready || @dslr.__weel_state == :stopped
@@ -1224,12 +1226,18 @@ public
1224
1226
  end
1225
1227
  end
1226
1228
  end # }}}
1227
-
1229
+ # Sim the workflow execution
1228
1230
  def sim # {{{
1229
- stat = @dslr.__weel_state
1230
- return nil unless stat == :ready || stat == :stopped
1231
+ return nil if @dslr.__weel_state != :ready && @dslr.__weel_state != :stopped
1231
1232
  @dslr.__weel_main = Thread.new do
1232
- __weel_control_flow :simulating, stat
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
1233
1241
  end
1234
1242
  end # }}}
1235
1243
 
data/weel.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "weel"
3
- s.version = "1.99.128"
3
+ s.version = "1.99.129"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.license = "LGPL-3.0-or-later"
6
6
  s.summary = "Workflow Execution Engine Library (WEEL)"
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.128
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-09-23 00:00:00.000000000 Z
12
+ date: 2024-10-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: test-unit