//===========================================================================// // 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 #pragma hdrstop #if !defined(SOCKET_HPP) #include #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"); }