//===========================================================================// // File: link.cc // // Project: MUNGA Brick: Connection Library // // Contents: Implementation details of base Link // //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- ---------------------------------------------------------- // // 09/28/94 ECH Initial coding. // // 10/20/94 JMA Fixed style stuff. // // 10/28/94 JMA Made compatible with SGI CC // // 11/03/94 ECH Made compatible with BC4.0 // // 12/12/94 ECH Changed release handling // //---------------------------------------------------------------------------// // Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // // All Rights reserved worldwide // // This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // //===========================================================================// #include #pragma hdrstop #if !defined(LINK_HPP) #include #endif #if !defined(PLUG_HPP) #include #endif //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // //############################################################################# // Link //############################################################################# // Link::Link( Socket *socket, Plug *plug ) { this->socket = socket; this->plug = plug; // //---------------------------------------------------- // Add this new link to the plugs current set of links //---------------------------------------------------- // AddToPlug(plug); } // //############################################################################# // ~Link //############################################################################# // Link::~Link() { // //----------------------------------------------------- // Remove this link from the plugs current set of links //----------------------------------------------------- // ReleaseFromPlug(); } // //############################################################################# // TestInstance //############################################################################# // Logical Link::TestInstance() const { Check_Signature(socket); Check_Signature(plug); return True; } // //############################################################################# // ReleaseFromPlug //############################################################################# // void Link::ReleaseFromPlug() { // //----------------------------------------------------- // Remove this link from the plugs current set of links //----------------------------------------------------- // Check(plug); if (plug->linkHead == this) { plug->linkHead = nextLink; } if (prevLink != NULL) { Check(prevLink); prevLink->nextLink = nextLink; } if (nextLink != NULL) { Check(nextLink); nextLink->prevLink = prevLink; } prevLink = nextLink = NULL; } // //############################################################################# // AddToPlug //############################################################################# // void Link::AddToPlug(Plug *plug) { Check(plug); if ((nextLink = plug->linkHead) != NULL) { Check(nextLink); nextLink->prevLink = this; } this->prevLink = NULL; plug->linkHead = this; }