frysk.testbed
Class DaemonBlockedAtSignal.RunToSignal

java.lang.Object
  extended by frysk.testbed.TaskObserverBase
      extended by frysk.testbed.DaemonBlockedAtSignal.RunToSignal
All Implemented Interfaces:
Observer, TaskObserver, TaskObserver.Signaled, TaskObserver.Terminated
Enclosing class:
DaemonBlockedAtSignal

private class DaemonBlockedAtSignal.RunToSignal
extends TaskObserverBase
implements TaskObserver.Signaled, TaskObserver.Terminated


Nested Class Summary
 
Nested classes/interfaces inherited from interface frysk.proc.TaskObserver
TaskObserver.Cloned, TaskObserver.Code, TaskObserver.Execed, TaskObserver.Forked, TaskObserver.Instruction, TaskObserver.Signaled, TaskObserver.Syscalls, TaskObserver.Terminated, TaskObserver.Terminating, TaskObserver.Watch
 
Constructor Summary
private DaemonBlockedAtSignal.RunToSignal()
           
 
Method Summary
 Action updateSignaled(Task task, Signal value)
          The SIGNAL is pending delivery to the task.
 Action updateTerminated(Task task, Signal sig, int value)
          Called once the Task has terminated; the process no longer exists.
 
Methods inherited from class frysk.testbed.TaskObserverBase
addedCount, addedTo, addFailed, deletedCount, deletedFrom, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface frysk.proc.Observer
addedTo, addFailed, deletedFrom
 

Constructor Detail

DaemonBlockedAtSignal.RunToSignal

private DaemonBlockedAtSignal.RunToSignal()
Method Detail

updateSignaled

public Action updateSignaled(Task task,
                             Signal value)
Description copied from interface: TaskObserver.Signaled
The SIGNAL is pending delivery to the task. Return Action.BLOCK to block the task's further execution. XXX: This gets weird. At present and in theory, a client wanting to discard a signal would need to sequence the following: tell the task to scrub discard the signal; tell the task to remove this observer from the set of blockers; return Action.BLOCK so that this task is added to the set of blockers. Perhaps it would be better to always add an observer to the blocker pool and then require explict removal.

Specified by:
updateSignaled in interface TaskObserver.Signaled

updateTerminated

public Action updateTerminated(Task task,
                               Signal sig,
                               int value)
Description copied from interface: TaskObserver.Terminated
Called once the Task has terminated; the process no longer exists. If SIGNAL is non-NULL it is the signal causing the termination, else STATUS is the exit value passed to _exit(2).

Specified by:
updateTerminated in interface TaskObserver.Terminated