Class: Vash

Inherits:
Hash
  • Object
show all
Defined in:
lib/logstash/codecs/IPFIX/util.rb

Overview

Instance Method Summary collapse

Constructor Details

#initialize(constructor = {}) ⇒ Vash

Returns a new instance of Vash.



131
132
133
134
135
136
137
138
139
# File 'lib/logstash/codecs/IPFIX/util.rb', line 131

def initialize(constructor = {})
  @register ||= {}
  if constructor.is_a?(Hash)
    super()
    merge(constructor)
  else
    super(constructor)
  end
end

Instance Method Details

#[](key) ⇒ Object



144
145
146
147
148
# File 'lib/logstash/codecs/IPFIX/util.rb', line 144

def [](key)
  sterilize(key)
  clear(key) if expired?(key)
  regular_reader(key)
end

#[]=(key, *args) ⇒ Object



150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/logstash/codecs/IPFIX/util.rb', line 150

def []=(key, *args)
  if args.length == 2
    value, ttl = args[1], args[0]
  elsif args.length == 1
    value, ttl = args[0], 60
  else
    raise ArgumentError, "Wrong number of arguments, expected 2 or 3, received: #{args.length+1}\n"+
        "Example Usage:  volatile_hash[:key]=value OR volatile_hash[:key, ttl]=value"
  end
  sterilize(key)
  ttl(key, ttl)
  regular_writer(key, value)
end

#cleanup!Object



169
170
171
172
# File 'lib/logstash/codecs/IPFIX/util.rb', line 169

def cleanup!
  now = Time.now.to_i
  @register.map {|k,v| clear(k) if v < now}
end

#clear(key) ⇒ Object



174
175
176
177
178
# File 'lib/logstash/codecs/IPFIX/util.rb', line 174

def clear(key)
  sterilize(key)
  @register.delete key
  self.delete key
end

#merge(hsh) ⇒ Object



164
165
166
167
# File 'lib/logstash/codecs/IPFIX/util.rb', line 164

def merge(hsh)
  hsh.map {|key,value| self[sterile(key)] = hsh[key]}
  self
end

#regular_readerObject



142
# File 'lib/logstash/codecs/IPFIX/util.rb', line 142

alias_method :regular_reader, :[]

#regular_writerObject



141
# File 'lib/logstash/codecs/IPFIX/util.rb', line 141

alias_method :regular_writer, :[]=