Class: Tengine::Event
- Inherits:
-
Object
- Object
- Tengine::Event
- Defined in:
- lib/tengine/event.rb
Overview
Serializable Class of object to send to an MQ or to receive from MQ.
Constant Summary collapse
- LEVELS =
from level to level_key
{ 0 => :gr_heartbeat, 1 => :debug, 2 => :info, 3 => :warn, 4 => :error, 5 => :fatal, }.freeze
- LEVELS_INV =
from level_key to level
LEVELS.invert.freeze
- ATTRIBUTE_NAMES =
[:event_type_name, :key, :source_name, :occurred_at, :level, :sender_name, :properties].freeze
Class Attribute Summary collapse
Instance Attribute Summary collapse
-
#event_type_name ⇒ Object
イベント種別名。.
-
#key ⇒ Object
キー。インスタンス生成時に同じ意味のイベントには同じキーが割り振られます。.
-
#level ⇒ Object
イベントの通知レベル.
-
#occurred_at ⇒ Object
イベントの発生日時。.
-
#sender_name ⇒ Object
イベントの送信者名。.
-
#source_name ⇒ Object
イベントの発生源名。.
Class Method Summary collapse
- .config ⇒ Object
- .config=(v) ⇒ Object
-
.default_level ⇒ Object
levelが指定されていない場合に設定される文字列を返します config に値が設定されていなかったらhost_nameの値が使用されます.
-
.default_sender_name ⇒ Object
sender_nameが指定されていない場合に設定される文字列を返します config に値が設定されていなかったらhost_nameの値が使用されます.
-
.default_source_name ⇒ Object
source_nameが指定されていない場合に設定される文字列を返します config に値が設定されていなかったらhost_nameの値が使用されます.
-
.fire(*args, &block) ⇒ Object
see Tengine::Event::Sender#fire.
-
.host_name ⇒ String
ホスト名を取得する 内部ではhost_name_commandで指定されたコマンドを実行しています。.
-
.parse(str) ⇒ Object
jsonの文字列からTengine::Eventのオブジェクトを解釈して生成します.
- .uuid_gen ⇒ Object
Instance Method Summary collapse
-
#attributes ⇒ Hash
Attributes of this object.
-
#initialize(attrs = nil) ⇒ Tengine::Event
constructor
constructor.
- #level_key ⇒ Object
- #level_key=(v) ⇒ Object
- #properties ⇒ Object
- #properties=(hash) ⇒ Object
- #transmitted? ⇒ Boolean
Constructor Details
#initialize(attrs = nil) ⇒ Tengine::Event
constructor
89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/tengine/event.rb', line 89 def initialize(attrs = nil) if attrs raise ArgumentError, "attrs must be a Hash but was #{attrs.inspect}" unless attrs.is_a?(Hash) attrs.each do |key, value| send("#{key}=", value) end end klass = self.class @key ||= klass.uuid_gen.generate # Stringを返す @source_name ||= klass.default_source_name @sender_name ||= klass.default_sender_name @level ||= klass.default_level @occurred_at ||= Time.now.utc end |
Class Attribute Details
.default_sender ⇒ Object
30 31 32 |
# File 'lib/tengine/event.rb', line 30 def default_sender @default_sender ||= Tengine::Event::Sender.new(mq_suite) end |
.host_name_command ⇒ Object
53 |
# File 'lib/tengine/event.rb', line 53 def host_name_command; @host_name_command ||= "hostname"; end |
Instance Attribute Details
#event_type_name ⇒ Object
イベント種別名。
110 111 112 |
# File 'lib/tengine/event.rb', line 110 def event_type_name @event_type_name end |
#key ⇒ Object
キー。インスタンス生成時に同じ意味のイベントには同じキーが割り振られます。
106 107 108 |
# File 'lib/tengine/event.rb', line 106 def key @key end |
#level ⇒ Object
イベントの通知レベル
147 148 149 |
# File 'lib/tengine/event.rb', line 147 def level @level end |
#occurred_at ⇒ Object
イベントの発生日時。
120 121 122 |
# File 'lib/tengine/event.rb', line 120 def occurred_at @occurred_at end |
#sender_name ⇒ Object
イベントの送信者名。
172 173 174 |
# File 'lib/tengine/event.rb', line 172 def sender_name @sender_name end |
#source_name ⇒ Object
イベントの発生源名。
115 116 117 |
# File 'lib/tengine/event.rb', line 115 def source_name @source_name end |
Class Method Details
.config ⇒ Object
23 |
# File 'lib/tengine/event.rb', line 23 def config; @config ||= {}; end |
.config=(v) ⇒ Object
24 |
# File 'lib/tengine/event.rb', line 24 def config=(v); @config = v; end |
.default_level ⇒ Object
levelが指定されていない場合に設定される文字列を返します config に値が設定されていなかったらhost_nameの値が使用されます
73 74 75 |
# File 'lib/tengine/event.rb', line 73 def default_level LEVELS_INV[(config[:default_level_key] || :info).to_sym] end |
.default_sender_name ⇒ Object
sender_nameが指定されていない場合に設定される文字列を返します config に値が設定されていなかったらhost_nameの値が使用されます
69 |
# File 'lib/tengine/event.rb', line 69 def default_sender_name; config[:default_sender_name] || "#{host_name}/#{Process.pid}"; end |
.default_source_name ⇒ Object
source_nameが指定されていない場合に設定される文字列を返します config に値が設定されていなかったらhost_nameの値が使用されます
65 |
# File 'lib/tengine/event.rb', line 65 def default_source_name; config[:default_source_name] || "#{host_name}/#{Process.pid}"; end |
.fire(*args, &block) ⇒ Object
see Tengine::Event::Sender#fire
19 20 21 |
# File 'lib/tengine/event.rb', line 19 def fire(*args, &block) default_sender.fire(*args, &block) end |
.host_name ⇒ String
ホスト名を取得する 内部ではhost_name_commandで指定されたコマンドを実行しています。
59 60 61 |
# File 'lib/tengine/event.rb', line 59 def host_name `#{host_name_command}`.strip end |
.parse(str) ⇒ Object
jsonの文字列からTengine::Eventのオブジェクトを解釈して生成します
41 42 43 44 45 46 47 48 49 |
# File 'lib/tengine/event.rb', line 41 def parse(str) case raw_parsed = JSON.parse(str) when Hash then new(raw_parsed) when Array then raw_parsed.map{|hash| new(hash)} else end end |
.uuid_gen ⇒ Object
34 35 36 37 38 |
# File 'lib/tengine/event.rb', line 34 def uuid_gen # uuidtools と uuid のどちらが良いかは以下のサイトを参照して uuid を使うようにしました。 # http://d.hatena.ne.jp/kiwamu/20090205/1233826235 @uuid_gen ||= ::UUID.new end |
Instance Method Details
#attributes ⇒ Hash
Returns attributes of this object.
189 190 191 192 193 194 195 |
# File 'lib/tengine/event.rb', line 189 def attributes ATTRIBUTE_NAMES.inject({}) do |d, attr_name| v = send(attr_name) d[attr_name] = v unless v.blank? d end end |
#level_key ⇒ Object
158 |
# File 'lib/tengine/event.rb', line 158 def level_key; LEVELS[level];end |
#level_key=(v) ⇒ Object
159 160 161 162 163 164 165 166 167 168 |
# File 'lib/tengine/event.rb', line 159 def level_key=(v) if v unless val = LEVELS_INV[v.to_sym] raise ArgumentError, "Invalid level_key #{v.inspect}. It must be one of #{LEVELS_INV.keys.inspect}" end self.level = val else self.level = nil end end |
#properties ⇒ Object
178 179 180 |
# File 'lib/tengine/event.rb', line 178 def properties @properties ||= {} end |
#properties=(hash) ⇒ Object
182 183 184 |
# File 'lib/tengine/event.rb', line 182 def properties=(hash) @properties = (hash || {}).stringify_keys end |