This is GuiGdbManager.h in view mode; [Download] [Up]

#import "GdbManager.h"
#import "GuiGdbCmd.h"
#import "GuiGdbManagerExecLock_Protocol.h"
#import "GuiGdbManagerInternal_Protocol.h"
#import "DebuggerControllerInternal_Protocol.h"

// GuiGdbManager object coordinates the main Gdb thread
// and the DebuggerController thread.  It manages the queue
// of commands between the two; commands are created in
// the Controller thread and executed in the Gdb thread.

@interface GuiGdbManager : GdbManager
		<GuiGdbManagerExecLock, GuiGdbManagerInternal>
    id<DebuggerControllerInternal>	controller;	// in other thread

    // how we connect to the controller
    NSString 				*controllerConnectionName;

    // synchs gdb thread w/ controller thread
    // gdb blocks until provider is avail.
    NSConditionLock  		*displayProviderLock;

    // command queue between threads
    GdbCmd				*cmdQHead;
    NSConditionLock  		*cmdQLock;

    // held when executing a cmd
    NSLock				*execLock;

// Removes a command from the queue;
// can block while waiting for a lock or empty queue.
// Called by Gdb thread
- (GdbCmd*) dequeueCmd;

// Wakes up controller so it (the controller) can
// look for input activity
- (void) tellControllerWeAreReadyForInput;

// window hook is called by the gdb command loop
- (WindowHookFunction) windowHookFunction;

// fork controller thread, wait util we get a display
// provider, return to gdb.
- (int) establishConnection;

// called from within Gdb thread after getting cmd
- (void) executeCommand:(GdbCmd*)cmd;

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.