Files
TeslaRel410/CODE/RP/MUNGA/SOCKET.CPP
T
CydandClaude Fable 5 fdd9ac9d97 Initial import: Tesla Release 4.10 (Tesla:BattleTech & Tesla:Red Planet)
Archival snapshot of the Virtual World Entertainment Tesla cockpit
software, 1994-1996: MUNGA engine and L4 pod layer source (Borland
C++ 5.0), BT/RP game code, and game content (models, audio, maps,
gauges, Division renderer data). Includes third-party libraries:
Division dVS/DPL graphics, HMI SOS audio, WATTCP networking.

Files are preserved byte-for-byte (.gitattributes disables all
line-ending conversion). README.md documents the layout, target
hardware, and toolchain.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 13:21:58 -05:00

281 lines
7.0 KiB
C++

//===========================================================================//
// File: socket.cc //
// Project: MUNGA Brick: Connection Library //
// Contents: Implementation details for Socket and its iterator //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// 10/19/94 ECH Initial coding. //
// 10/20/94 JMA Fixed style stuff, merged with SKTITR.CPP //
// 10/23/94 ECH Added greater deletion safety //
// 10/28/94 JMA Made compatible with SGI CC //
// 11/03/94 ECH Made compatible with BC4.0 //
// 11/05/94 JMA Made compatible with GNU C++ //
// 12/12/94 ECH Changed release mechanism //
// 02/16/95 ECH Removed plug commands, added node command //
//---------------------------------------------------------------------------//
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#include <munga.hpp>
#pragma hdrstop
#if !defined(SOCKET_HPP)
#include <socket.hpp>
#endif
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Socket ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
//#############################################################################
// Socket
//#############################################################################
//
Socket::Socket(Node *node)
{
socketsNode = node;
// Warn(socketsNode == NULL);
}
//
//#############################################################################
// ~Socket
//#############################################################################
//
Socket::~Socket()
{
}
//
//#############################################################################
// TestInstance
//#############################################################################
//
Logical
Socket::TestInstance() const
{
return True;
}
//
//#############################################################################
// AddImplementation
//#############################################################################
//
void
Socket::AddImplementation(Plug*)
{
Fail("Socket::AddImplementation - Should never reach here");
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SocketIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
//#############################################################################
//#############################################################################
//
SocketIterator::SocketIterator(Socket *socket)
{
this->socket = socket;
}
//
//#############################################################################
//#############################################################################
//
SocketIterator::~SocketIterator()
{
}
//
//#############################################################################
// TestInstance
//#############################################################################
//
Logical
SocketIterator::TestInstance() const
{
return True;
}
//
//#############################################################################
// Remove
//#############################################################################
//
void
SocketIterator::Remove()
{
Fail("SocketIterator::Remove - Should never reach here");
}
//
//#############################################################################
// IsPlugMember
//#############################################################################
//
Logical
SocketIterator::IsPlugMember(
Plug *find_plug
)
{
Plug *plug;
First();
while ((plug = ReadAndNextPlug()) != NULL)
{
Check(plug);
if (plug == find_plug)
return True;
}
return False;
}
//
//#############################################################################
// RemovePlug
//#############################################################################
//
void
SocketIterator::RemovePlug(
Plug *find_plug
)
{
Plug *plug;
Check(find_plug);
First();
while ((plug = GetCurrentPlug()) != NULL)
{
Check(plug);
if (plug == find_plug)
{
Remove();
return;
}
Next();
}
}
//
//#############################################################################
// DeletePlugs
//#############################################################################
//
void
SocketIterator::DeletePlugs(Logical defeat_release_node)
{
Plug *plug;
Node *save_release_node;
if (defeat_release_node)
{
Check(socket);
save_release_node = socket->GetReleaseNode();
socket->SetReleaseNode(NULL);
}
First();
while ((plug = ReadAndNextPlug()) != NULL)
{
Unregister_Object(plug);
delete plug;
}
#if 0
while ((plug = GetCurrentPlug()) != NULL)
{
Unregister_Object(plug);
delete plug;
}
#endif
if (defeat_release_node)
{
Check(socket);
socket->SetReleaseNode(save_release_node);
}
}
//
//#############################################################################
// SendPlugCommand
//#############################################################################
//
// Considering removal
#if 0
int
SocketIterator::SendPlugCommand(
Plug::CommandID plugCommand,
void *info
)
{
int ret;
Plug *plug;
First();
while ((plug = GetCurrentPlug()) != NULL)
{
Check(plug);
if (
(ret = plug->ReceivePlugCommand(plugCommand, info)) !=
IteratorFunctionNullReturn
)
return ret;
Next();
}
return IteratorFunctionNullReturn;
}
#endif
//
//#############################################################################
// RunIteratorFunction
//#############################################################################
//
// Considering removal
#if 0
int
SocketIterator::RunIteratorFunction(
IteratorFunction iteratorFunction,
void *info
)
{
int ret;
Plug *plug;
Check_Pointer(iteratorFunction);
First();
while ((plug = GetCurrentPlug()) != NULL)
{
Check(plug);
if (
(ret = (*iteratorFunction)(plug, info)) !=
IteratorFunctionNullReturn
)
return ret;
Next();
}
return IteratorFunctionNullReturn;
}
#endif
//
//#############################################################################
// InsertImplementation
//#############################################################################
//
void
SocketIterator::InsertImplementation(Plug*)
{
//
// Should never reach here
//
Fail("SocketIterator::InsertImplementation - Should never reach here");
}