MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / openConnectTo

Method openConnectTo

Engine/source/platform/platformNet.cpp:734–853  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

732}
733
734NetSocket Net::openConnectTo(const char *addressString)
735{
736 if (Journal::IsPlaying())
737 {
738 U32 ret;
739 Journal::Read(&ret);
740 return NetSocket::fromHandle(ret);
741 }
742
743 NetAddress address;
744 NetSocket handleFd = NetSocket::INVALID;
745 Net::Error error = NoError;
746
747 error = Net::stringToAddress(addressString, &address, false);
748
749 if (error == NoError && address.type != NetAddress::IPAddress && address.type != NetAddress::IPV6Address)
750 {
751 error = Net::WrongProtocolType;
752 }
753
754 // Open socket
755 if (error == NoError || error == NeedHostLookup)
756 {
757 handleFd = openSocket();
758 }
759
760 // Attempt to connect or queue a lookup
761 if (error == NoError && address.type == NetAddress::IPAddress)
762 {
763 sockaddr_in ipAddr;
764 NetAddressToIPSocket(&address, &ipAddr);
765 SOCKET socketFd = PlatformNetState::smReservedSocketList.activate(handleFd, AF_INET, false, true);
766 if (socketFd != InvalidSocketHandle)
767 {
768 setBlocking(handleFd, false);
769 if (::connect(socketFd, (struct sockaddr *)&ipAddr, sizeof(ipAddr)) == -1)
770 {
771 Net::Error err = PlatformNetState::getLastError();
772 if (err != Net::WouldBlock)
773 {
774 Con::errorf("Error connecting to %s: %u",
775 addressString, err);
776 closeSocket(handleFd);
777 handleFd = NetSocket::INVALID;
778 }
779 }
780 }
781 else
782 {
783 PlatformNetState::smReservedSocketList.remove(handleFd);
784 handleFd = NetSocket::INVALID;
785 }
786
787 if (handleFd != NetSocket::INVALID)
788 {
789 // add this socket to our list of polled sockets
790 addPolledSocket(handleFd, socketFd, PolledSocket::ConnectionPending);
791 }

Callers

nothing calls this directly

Calls 15

IsPlayingFunction · 0.85
NetAddressToIPSocketFunction · 0.85
getLastErrorFunction · 0.85
addPolledSocketFunction · 0.85
NetAddressToIPSocket6Function · 0.85
extractAddressPartsFunction · 0.85
IsRecordingFunction · 0.85
queueLookupMethod · 0.80
ReadFunction · 0.50
errorfFunction · 0.50
WriteFunction · 0.50
U32Enum · 0.50

Tested by

no test coverage detected