
// NSDistantObjectExtras.m

#import "NSDistantObjectExtras.h"
#import <Foundation/Foundation.h>

@implementation NSDistantObject (Extras)
static NSMutableSet * connectionsCreated = nil;

- (NSDistantObject *) proxyWithProperConnection {
   NSPort * rcvPort = [[NSConnection defaultConnection] receivePort];

   if (rcvPort != [conn receivePort]) {
      NSConnection * priConn = [NSConnection connectionWithReceivePort:rcvPort
                                                              sendPort:[conn sendPort]];
      if (!connectionsCreated)
         connectionsCreated = [NSMutableSet new];
      [connectionsCreated addObject: priConn];
      
      // use some reasonable default timeouts
      [priConn setRequestTimeout: 45.0];
      [priConn setReplyTimeout: 45.0];
      
      // it is never clear when it is safe to release these proxies we dole out
      return [[NSDistantObject alloc] initWithTarget:(id)name connection:priConn];
   }
   return self;
}

- (BOOL) isEqualInSameTask: (NSDistantObject *) other {
   return (name == other->name) ? YES : NO;
}

@end
