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

Method openConnectTo

Engine/source/platform/platformNet.cpp:792–901  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

790}
791
792NetSocket Net::openConnectTo(const char *addressString)
793{
794 if (Journal::IsPlaying())
795 {
796 U32 ret;
797 Journal::Read(&ret);
798 return NetSocket::fromHandle(ret);
799 }
800
801 NetAddress address;
802 NetSocket handleFd = NetSocket::INVALID;
803 Net::Error error = NoError;
804
805 error = Net::stringToAddress(addressString, &address, false);
806
807 if (error == NoError && address.type != NetAddress::IPAddress && address.type != NetAddress::IPV6Address)
808 {
809 error = Net::WrongProtocolType;
810 }
811
812 if (error != NoError || error == NeedHostLookup)
813 {
814 handleFd = openSocket();
815 }
816
817 // Attempt to connect or queue a lookup
818 if (error == NoError && address.type == NetAddress::IPAddress)
819 {
820 sockaddr_in ipAddr;
821 NetAddressToIPSocket(&address, &ipAddr);
822 SOCKET socketFd = PlatformNetState::smReservedSocketList.activate(handleFd, AF_INET, false, true);
823 if (socketFd != InvalidSocketHandle)
824 {
825 setBlocking(handleFd, false);
826 if (::connect(socketFd, (struct sockaddr *)&ipAddr, sizeof(ipAddr)) == -1 &&
827 errno != EINPROGRESS)
828 {
829 Con::errorf("Error connecting %s: %s",
830 addressString, strerror(errno));
831 closeSocket(handleFd);
832 handleFd = NetSocket::INVALID;
833 }
834 }
835 else
836 {
837 PlatformNetState::smReservedSocketList.remove(handleFd);
838 handleFd = NetSocket::INVALID;
839 }
840
841 if (handleFd != NetSocket::INVALID)
842 {
843 // add this socket to our list of polled sockets
844 addPolledSocket(handleFd, socketFd, PolledSocket::ConnectionPending);
845 }
846 }
847 else if (error == NoError && address.type == NetAddress::IPV6Address)
848 {
849 sockaddr_in6 ipAddr6;

Callers

nothing calls this directly

Calls 15

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

Tested by

no test coverage detected