Class: ASIR::Transport::Database

Inherits:
ASIR::Transport show all
Defined in:
lib/asir/transport/database.rb

Overview

Transport that stores to any model class that responds to:

obj.save! obj.database_id

See Coder::Database

Constant Summary

Constants included from ASIR::ThreadVariable

ASIR::ThreadVariable::DEBUG, ASIR::ThreadVariable::EMPTY_HASH, ASIR::ThreadVariable::SETTER

Instance Attribute Summary collapse

Attributes inherited from ASIR::Transport

#after_invoke_message, #after_receive_message, #before_send_message, #coder_needs_result_message, #decoder, #encoder, #invoker, #message_count, #needs_message_identifier, #needs_message_timestamp, #on_exception, #on_result_exception, #one_way, #running, #verbose

Attributes included from Log

#_logger

Instance Method Summary collapse

Methods inherited from ASIR::Transport

#_subclass_responsibility, #invoke_message!, #needs_message_identifier?, #needs_message_timestamp?, #receive_message, #receive_result, #send_message, #send_result, #serve_message!, #stop!, #with_server_signals!

Methods included from Log

#_log, #_log_enabled=, #_log_enabled?, #_log_format, #_log_result, enabled, enabled=, included

Methods included from AdditionalData

#[], #[]=, #_additional_data, #additional_data, #additional_data!, #additional_data=, included

Methods included from Message::Delay

#relative_message_delay!, #wait_for_delay!

Methods included from ASIR::ThreadVariable

included, setter

Constructor Details

#initialize(*args) ⇒ Database

Returns a new instance of Database.



16
17
18
19
20
# File 'lib/asir/transport/database.rb', line 16

def initialize *args
  super
  self.coder_needs_result_message = true
  self.needs_message_identifier = true
end

Instance Attribute Details

#after_message_saveObject

Returns the value of attribute after_message_save.



13
14
15
# File 'lib/asir/transport/database.rb', line 13

def after_message_save
  @after_message_save
end

#after_result_saveObject

Returns the value of attribute after_result_save.



14
15
16
# File 'lib/asir/transport/database.rb', line 14

def after_result_save
  @after_result_save
end

#before_message_saveObject

Returns the value of attribute before_message_save.



13
14
15
# File 'lib/asir/transport/database.rb', line 13

def before_message_save
  @before_message_save
end

#before_result_saveObject

Returns the value of attribute before_result_save.



14
15
16
# File 'lib/asir/transport/database.rb', line 14

def before_result_save
  @before_result_save
end

Instance Method Details

#_send_message(state) ⇒ Object



22
23
24
25
26
27
28
29
30
31
# File 'lib/asir/transport/database.rb', line 22

def _send_message state
  if @before_message_save
    @before_message_save.call(self, state)
  end
  state.message_payload.save!
  # message[:database_id] ||= message_payload.database_id
  if @after_message_save
    @after_message_save.call(self, state)
  end
end

#_send_result(state) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/asir/transport/database.rb', line 33

def _send_result state
  return if one_way? or state.message.one_way?
  if @before_result_save
    @before_result_save.call(self, state)
  end
  state.result_payload.save!
  result[:database_id] = result_payload.database_id
  if @after_result_save
    @after_result_save.call(self, state)
  end
end