tengine_core 0.5.28
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.
- data/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +40 -0
- data/Gemfile.lock +95 -0
- data/README.md +54 -0
- data/Rakefile +44 -0
- data/VERSION +1 -0
- data/bin/tengine_atd +8 -0
- data/bin/tengine_heartbeat_watchd +8 -0
- data/bin/tengined +182 -0
- data/examples/VERSION +1 -0
- data/examples/uc01_execute_processing_for_event.rb +11 -0
- data/examples/uc02_fire_another_event.rb +16 -0
- data/examples/uc03_2handlers_for_1event.rb +16 -0
- data/examples/uc08_if_both_a_and_b_occurs.rb +11 -0
- data/examples/uc10_if_the_event_occurs_at_the_server.rb +15 -0
- data/examples/uc50_commit_event_at_first.rb +17 -0
- data/examples/uc51_commit_event_at_first_submit.rb +29 -0
- data/examples/uc52_commit_event_after_all_handler_submit.rb +31 -0
- data/examples/uc52_never_commit_event_unless_all_handler_submit.rb +31 -0
- data/examples/uc60_event_in_handler.rb +18 -0
- data/examples/uc62_session_in_driver.rb +16 -0
- data/examples/uc64_safety_countup.rb +14 -0
- data/examples/uc70_driver_enabled_on_activation.rb +13 -0
- data/examples/uc71_driver_disabled_on_activation.rb +14 -0
- data/examples/uc72_setup_eventmachine.rb +17 -0
- data/examples/uc80_raise_io_error.rb +10 -0
- data/examples/uc81_raise_runtime_error.rb +10 -0
- data/examples2/driver01.rb +18 -0
- data/examples2/driver02.rb +19 -0
- data/examples2/uc08_if_both_a_and_b_occurs.rb +13 -0
- data/examples2/uc10_if_the_event_occurs_at_the_server.rb +18 -0
- data/examples2/uc51_commit_event_at_first_submit_1.rb +16 -0
- data/examples2/uc51_commit_event_at_first_submit_2.rb +17 -0
- data/examples2/uc51_commit_event_at_first_submit_3.rb +17 -0
- data/examples2/uc62_session_in_driver.rb +16 -0
- data/examples2/uc71_driver_disabled_on_activation.rb +16 -0
- data/failure_examples/VERSION +1 -0
- data/failure_examples/uc53_submit_outside_of_handler.rb +15 -0
- data/failure_examples/uc61_event_outside_of_handler.rb +12 -0
- data/failure_examples/uc63_session_outside_of_driver.rb +13 -0
- data/lib/tengine/core.rb +74 -0
- data/lib/tengine/core/bootstrap.rb +123 -0
- data/lib/tengine/core/collection_accessible.rb +34 -0
- data/lib/tengine/core/config.rb +10 -0
- data/lib/tengine/core/config/atd.rb +225 -0
- data/lib/tengine/core/config/core.rb +319 -0
- data/lib/tengine/core/config/heartbeat_watcher.rb +229 -0
- data/lib/tengine/core/connection_test/.gitignore +1 -0
- data/lib/tengine/core/connection_test/fire_bar_on_foo.rb +16 -0
- data/lib/tengine/core/driveable.rb +213 -0
- data/lib/tengine/core/driver.rb +69 -0
- data/lib/tengine/core/driver/finder.rb +42 -0
- data/lib/tengine/core/dsl_evaluator.rb +110 -0
- data/lib/tengine/core/dsl_filter_def.rb +11 -0
- data/lib/tengine/core/dsl_loader.rb +108 -0
- data/lib/tengine/core/event.rb +145 -0
- data/lib/tengine/core/event/finder.rb +82 -0
- data/lib/tengine/core/event_exception_reportable.rb +88 -0
- data/lib/tengine/core/event_wrapper.rb +21 -0
- data/lib/tengine/core/find_by_name.rb +31 -0
- data/lib/tengine/core/handler.rb +152 -0
- data/lib/tengine/core/handler_path.rb +33 -0
- data/lib/tengine/core/heartbeat_watcher.rb +161 -0
- data/lib/tengine/core/io_to_logger.rb +22 -0
- data/lib/tengine/core/kernel.rb +510 -0
- data/lib/tengine/core/kernel_runtime.rb +91 -0
- data/lib/tengine/core/method_traceable.rb +38 -0
- data/lib/tengine/core/mongoid_fix.rb +19 -0
- data/lib/tengine/core/mutex.rb +177 -0
- data/lib/tengine/core/optimistic_lock.rb +69 -0
- data/lib/tengine/core/plugins.rb +54 -0
- data/lib/tengine/core/schedule.rb +21 -0
- data/lib/tengine/core/scheduler.rb +156 -0
- data/lib/tengine/core/selectable_attr.rb +29 -0
- data/lib/tengine/core/session.rb +21 -0
- data/lib/tengine/core/session_wrapper.rb +68 -0
- data/lib/tengine/core/setting.rb +21 -0
- data/lib/tengine/core/validation.rb +36 -0
- data/lib/tengine/errors.rb +18 -0
- data/lib/tengine/rspec.rb +8 -0
- data/lib/tengine/rspec/context_wrapper.rb +51 -0
- data/lib/tengine/rspec/extension.rb +53 -0
- data/lib/tengine_core.rb +23 -0
- data/spec/factories/tengine_core_drivers.rb +10 -0
- data/spec/factories/tengine_core_events.rb +14 -0
- data/spec/factories/tengine_core_handler_paths.rb +9 -0
- data/spec/factories/tengine_core_handlers.rb +9 -0
- data/spec/factories/tengine_core_sessions.rb +9 -0
- data/spec/mongoid.yml +35 -0
- data/spec/spec_helper.rb +48 -0
- data/spec/support/mongo_index_key_log.rb +91 -0
- data/spec/tengine/core/bootstrap_spec.rb +278 -0
- data/spec/tengine/core/bugfix/bind_dsl_file_in_multi_byte_dir_spec.rb +21 -0
- data/spec/tengine/core/bugfix/enabled_on_activation_spec.rb +112 -0
- data/spec/tengine/core/bugfix/receive_event_spec.rb +133 -0
- data/spec/tengine/core/bugfix/use_dsl_version_method.rb +12 -0
- data/spec/tengine/core/bugfix/use_dsl_version_method_spec.rb +28 -0
- data/spec/tengine/core/bugfix/use_event_in_handler_dsl.rb +11 -0
- data/spec/tengine/core/bugfix//351/235/236ACSII/343/201/256/343/203/206/343/202/231/343/202/243/343/203/254/343/202/257/343/203/210/343/203/252/345/220/215/source_location_encoding.rb +35 -0
- data/spec/tengine/core/bugfix//351/235/236ACSII/343/201/256/343/203/206/343/202/231/343/202/243/343/203/254/343/202/257/343/203/210/343/203/252/345/220/215//351/235/236ASCII/343/201/256/343/203/225/343/202/241/343/202/244/343/203/253/345/220/215_dsl.rb +38 -0
- data/spec/tengine/core/bugfix//351/235/236ACSII/343/201/256/343/203/207/343/202/243/343/203/254/343/202/257/343/203/210/343/203/252/345/220/215/source_location_encoding.rb +35 -0
- data/spec/tengine/core/bugfix//351/235/236ACSII/343/201/256/343/203/207/343/202/243/343/203/254/343/202/257/343/203/210/343/203/252/345/220/215//351/235/236ASCII/343/201/256/343/203/225/343/202/241/343/202/244/343/203/253/345/220/215_dsl.rb +38 -0
- data/spec/tengine/core/config/atd_spec.rb +62 -0
- data/spec/tengine/core/config/core_spec.rb +479 -0
- data/spec/tengine/core/config/heartbeat_watcher_spec.rb +62 -0
- data/spec/tengine/core/config/syntax_error_in_erb.yml.erb +13 -0
- data/spec/tengine/core/config/wrong_category_name.yml.erb +13 -0
- data/spec/tengine/core/config/wrong_field_name.yml.erb +12 -0
- data/spec/tengine/core/config/wrong_yaml.yml.erb +13 -0
- data/spec/tengine/core/config_spec/another_port.yml +54 -0
- data/spec/tengine/core/config_spec/config_with_dir_absolute_load_path.yml +16 -0
- data/spec/tengine/core/config_spec/config_with_dir_relative_load_path.yml +16 -0
- data/spec/tengine/core/config_spec/config_with_file_absolute_load_path.yml +16 -0
- data/spec/tengine/core/config_spec/config_with_file_relative_load_path.yml +16 -0
- data/spec/tengine/core/config_spec/log_config_spec.rb +235 -0
- data/spec/tengine/core/driveable_spec.rb +240 -0
- data/spec/tengine/core/driver_spec.rb +159 -0
- data/spec/tengine/core/dsl_loader_spec.rb +172 -0
- data/spec/tengine/core/dsls/uc08_if_both_a_and_b_occurs_spec.rb +35 -0
- data/spec/tengine/core/dsls/uc10_if_the_event_occurs_at_the_server_spec.rb +58 -0
- data/spec/tengine/core/dsls/uc50_commit_event_at_first_spec.rb +29 -0
- data/spec/tengine/core/dsls/uc52_commit_event_after_all_handler_submit_spec.rb +33 -0
- data/spec/tengine/core/dsls/uc52_never_commit_event_unless_all_handler_submit_spec.rb +37 -0
- data/spec/tengine/core/dsls/uc53_submit_outside_of_handler_spec.rb +37 -0
- data/spec/tengine/core/dsls/uc60_event_in_handler_spec.rb +31 -0
- data/spec/tengine/core/dsls/uc61_event_outside_of_handler_spec.rb +37 -0
- data/spec/tengine/core/dsls/uc62_session_in_driver_spec.rb +36 -0
- data/spec/tengine/core/dsls/uc63_session_outside_of_driver_spec.rb +35 -0
- data/spec/tengine/core/dsls/uc64_safety_countup_spec.rb +134 -0
- data/spec/tengine/core/dsls/uc70_driver_enabled_on_activation_spec.rb +39 -0
- data/spec/tengine/core/dsls/uc71_driver_disabled_on_activation_spec.rb +36 -0
- data/spec/tengine/core/dsls/uc72_setup_eventmachine_spec.rb +39 -0
- data/spec/tengine/core/dsls/uc80_raise_io_error_spec.rb +53 -0
- data/spec/tengine/core/dsls/uc81_raise_runtime_error_spec.rb +49 -0
- data/spec/tengine/core/event/finder_spec.rb +136 -0
- data/spec/tengine/core/event_exception_reportable_spec.rb +33 -0
- data/spec/tengine/core/event_spec.rb +161 -0
- data/spec/tengine/core/event_wrapper_spec.rb +35 -0
- data/spec/tengine/core/handler_path_spec.rb +87 -0
- data/spec/tengine/core/handler_spec.rb +190 -0
- data/spec/tengine/core/heartbeat_watcher_spec.rb +131 -0
- data/spec/tengine/core/io_to_logger_spec.rb +30 -0
- data/spec/tengine/core/kernel_spec.rb +885 -0
- data/spec/tengine/core/mutex_spec.rb +184 -0
- data/spec/tengine/core/optimistic_lock_spec.rb +55 -0
- data/spec/tengine/core/scheculer_spec.rb +121 -0
- data/spec/tengine/core/selectable_attr_spec.rb +30 -0
- data/spec/tengine/core/session_spec.rb +104 -0
- data/spec/tengine/core/setting_spec.rb +79 -0
- data/spec/tengine/core_spec.rb +13 -0
- data/spec/tengine_spec.rb +14 -0
- data/tengine_core.gemspec +248 -0
- data/tmp/log/.gitignore +1 -0
- data/tmp/tengined_status/.gitignore +1 -0
- metadata +421 -0
data/examples/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
20110902213500
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
driver :driver10 do
|
|
5
|
+
|
|
6
|
+
# 特定のサーバからのイベントが発生した場合のみ処理を実行する
|
|
7
|
+
on :event10.at("localhost") do
|
|
8
|
+
puts "handler10 for localhost"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
on :event10.at("test_server1") do
|
|
12
|
+
puts "handler10 for test_server1"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
# カーネルはイベントevent50を受け取ったらDBに保存して、すぐにキューにACKを返す。
|
|
5
|
+
# 特に指定しない場合、カーネルはこの :at_first が指定されているように振る舞う。
|
|
6
|
+
ack_policy(:at_first, :event50)
|
|
7
|
+
|
|
8
|
+
# このドライバでは自動テストの簡略化のために明示的に標準出力に対してputsを呼び出しています
|
|
9
|
+
|
|
10
|
+
driver :driver50 do
|
|
11
|
+
|
|
12
|
+
on:event50 do
|
|
13
|
+
STDOUT.puts "handler50 " << (ack? ? "acknowledged" : "unacknowledged")
|
|
14
|
+
submit # submitしても無視されます
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
# カーネルはイベントevent51を受け取ったらDBに保存。
|
|
5
|
+
# 対応するハンドラを実行して最初にsubmitされたときにACKを返す。
|
|
6
|
+
ack_policy(:at_first_submit, :event51)
|
|
7
|
+
|
|
8
|
+
driver :driver51_1 do
|
|
9
|
+
# 最初に実行されるハンドラではsubmitしないので、ACKされない
|
|
10
|
+
on:event51 do
|
|
11
|
+
puts "handler51_1"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
driver :driver51_2 do
|
|
16
|
+
# このハンドラでsubmitするので、ACKする
|
|
17
|
+
on:event51 do
|
|
18
|
+
puts "handler51_2"
|
|
19
|
+
submit
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
driver :driver51_3 do
|
|
24
|
+
# このハンドラでsubmitするが、すでにACKしているのでACKしない
|
|
25
|
+
on:event51 do
|
|
26
|
+
puts "handler51_3"
|
|
27
|
+
submit
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
# カーネルはイベントevent52を受け取ったらDBに保存。
|
|
5
|
+
# 対応するハンドラ群をすべて実行してすべてsubmitしたらACKを返す。
|
|
6
|
+
ack_policy(:after_all_handler_submit, :event52)
|
|
7
|
+
|
|
8
|
+
# このドライバでは自動テストの簡略化のために明示的に標準出力に対してputsを呼び出しています
|
|
9
|
+
|
|
10
|
+
driver :driver52_1 do
|
|
11
|
+
on:event52 do
|
|
12
|
+
STDOUT.puts "handler52_1 " << (ack? ? "acknowledged" : "unacknowledged")
|
|
13
|
+
submit
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
driver :driver52_2 do
|
|
18
|
+
on:event52 do
|
|
19
|
+
STDOUT.puts "handler52_2 " << (ack? ? "acknowledged" : "unacknowledged")
|
|
20
|
+
submit
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
driver :driver52_3 do
|
|
25
|
+
on:event52 do
|
|
26
|
+
STDOUT.puts "handler52_3 " << (ack? ? "acknowledged" : "unacknowledged")
|
|
27
|
+
submit
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# 上記はすべてsubmitするので通常はすべてのハンドラ実行後にACKを返す。
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
# カーネルはイベントevent52_alt1を受け取ったらDBに保存。
|
|
5
|
+
# 対応するハンドラ群をすべて実行してすべてsubmitしたらACKを返す。
|
|
6
|
+
ack_policy(:after_all_handler_submit, :event52_alt1)
|
|
7
|
+
|
|
8
|
+
# このドライバでは自動テストの簡略化のために明示的に標準出力に対してputsを呼び出しています
|
|
9
|
+
|
|
10
|
+
driver :driver52_alt1_1 do
|
|
11
|
+
on:event52_alt1 do
|
|
12
|
+
STDOUT.puts "handler52_alt1_1 " << (ack? ? "acknowledged" : "unacknowledged")
|
|
13
|
+
submit
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
driver :driver52_alt1_2 do
|
|
18
|
+
on:event52_alt1 do
|
|
19
|
+
STDOUT.puts "handler52_alt1_2 " << (ack? ? "acknowledged" : "unacknowledged")
|
|
20
|
+
# submit # submitしないのでこのDSL
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
driver :driver52_alt1_3 do
|
|
25
|
+
on:event52_alt1 do
|
|
26
|
+
STDOUT.puts "handler52_alt1_3 " << (ack? ? "acknowledged" : "unacknowledged")
|
|
27
|
+
submit
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# 上記はすべてsubmitするので通常はすべてのハンドラ実行後にACKを返す。
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
# ハンドラ内では event メソッドを使って受け取ったイベントを取得する事が可能。
|
|
5
|
+
# イベントの属性については、Tengine::Core::Event を参照
|
|
6
|
+
|
|
7
|
+
driver :driver60 do
|
|
8
|
+
on:event60 do
|
|
9
|
+
Tengine.logger.debug("*" * 100)
|
|
10
|
+
Tengine.logger.debug( "event: #{event.inspect}" )
|
|
11
|
+
hash = {}
|
|
12
|
+
[:event_type_name, :key, :source_name, :occurred_at,
|
|
13
|
+
:level, :confirmed, :sender_name, :properties,].each do |attr_name|
|
|
14
|
+
hash[attr_name.to_s] = event.send(attr_name)
|
|
15
|
+
end
|
|
16
|
+
puts "handler60: " << hash.to_a.sort.inspect
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
# ドライバ内では sessionメソッドで取得できるセッションに対して
|
|
5
|
+
# updateメソッドを使ってドライバのセッションに情報を格納できる。
|
|
6
|
+
# 格納された情報は[]を使用して取得することができる
|
|
7
|
+
|
|
8
|
+
driver :driver62 do
|
|
9
|
+
session.update(:foo => 100) # ドライバ登録時にそのセッションに キー:foo に対して 値100 を設定する。
|
|
10
|
+
|
|
11
|
+
on:event62 do
|
|
12
|
+
value = session[:foo]
|
|
13
|
+
value +=1
|
|
14
|
+
session.update(:foo => value)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
# これは driver62と違って、複数のプロセスが同時に数を数えても正しく+1していきます
|
|
5
|
+
driver :driver64 do
|
|
6
|
+
session.update(:foo => 100) # ドライバ登録時にそのセッションに キー:foo に対して 値100 を設定する。
|
|
7
|
+
|
|
8
|
+
on:event64 do
|
|
9
|
+
session.update(:retry => 2) do |hash|
|
|
10
|
+
hash[:foo] = hash[:foo] + 1
|
|
11
|
+
# hash[:foo] += 1 # と書いても良い
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
# アクティベーション時にイベントドライバを有効な状態にするかどうかを
|
|
5
|
+
# :enabled_on_actibation オプションで指定できる。デフォルトはtrue。
|
|
6
|
+
|
|
7
|
+
driver :driver71, :enabled_on_activation => false do
|
|
8
|
+
|
|
9
|
+
# イベントに対応する処理の実行する
|
|
10
|
+
on:event71 do
|
|
11
|
+
puts "handler71"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
# アクティベーション時にEventMachineの初期化を行うことができる。
|
|
5
|
+
|
|
6
|
+
setup_eventmachine do
|
|
7
|
+
puts "setup_eventmachine"
|
|
8
|
+
EM.add_periodic_timer(3) do
|
|
9
|
+
fire(:event72)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
driver :driver72 do
|
|
14
|
+
on:event72 do
|
|
15
|
+
puts "handler72"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
puts "*" * 100
|
|
3
|
+
puts "#{__FILE__} is loaded"
|
|
4
|
+
|
|
5
|
+
require 'tengine/core'
|
|
6
|
+
|
|
7
|
+
class Driver01
|
|
8
|
+
include Tengine::Core::Driveable
|
|
9
|
+
|
|
10
|
+
on:event01
|
|
11
|
+
def event01
|
|
12
|
+
puts "#" * 100
|
|
13
|
+
puts "handler01"
|
|
14
|
+
puts "Driver01.object_id: #{Driver01.object_id.inspect}"
|
|
15
|
+
puts "ActiveSupport::Dependencies.loaded: #{ActiveSupport::Dependencies.loaded.inspect}"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
class Driver02
|
|
5
|
+
include Tengine::Core::Driveable
|
|
6
|
+
|
|
7
|
+
# イベントが発生したら新たなイベントを発火する
|
|
8
|
+
on:event02_1
|
|
9
|
+
def foo
|
|
10
|
+
puts "handler02_1"
|
|
11
|
+
fire(:event02_2)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
on:event02_2
|
|
15
|
+
def bar
|
|
16
|
+
puts "handler02_2"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
class Uc10IfTheEventOccursAtTheServer
|
|
5
|
+
include Tengine::Core::Driveable
|
|
6
|
+
|
|
7
|
+
# 特定のサーバからのイベントが発生した場合のみ処理を実行する
|
|
8
|
+
on :event10.at("localhost")
|
|
9
|
+
def event10_at_localhost
|
|
10
|
+
puts "handler10 for localhost"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
on :event10.at("test_server1")
|
|
14
|
+
def event10_at_test_server1
|
|
15
|
+
puts "handler10 for test_server1"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
# カーネルはイベントevent51を受け取ったらDBに保存。
|
|
5
|
+
# 対応するハンドラを実行して最初にsubmitされたときにACKを返す。
|
|
6
|
+
ack_policy(:at_first_submit, :event51)
|
|
7
|
+
|
|
8
|
+
class Uc51CommitEventAtFirstSubmit_1
|
|
9
|
+
include Tengine::Core::Driveable
|
|
10
|
+
|
|
11
|
+
# 最初に実行されるハンドラではsubmitしないので、ACKされない
|
|
12
|
+
on:event51
|
|
13
|
+
def event51
|
|
14
|
+
puts "handler51_1"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
# カーネルはイベントevent51を受け取ったらDBに保存。
|
|
5
|
+
# 対応するハンドラを実行して最初にsubmitされたときにACKを返す。
|
|
6
|
+
ack_policy(:at_first_submit, :event51)
|
|
7
|
+
|
|
8
|
+
class Uc51CommitEventAtFirstSubmit_2
|
|
9
|
+
include Tengine::Core::Driveable
|
|
10
|
+
|
|
11
|
+
# このハンドラでsubmitするので、ACKする
|
|
12
|
+
on:event51
|
|
13
|
+
def event51
|
|
14
|
+
puts "handler51_2"
|
|
15
|
+
submit
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'tengine/core'
|
|
3
|
+
|
|
4
|
+
# カーネルはイベントevent51を受け取ったらDBに保存。
|
|
5
|
+
# 対応するハンドラを実行して最初にsubmitされたときにACKを返す。
|
|
6
|
+
ack_policy(:at_first_submit, :event51)
|
|
7
|
+
|
|
8
|
+
class Uc51CommitEventAtFirstSubmit_3
|
|
9
|
+
include Tengine::Core::Driveable
|
|
10
|
+
|
|
11
|
+
# このハンドラでsubmitするが、すでにACKしているのでACKしない
|
|
12
|
+
on:event51
|
|
13
|
+
def event51
|
|
14
|
+
puts "handler51_3"
|
|
15
|
+
submit
|
|
16
|
+
end
|
|
17
|
+
end
|