Files
firestorm/Gameleap/code/mw4/Libraries/Adept/Connection.hpp
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
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.
2026-06-24 21:28:16 -05:00

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);
};
}