Class: Karait::Message

Inherits:
Object
  • Object
show all
Includes:
Karait
Defined in:
lib/message.rb

Constant Summary collapse

ASSIGN_VARIABLE_REGEX =
/^([a-z_][a-zA-Z_0-9]*)=$/
VARIABLE_REGEX =
/^([a-z_][a-zA-Z_0-9]*)$/
BLACKLIST =
{
    '_meta' => true,
    '_id' => true,
    '_expired' => true
}

Instance Method Summary collapse

Constructor Details

#initialize(raw_message = {}, queue_collection = nil) ⇒ Message

Returns a new instance of Message.



14
15
16
17
18
19
20
# File 'lib/message.rb', line 14

def initialize(raw_message={}, queue_collection=nil)
  @source = raw_message
  @queue_collection = queue_collection
  @variables_to_serialize = {}
  set_expired
  add_accessors raw_message
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(sym, *args, &block) ⇒ Object (private)



75
76
77
78
79
80
81
82
83
# File 'lib/message.rb', line 75

def method_missing(sym, *args, &block)
  if matches = sym.to_s.match(Message::ASSIGN_VARIABLE_REGEX) and args.count == 1
    @variables_to_serialize[matches[1]] = args[0]
  elsif matches = sym.to_s.match(Message::VARIABLE_REGEX) and args.count == 0
    return @variables_to_serialize[matches[1]]
  else
    super(sym, *args, &block)
  end
end

Instance Method Details

#_get_idObject



47
48
49
# File 'lib/message.rb', line 47

def _get_id
  return @source['_id']
end

#deleteObject



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/message.rb', line 26

def delete
  @queue_collection.update(
      {
          '_id' => @source['_id']
      },
      {
          '$set' => {
              '_meta.expired' => true
          }
      }
  )
end

#expired?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/message.rb', line 39

def expired?
  return @expired
end

#get(key) ⇒ Object



43
44
45
# File 'lib/message.rb', line 43

def get(key)
  return @variables_to_serialize[key.to_s]
end

#to_hashObject



22
23
24
# File 'lib/message.rb', line 22

def to_hash
  return @variables_to_serialize
end