//
// $Id: Client.m,v 1.7 1997/10/31 04:51:37 nygard Exp $
//

//
//  This file is a part of Empire, a game of exploration and conquest.
//  Copyright (C) 1996  Steve Nygard
//
//  This program is free software; you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation; either version 2 of the License, or
//  (at your option) any later version.
//
//  This program 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 General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with this program; if not, write to the Free Software
//  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
//  You may contact the author by:
//     e-mail:  nygard@telusplanet.net
//

#import "Empire.h"

RCSID ("$Id: Client.m,v 1.7 1997/10/31 04:51:37 nygard Exp $");

#import "Client.h"
#import <Foundation/NSDistantObject.h>

static int _clientCounter = 0;

//======================================================================
// This keeps track of the remote object (the client), the associated
// connection, and the hostname of the client.  When a connection is
// no longer valid, we can compare the invalidated connection with
// the connections of each client.
//======================================================================

#define Client_VERSION 1

@implementation Client

+ (void) initialize
{
    if (self == [Client class])
    {
        [self setVersion:Client_VERSION];
    }
}

//----------------------------------------------------------------------

- initWithClient:aClient fromHost:(NSString *)aHostname
{
    [super init];

    client = [aClient retain];
    hostname = [aHostname retain];

    // We just maintain a reference.  Don't retain.
    clientConnection = [client connectionForProxy];

    // This causes a ProtocolChecker exception: @selector (isKindOfClass:)
    //NSLog (@"clientConnection: %@\n", clientConnection);

    identifier = _clientCounter++;

    return self;
}

//----------------------------------------------------------------------

- (void) dealloc
{
    SNRelease (hostname);
    SNRelease (client);

    [super dealloc];
}

//----------------------------------------------------------------------

- (NSString *) hostname
{
    return hostname;
}

//----------------------------------------------------------------------

- (NSString *) numberedHostname
{
    return [NSString stringWithFormat:@"[%d] %@", identifier, hostname];
}

//----------------------------------------------------------------------

- client
{
    return client;
}

//----------------------------------------------------------------------

- (NSConnection *) clientConnection
{
    return clientConnection;
}

@end
