Bug 3538 - Move register/memory/disassembly/sourcewindow to centralized observer object
Summary: Move register/memory/disassembly/sourcewindow to centralized observer object
Status: RESOLVED FIXED
Alias: None
Product: frysk
Classification: Unclassified
Component: general (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Mike Cvet
URL:
Keywords:
Depends on:
Blocks: 1633 2888 3119 3200
  Show dependency treegraph
 
Reported: 2006-11-17 20:33 UTC by Mike Cvet
Modified: 2006-11-20 22:24 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mike Cvet 2006-11-17 20:33:40 UTC
Remove the need for ProcAttachedObserver, ProcBlockObserver, and potentially 
ProcBlockCounter and all local implementations of said observers.
Comment 1 Mike Cvet 2006-11-20 22:24:52 UTC
frysk-core/frysk/rt:
        2006-11-20  Mike Cvet  <mcvet@redhat.com>
        
        * StateModel.java: Refactored to RunState.java.
        * RunState.java: Refactored from StateModel.java.
        (pbo): Removed. ProcBlockObserver is no longer used.
        (stateProc): Added. The Proc this RunState is responsible for.
        (tasks): Added. LinkedList of Tasks belonging to stateProc.
        (numRunningTasks): Number of Tasks belonging to stateProc in the
        unblocked state.
        (RunState): Removed reference to ProcBlockObserver. This class
        now extends Observable and implements TaskObserver.Instruction
        directly. Fixes #3538.
        (getNumRunningTasks): Added.
        (setNumRunningTasks): Added.
        (getNumObservers): Added. Returns the number of Observers in this
        Observable's Observer list.
        (removeObserver): Added. Calls deleteObserver() with the additional
        stipulation of releasing all Tasks if there are no more Observers
        watching them.
        (setProc): Added. Sets stateProc and tasks, and blocks all tasks from
        the incoming Proc.
        (updateExecuted): Added. Callback for TaskObserver.Instruction. Notify
        all watching observers that a task has been re-blocked.
        (addedTo): Added. Callback for TaskObserver.Instruction.
        (deletedFrom): Ditto.
        (addFailed): Ditto.
        (requestAdd): Schedules this Observer to be added to all Tasks.
        (requestAddObservers): Adds this InstructionObserver to the incoming 
Task.
        (blockTask): Schedules this InstructionObserver to be added to all
        incoming Tasks.
        (getNumTasks): Added.
        * tests/TestStateModel: Refactored to TestRunState.
        * tests/TestRunState: Refactored from TestStateModel. Updated to use
        RunState.
        
        frysk-gui/frysk/gui/srcwin:
        2006-11-20  Mike Cvet  <mcvet@redhat.com>
        
        * SourceWindowFactory.java (createSourceWindow): Updated to make
        better use of RunState and figure out when a new Window is needed.
        (SourceWinListener.lifeCycleQuery): Figure out when to remove HashTable
        reference to this Proc.
        (SourceWinListener): Remove unnecessary field.
        (unblockProc): Remove HashTable reference if needed.
        (stateTable): Added. Global static table for referencing RunStates to
        processes for all windows.
        (map): Added. HashMap for mapping Procs to SourceWindows.
        
        * SourceWindow.java (LockObserver.update): Callback for Observer.
        (getLockObserver): Added. Pokes the SourceWindow when threads have been
        reblocked for whatever reason, prompting some sort of information
        re-generation depending on the window state.
        (SourceWinBlocker): Removed. Obsoleted by RunState + LockObserver.
        (lock): Added. The LockObserver for this window.
        
        frysk-gui/frysk/gui/common:
        2006-11-20  Mike Cvet  <mcvet@redhat.com>
        
        * ProcBlockCounter.java: Removed. Obsoleted by RunState.
        
        frysk-gui/frysk/gui:
        2006-11-20  Mike Cvet  <mcvet@redhat.com>
        
        * memory/MemoryWindow.java (desensitize): Added. Sets TreeView and
        other widgets to insensitive.
        (LockObserver): Added. Determines when this window can become
        in/sensitive and re-draw.
        (LockObserver.update): Callback for Observer.
        (getLockObserver): Added.
        (finishMemWin): Moved over from MemoryWindowFactory. Sets up
        preferences and sets the Proc for this MemoryWindow.
        (.buttonEvent): Removes the LockObserver for this window from the
        RunState's list of Observers.
        (MemoryWindow): Initialize a new LockObserver.
        (setObservable): Sets this class' observable - representation of
        RunState.
        (resensitize): Added. Sets TreeView and other widgets to sensitive.
        * memory/MemoryWindowFactory.java (setPaths): Removed deprecated
        Hashtables and their initializations.
        (setMemWin): Updated to use new HashMap.
        (createMemoryWindow): Moved glade initializations in here from
        finishDisWin(). Updated to use RunState objects and centralized list
        of running Windows and Procs from SourceWindowFactory.
        (MemWinListener.lifeCycleQuery): Updated to use RunState and handle
        Proc unmapping cases properly.
        (unblockProc): Use RunState to determine when to remove map reference
        to the Proc.
        (gladePaths): Updated to use new HashMap.
        (MemWinBlocker): Removed.
        * disassembler/DisassemblyWindow.java (finishDisWin): Moved over from
        DisassemblyWindowFactory. Sets up preferences and sets the Proc for
        this DisassemblyWindow.
        (desensitize): Added. Sets TreeView and other widgets to insensitive.
        (LockObserver.update): Callback for Observer.
        (getLockObserver): Added.
        (LockObserver): Added. Determines when this window can become
        in/sensitive and re-draw.
        (.buttonEvent): Removes the LockObserver for this window from the
        RunState's list of Observers.
        (setObservable): Sets this class' observable - representation of
        RunState.
        (DisassemblyWindow): Initialize a new LockObserver.
        (resensitize): Added. Sets TreeView and other widgets to sensitive.
        * disassembler/DisassemblyWindowFactory.java (setPaths): Updated to use
        new HashMap.
        (createDisassemblyWindow): Moved glade initializations in here from
        finishDisWin(). Updated to use RunState objects and centralized list
        of running Windows and Procs from SourceWindowFactory.
        (setDisWin): Updated to use new HashMap.
        (DisWinListener.lifeCycleQuery): Updated to use RunState and handle
        Proc unmapping cases properly.
        (unblockProc): Use RunState to determine when to remove map reference
        to the Proc.
        (DisWinBlocker): Removed.
        * register/RegisterWindowFactory.java (setPaths): Updated to use a
        new HashMap.
        (setRegWin): Updated to use new HashMap.
        (RegWinListener.lifeCycleQuery): Updated to use the RunState of the
        RegisterWindow to determine when to remove map references.
        (unblockProc): Use RunState to determine when to remove map reference
        to the Proc.
        (createRegisterWindow): Moved glade initializations in here from
        finishDisWin(). Updated to use RunState objects and centralized list
        of running Windows and Procs from SourceWindowFactory.
        (RegWinBlocker): Removed.
        * register/RegisterWindow.java (desensitize): Added. Sets TreeView and
        other widgets to insensitive.
        (LockObserver.update): Callback for Observer.
        (RegisterWindow): Initialize new LockObserver.
        (getLockObserver): Added.
        (finishRegWin): Moved over from RegisterWindowFactory. Sets up
        preferences and sets the Proc for this RegisterWindow.
        (LockObserver): Added. Determines when this window can become
        in/sensitive and re-draw.
        (.buttonEvent): Removes the LockObserver for this window from the
        RunState's list of Observers.
        (setObservable): Added. Sets the Observable for this window.
        (resensitize): Added. Sets TreeView and other widgets to sensitive.
        
        frysk-gui/frysk/gui/monitor:
        2006-11-20  Mike Cvet  <mcvet@redhat.com>
        
        * actions/ShowMemWin.java (execute): Remove call to setMonitor().
        * actions/ShowRegWin.java (execute): Ditto.