Class: ASIR::Transport::Thread

Inherits:
Local show all
Defined in:
lib/asir/transport/thread.rb

Overview

!SLIDE Thread Transport

Send one-way Message to a Thread.

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, #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) ⇒ Thread

Returns a new instance of Thread.



18
19
20
21
# File 'lib/asir/transport/thread.rb', line 18

def initialize *args
  @thread_class = ::Thread
  @one_way = true; super
end

Instance Attribute Details

#after_thread_newObject

Callback: call(self, MessageState, thr).



16
17
18
# File 'lib/asir/transport/thread.rb', line 16

def after_thread_new
  @after_thread_new
end

#thread_classObject

Any object that responds to .new(&blk). Defaults to ::Thread.



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

def thread_class
  @thread_class
end

Instance Method Details

#_receive_result(state) ⇒ Object

one-way; no Result



34
35
# File 'lib/asir/transport/thread.rb', line 34

def _receive_result state
end

#_send_message(state) ⇒ Object



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

def _send_message state
  thr = thread_class.new do
    super
    send_result(state)
  end
  state.in_stream = thr
  @after_thread_new.call(self, state, thr) if @after_thread_new
  thr
end

#_send_result(state) ⇒ Object

one-way; no Result



38
39
# File 'lib/asir/transport/thread.rb', line 38

def _send_result state
end

#receive_result(state) ⇒ Object

one-may; no Result



42
43
# File 'lib/asir/transport/thread.rb', line 42

def receive_result state
end