From 0013e14b7a936b8ced346d1c6b15bf2ef459329a Mon Sep 17 00:00:00 2001 From: Robert Sesek Date: Wed, 1 Aug 2007 13:20:47 -0700 Subject: [PATCH] * Source/DebuggerConnection.h: Added _input and _output instance variables * Source/DebuggerConnection.m: ([DebuggerConnection initWithHost: port: session:]): Set up the NSStream's and register ourselves with NSApplicationWillTerminateNotification ([DebuggerConnection applicationWillTerminate:]): New method to release the object on close ([DebuggerConnection dealloc]): Close and release the streams upon deallocation --- Source/DebuggerConnection.h | 3 +++ Source/DebuggerConnection.m | 32 +++++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/Source/DebuggerConnection.h b/Source/DebuggerConnection.h index ec6f0e4..a11e675 100644 --- a/Source/DebuggerConnection.h +++ b/Source/DebuggerConnection.h @@ -24,6 +24,9 @@ NSString *_session; DebuggerWindowController *_windowController; + + NSInputStream *_input; + NSOutputStream *_output; } // initializer diff --git a/Source/DebuggerConnection.m b/Source/DebuggerConnection.m index 4eb9321..db137e4 100644 --- a/Source/DebuggerConnection.m +++ b/Source/DebuggerConnection.m @@ -31,19 +31,49 @@ _host = [host retain]; _port = port; _session = [session retain]; + _windowController = [[DebuggerWindowController alloc] initWithConnection: self]; [[_windowController window] makeKeyAndOrderFront: self]; + + // now that we have our host information, open the streams and put them in the run loop + [NSStream getStreamsToHost: [NSHost hostWithName: _host] port: _port inputStream: &_input outputStream: &_output]; + [_input retain]; + [_output retain]; + + [_input setDelegate: self]; + [_output setDelegate: self]; + + [_input scheduleInRunLoop: [NSRunLoop currentRunLoop] forMode: NSDefaultRunLoopMode]; + [_output scheduleInRunLoop: [NSRunLoop currentRunLoop] forMode: NSDefaultRunLoopMode]; + + // clean up after ourselves + [[NSNotificationCenter defaultCenter] addObserver: self + selector: @selector(applicationWillTerminate:) + name: NSApplicationWillTerminateNotification + object: NSApp]; } return self; } /** - * Deallocates all of the object's data members + * Release ourselves when we're about to die + */ +- (void)applicationWillTerminate: (NSNotification *)notif +{ + [self release]; +} + +/** + * Releases all of the object's data members and closes the streams */ - (void)dealloc { [_host release]; [_session release]; + [_input close]; + [_output close]; + [_input release]; + [_output release]; [super dealloc]; } -- 2.22.5