Class: Villein::Event

Inherits:
Object
  • Object
show all
Defined in:
lib/villein/event.rb

Constant Summary collapse

MEMBERS_EVENT =
%w(member-join member-leave member-failed member-update member-reap)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env = {}, payload: nil) ⇒ Event

Returns a new instance of Event.



5
6
7
8
9
10
11
12
13
14
# File 'lib/villein/event.rb', line 5

def initialize(env={}, payload: nil)
  @type = env['SERF_EVENT']
  @self_name = env['SERF_SELF_NAME']
  @self_tags = Hash[env.select{ |k, v| /^SERF_TAG_/ =~ k }.map { |k, v| [k.sub(/^SERF_TAG_/, ''), v] }]
  @user_event = env['SERF_USER_EVENT']
  @query_name = env['SERF_QUERY_NAME']
  @user_ltime = env['SERF_USER_LTIME']
  @query_ltime = env['SERF_QUERY_LTIME']
  @payload = payload
end

Instance Attribute Details

#payloadObject (readonly)

Returns the value of attribute payload.



16
17
18
# File 'lib/villein/event.rb', line 16

def payload
  @payload
end

#query_ltimeObject (readonly)

Returns the value of attribute query_ltime.



16
17
18
# File 'lib/villein/event.rb', line 16

def query_ltime
  @query_ltime
end

#query_nameObject (readonly)

Returns the value of attribute query_name.



16
17
18
# File 'lib/villein/event.rb', line 16

def query_name
  @query_name
end

#self_nameObject (readonly)

Returns the value of attribute self_name.



16
17
18
# File 'lib/villein/event.rb', line 16

def self_name
  @self_name
end

#self_tagsObject (readonly)

Returns the value of attribute self_tags.



16
17
18
# File 'lib/villein/event.rb', line 16

def self_tags
  @self_tags
end

#typeObject (readonly)

Returns the value of attribute type.



16
17
18
# File 'lib/villein/event.rb', line 16

def type
  @type
end

#user_eventObject (readonly)

Returns the value of attribute user_event.



16
17
18
# File 'lib/villein/event.rb', line 16

def user_event
  @user_event
end

#user_ltimeObject (readonly)

Returns the value of attribute user_ltime.



16
17
18
# File 'lib/villein/event.rb', line 16

def user_ltime
  @user_ltime
end

Instance Method Details

#ltimeObject



18
19
20
# File 'lib/villein/event.rb', line 18

def ltime
  user_ltime || query_ltime
end

#membersObject

Parse and returns member list in Array<Hash> when available. Always return nil if the event type is not member-*.



25
26
27
28
29
30
31
32
33
# File 'lib/villein/event.rb', line 25

def members
  return nil unless MEMBERS_EVENT.include?(type)
  @members ||= begin
    payload.each_line.map do |line|
      name, address, _, tags_str = line.chomp.split(/\t/)
      {name: name, address: address, tags: parse_tags(tags_str || '')}
    end
  end
end