This is TMConnectionObserver.m in view mode; [Download] [Up]
/* Implementation of TMConnectionObserver class. Written by Tiggr <tiggr@es.ele.tue.nl> and Michael <michael@thi.nl> Copyright (C) 1994, 1995 Pieter J. Schoenmakers and Michael L.H. Brouwer. All rights reserved. This file is part of RUNNER. RUNNER is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. RUNNER is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with RUNNER; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. $Id: TMConnectionObserver.m,v 1.1 1995/08/25 14:53:11 tiggr Exp $ */ #import <stdio.h> #import <stdarg.h> #import <objc/Object.h> #import <remote/NXConnection.h> #import <remote/NXProxy.h> #import "TMConnectionObserver.h" void LogError (const char *fmt, ...) { va_list ap; va_start (ap, fmt); fprintf (stderr, "runner: "); vfprintf (stderr, fmt, ap); fprintf (stderr, "\n"); va_end (ap); } /* LogError */ @implementation TMConnectionObserver /******************** NXSenderIsInvalid ********************/ /* Be informed of the connection states. */ -senderIsInvalid: (NXConnection *) connection { int i, n; id list; /* LogError ("senderIsInvalid: %p", connection); */ list = [connection remoteObjects]; for (i = 0, n = [list count]; i < n; i++) { id p, l; p = [list objectAt: i]; l = [proxies valueForKey: p]; if (l) { [proxies removeKey: p]; [l proxyDied: p]; } } [list free]; return (self); } /* -senderIsInvalid: */ -init { if (![super init]) return (nil); /* The PROXIES maps proxys to local objects. Since a proxy can vanish because the connection is broken, the key description is NOT an ID (which would cause `-hash' to be invoked (synchronously!)). */ proxies = [[HashTable alloc] initKeyDesc: "!" valueDesc: "@"]; return (self); } /* -init */ -(void) registerProxy: (id) proxy forLocal: (id <TMProxyDeath>) local { /* LogError ("%p %p connection: %p", proxy, local, c); */ if ([proxies insertKey: proxy value: local]) LogError ("%p %p repeated", proxy, local); else [[proxy connectionForProxy] registerForInvalidationNotification: self]; } /* -registerProxy:forLocal: */ -(void) unregisterProxy: (id) proxy { if (![proxies valueForKey: proxy]) LogError ("proxy %p not registered", proxy); else [proxies removeKey: proxy]; } /* -unregisterProxy: */ @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.