Class: Pione::Front::DiagnosisNotificationFront

Inherits:
BasicFront
  • Object
show all
Defined in:
lib/pione/front/diagnosis-notification-front.rb

Overview

DiagnosisNotificationFront is a front server for diagnosis test about sending notifications.

Constant Summary collapse

LOCK =
Mutex.new

Instance Attribute Summary

Attributes inherited from BasicFront

#uri

Instance Method Summary collapse

Methods inherited from BasicFront

#[], #[]=, #child_front_uri, #child_pids, #pid, #register_child, #system_logger, #terminate, #terminate_command, #unregister_child

Constructor Details

#initialize(cmd) ⇒ DiagnosisNotificationFront

Returns a new instance of DiagnosisNotificationFront.



8
9
10
11
# File 'lib/pione/front/diagnosis-notification-front.rb', line 8

def initialize(cmd)
  super(cmd, Global.diagnosis_notification_front_port_range)
  @transmitting_threads = ThreadGroup.new
end

Instance Method Details

#register_transmitting_thread(thread) ⇒ void

This method returns an undefined value.

Register the transmitting thread for test.

Parameters:

  • thread (Thread)

    a transmitting thread, see Pione::Command::PioneDiagnosisNotification



35
36
37
# File 'lib/pione/front/diagnosis-notification-front.rb', line 35

def register_transmitting_thread(thread)
  LOCK.synchronize {@transmitting_threads.add(thread)}
end

#touch(transmitter_id) ⇒ void

This method returns an undefined value.

If the front is touched, notification diagnosis is success.

Parameters:

  • transmitter_id (String)

    transmitter ID, this is a string of transmitter's target URI



18
19
20
21
22
23
24
25
26
27
# File 'lib/pione/front/diagnosis-notification-front.rb', line 18

def touch(transmitter_id)
  LOCK.synchronize do
    @transmitting_threads.list.each do |thread|
      if thread[:transmitter_id] == transmitter_id and thread.alive?
        thread.terminate
      end
    end
  end
  return true
end