1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
/* FIXME: not used! just an unimplemented idea.
*/
#import "STDistantConversation.h"
#import <Foundation/NSException.h>
#import <Foundation/NSNotification.h>
#import <Foundation/NSConnection.h>
#import <Foundation/NSDistantObject.h>
@implementation STDistantConversation
- initWithEnvironment:(STEnvironment *)env
language:(NSString *)langName
{
if ((self = [super init]) != nil)
{
if (!env)
{
[NSException raise:@"STConversationException"
format:@"Unspecified environment for a distant conversation"];
[self release];
return nil;
}
if (!langName || [langName isEqual:@""])
{
languageName = RETAIN([STLanguage defaultLanguageName]);
}
else
{
languageName = RETAIN(langName);
}
environment = RETAIN(env);
[self createProxy];
}
return self;
}
- (void)dealloc
{
RELEASE(languageName);
RELEASE(environment);
[super dealloc];
}
- (void)setLanguage:(NSString *)newLanguage
{
[proxy setLanguage:newLanguage];
}
/** Return name of the language used in the receiver conversation */
- (NSString *)language
{
return [proxy languageName];
}
- (STEnvironment *)environment
{
return environment;
}
- (id)runScriptFromString:(NSString *)aString
{
return [proxy runScriptFromString:aString];
}
- (BOOL)isResumable
{
return YES;
}
- (void)connectionDidDie:(NSNotification *)notification
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
proxy = nil;
NSLog(@"Connection did die");
}
- (BOOL)createProxy
{
NSConnection *connection;
proxy = [environment createConversationProxy];
if(!proxy)
{
return NO;
}
connection = [proxy connectionForProxy];
[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector(connectionDidDie:)
name: NSConnectionDidDieNotification
object: connection];
return YES;
}
- (BOOL)resume
{
if(proxy)
{
NSLog(@"Can not resume: already connected");
return NO;
}
return [self creatProxy];
}
@end
|