Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
195 lines
4.4 KiB
C++
195 lines
4.4 KiB
C++
//===========================================================================//
|
|
// File: Connection.hpp
|
|
// Project: MUNGA Brick: Replicator //
|
|
// Contents:
|
|
//---------------------------------------------------------------------------//
|
|
// Date Who Modification //
|
|
// -------- --- ---------------------------------------------------------- //
|
|
// 08/24/97 JMA Infrastructure changes.
|
|
// 08/25/97 ECH Infrastructure changes. //
|
|
//---------------------------------------------------------------------------//
|
|
// Copyright (C) 1994-1997, Virtual World Entertainment, Inc. //
|
|
// PROPRIETARY AND CONFIDENTIAL //
|
|
//===========================================================================//
|
|
|
|
#pragma once
|
|
|
|
#include "Adept.hpp"
|
|
#include "ReplicatorID.hpp"
|
|
#include "Network.hpp"
|
|
|
|
namespace Adept {
|
|
|
|
//##########################################################################
|
|
//####################### Connection ##########################
|
|
//##########################################################################
|
|
|
|
class Replicator;
|
|
class Replicator__CreateMessage;
|
|
class Replicator__Message;
|
|
|
|
typedef InBox__Message Connection__Message;
|
|
|
|
class Connection:
|
|
public InBox
|
|
{
|
|
friend class Network;
|
|
|
|
public:
|
|
static void
|
|
InitializeClass();
|
|
static void
|
|
TerminateClass();
|
|
|
|
static ClassData
|
|
*DefaultData;
|
|
|
|
typedef Connection__Message Message;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Construction, Destruction, and Testing
|
|
//
|
|
public:
|
|
Connection(
|
|
BYTE id,
|
|
DWORD network_address,
|
|
const char *name
|
|
);
|
|
|
|
//Connection(
|
|
// BYTE id,
|
|
// DWORD network_address,
|
|
// const char *name
|
|
//);
|
|
|
|
~Connection();
|
|
|
|
static Connection
|
|
*Local;
|
|
static Connection
|
|
*Server;
|
|
static Connection
|
|
*Hermit;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Class Data & Message Support
|
|
//
|
|
public:
|
|
enum
|
|
{
|
|
ReplicateMessageID = InBox::NextMessageID,
|
|
ReplicatorMessageID,
|
|
NextMessageID
|
|
};
|
|
|
|
void
|
|
ReplicateMessageHandler(const Replicator__CreateMessage *message);
|
|
void
|
|
ReplicatorMessageHandler(const Message *message);
|
|
|
|
protected:
|
|
static const MessageEntry
|
|
MessageEntries[];
|
|
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Public Interface
|
|
//
|
|
public:
|
|
const ReplicatorID&
|
|
GetNextReplicatorID();
|
|
|
|
int
|
|
GetLastReplicatorIDUsed()
|
|
{
|
|
return nextReplicatorID.localID;
|
|
}
|
|
|
|
void
|
|
RegisterReplicatorID(const ReplicatorID &id);
|
|
|
|
void
|
|
AddReplicator(Replicator *replicator);
|
|
void
|
|
RemoveReplicator(Replicator *replicator);
|
|
void
|
|
ReplicatorCreated(
|
|
Replicator *replicator
|
|
);
|
|
|
|
void
|
|
ReplicatorDestroyed(Replicator *replicator);
|
|
|
|
void
|
|
SendToMaster(
|
|
Replicator *replicator,
|
|
const Replicator__Message *message
|
|
);
|
|
|
|
void
|
|
BroadcastToReplicants(
|
|
Replicator *replicator,
|
|
const Replicator__Message *message
|
|
);
|
|
|
|
Replicator*
|
|
FindReplicator(const ReplicatorID &id);
|
|
|
|
void
|
|
DeleteChildren(void);
|
|
|
|
protected:
|
|
Stuff::SafeChainOf<Replicator*>
|
|
allReplicators;
|
|
|
|
int replicatorCount;
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Accessors
|
|
//
|
|
public:
|
|
BYTE
|
|
GetID()
|
|
{Check_Object(this); return connectionID;}
|
|
const char*
|
|
GetConnectionName()
|
|
{Check_Object(this); return connectionName;}
|
|
|
|
DWORD
|
|
GetNetworkAddress()
|
|
{Check_Object(this); return networkAddress;}
|
|
void
|
|
SetNetworkAddress(DWORD network_address)
|
|
{Check_Object(this); networkAddress = network_address;}
|
|
|
|
void
|
|
SetConnectionUsed(int connection);
|
|
void
|
|
ClearConnectionUsed(int connection);
|
|
bool
|
|
ISConnectionUsed(int connection);
|
|
|
|
protected:
|
|
BYTE
|
|
connectionID;
|
|
DWORD
|
|
networkAddress;
|
|
Stuff::MString
|
|
connectionName;
|
|
ReplicatorID
|
|
nextReplicatorID;
|
|
BYTE
|
|
dataTransferBox,
|
|
*dataBuffer,
|
|
*dataPointer;
|
|
size_t
|
|
bytesToTransfer;
|
|
|
|
BYTE
|
|
usedConnections[8192];
|
|
|
|
|
|
public:
|
|
static void DeleteReplicator(Replicator* p);
|
|
};
|
|
}
|