diff --git a/libs/x32/lua5.1.a b/libs/x32/lua5.1.a index 5fa9ed2..e99ba7f 100644 Binary files a/libs/x32/lua5.1.a and b/libs/x32/lua5.1.a differ diff --git a/libs/x32/lua5.1.lib b/libs/x32/lua5.1.lib index 7ed867d..248301a 100644 Binary files a/libs/x32/lua5.1.lib and b/libs/x32/lua5.1.lib differ diff --git a/libs/x32/lua5.1.pdb b/libs/x32/lua5.1.pdb index ce7c939..ac8e8a7 100644 Binary files a/libs/x32/lua5.1.pdb and b/libs/x32/lua5.1.pdb differ diff --git a/libs/x32/lua5.1_d.a b/libs/x32/lua5.1_d.a index 5fa9ed2..1641728 100644 Binary files a/libs/x32/lua5.1_d.a and b/libs/x32/lua5.1_d.a differ diff --git a/libs/x32/lua5.1_d.lib b/libs/x32/lua5.1_d.lib index cbbc97e..987f6b3 100644 Binary files a/libs/x32/lua5.1_d.lib and b/libs/x32/lua5.1_d.lib differ diff --git a/libs/x32/lua5.1_d.pdb b/libs/x32/lua5.1_d.pdb index c6543db..5bbf7ff 100644 Binary files a/libs/x32/lua5.1_d.pdb and b/libs/x32/lua5.1_d.pdb differ diff --git a/libs/x64/lua5.1.a b/libs/x64/lua5.1.a index e7f081b..cc0b223 100644 Binary files a/libs/x64/lua5.1.a and b/libs/x64/lua5.1.a differ diff --git a/libs/x64/lua5.1.lib b/libs/x64/lua5.1.lib index 10c2221..d8cef5f 100644 Binary files a/libs/x64/lua5.1.lib and b/libs/x64/lua5.1.lib differ diff --git a/libs/x64/lua5.1.pdb b/libs/x64/lua5.1.pdb index b3d7a1d..b60092c 100644 Binary files a/libs/x64/lua5.1.pdb and b/libs/x64/lua5.1.pdb differ diff --git a/libs/x64/lua5.1_d.a b/libs/x64/lua5.1_d.a index 92c4f2b..34abd74 100644 Binary files a/libs/x64/lua5.1_d.a and b/libs/x64/lua5.1_d.a differ diff --git a/libs/x64/lua5.1_d.lib b/libs/x64/lua5.1_d.lib index 246734c..0800209 100644 Binary files a/libs/x64/lua5.1_d.lib and b/libs/x64/lua5.1_d.lib differ diff --git a/libs/x64/lua5.1_d.pdb b/libs/x64/lua5.1_d.pdb index 648503d..de3fced 100644 Binary files a/libs/x64/lua5.1_d.pdb and b/libs/x64/lua5.1_d.pdb differ diff --git a/modules/sockets/include/CFunctions.h b/modules/sockets/include/CFunctions.h index f22c34c..5d8f8c5 100644 --- a/modules/sockets/include/CFunctions.h +++ b/modules/sockets/include/CFunctions.h @@ -4,9 +4,9 @@ * * ml_base, External lua add-on module * -* Copyright � 2003-2008 MTA. All Rights Reserved. +* Copyright (c) 2003-2008 MTA. All Rights Reserved. * -* Grand Theft Auto is � 2002-2003 Rockstar North +* Grand Theft Auto is (c) 2002-2003 Rockstar North * * THE FOLLOWING SOURCES ARE PART OF THE MULTI THEFT * AUTO SOFTWARE DEVELOPMENT KIT AND ARE RELEASED AS diff --git a/modules/sockets/include/CLuaArgument.h b/modules/sockets/include/CLuaArgument.h index de853af..e93e6b1 100644 --- a/modules/sockets/include/CLuaArgument.h +++ b/modules/sockets/include/CLuaArgument.h @@ -4,9 +4,9 @@ * * ml_base, External lua add-on module * -* Copyright � 2003-2008 MTA. All Rights Reserved. +* Copyright (c) 2003-2008 MTA. All Rights Reserved. * -* Grand Theft Auto is � 2002-2003 Rockstar North +* Grand Theft Auto is (c) 2002-2003 Rockstar North * * THE FOLLOWING SOURCES ARE PART OF THE MULTI THEFT * AUTO SOFTWARE DEVELOPMENT KIT AND ARE RELEASED AS diff --git a/modules/sockets/include/CLuaArguments.h b/modules/sockets/include/CLuaArguments.h index 9229e50..00547aa 100644 --- a/modules/sockets/include/CLuaArguments.h +++ b/modules/sockets/include/CLuaArguments.h @@ -4,9 +4,9 @@ * * ml_base, External lua add-on module * -* Copyright � 2003-2008 MTA. All Rights Reserved. +* Copyright (c) 2003-2008 MTA. All Rights Reserved. * -* Grand Theft Auto is � 2002-2003 Rockstar North +* Grand Theft Auto is (c) 2002-2003 Rockstar North * * THE FOLLOWING SOURCES ARE PART OF THE MULTI THEFT * AUTO SOFTWARE DEVELOPMENT KIT AND ARE RELEASED AS diff --git a/modules/sockets/include/CSocket.h b/modules/sockets/include/CSocket.h index 7cf06b0..b80d296 100644 --- a/modules/sockets/include/CSocket.h +++ b/modules/sockets/include/CSocket.h @@ -37,12 +37,13 @@ class CSocket CSocket (lua_State *luaVM, const string& strHost, const unsigned short& usPort); ~CSocket (); // Delete only - Does not trigger any events - void CloseSocketWithEvent (); // Close socket and trigger event + void CloseSocketWithEvent (bool bTriggerCloseEvent); // Close socket and optionally trigger event bool Send (const string& data); bool DoPulse (); bool IsConnected (); void* GetUserdata (); + lua_State* GetLuaVM() { return m_pLuaVM; } static int GetTotalOpenSocketCount (); private: diff --git a/modules/sockets/include/CSocketManager.h b/modules/sockets/include/CSocketManager.h index b54d154..6075de8 100644 --- a/modules/sockets/include/CSocketManager.h +++ b/modules/sockets/include/CSocketManager.h @@ -19,10 +19,12 @@ class CSocketManager { public: static void DoPulse(); - + static void ResourceStopped( lua_State * luaVM ); + static void SocketAdd (CSocket*& pSocket); - static void SocketRemove(CSocket*& pSocket); + static void SocketRemove(CSocket*& pSocket, bool bTriggerCloseEvent=true); static bool GetSocket (CSocket*& pSocket, void* pUserdata); + static bool GetSocketByLuaVM(CSocket*& pSocket, lua_State * luaVM); static void HandleStop (); }; diff --git a/modules/sockets/include/Common.h b/modules/sockets/include/Common.h index 263cb75..9fc3ea3 100644 --- a/modules/sockets/include/Common.h +++ b/modules/sockets/include/Common.h @@ -4,9 +4,9 @@ * * ml_base, External lua add-on module * -* Copyright � 2003-2008 MTA. All Rights Reserved. +* Copyright (c) 2003-2008 MTA. All Rights Reserved. * -* Grand Theft Auto is � 2002-2003 Rockstar North +* Grand Theft Auto is (c) 2002-2003 Rockstar North * * THE FOLLOWING SOURCES ARE PART OF THE MULTI THEFT * AUTO SOFTWARE DEVELOPMENT KIT AND ARE RELEASED AS diff --git a/modules/sockets/include/ml_sockets.h b/modules/sockets/include/ml_sockets.h index 62322c3..b437749 100644 --- a/modules/sockets/include/ml_sockets.h +++ b/modules/sockets/include/ml_sockets.h @@ -4,9 +4,9 @@ * * ml_base, External lua add-on module * -* Copyright � 2003-2008 MTA. All Rights Reserved. +* Copyright (c) 2003-2008 MTA. All Rights Reserved. * -* Grand Theft Auto is � 2002-2003 Rockstar North +* Grand Theft Auto is (c) 2002-2003 Rockstar North * * THE FOLLOWING SOURCES ARE PART OF THE MULTI THEFT * AUTO SOFTWARE DEVELOPMENT KIT AND ARE RELEASED AS diff --git a/modules/sockets/src/CFunctions.cpp b/modules/sockets/src/CFunctions.cpp index 23532ba..d43a7c8 100644 --- a/modules/sockets/src/CFunctions.cpp +++ b/modules/sockets/src/CFunctions.cpp @@ -4,9 +4,9 @@ * * ml_base, External lua add-on module * -* Copyright © 2003-2008 MTA. All Rights Reserved. +* Copyright (c) 2003-2008 MTA. All Rights Reserved. * -* Grand Theft Auto is © 2002-2003 Rockstar North +* Grand Theft Auto is (c) 2002-2003 Rockstar North * * THE FOLLOWING SOURCES ARE PART OF THE MULTI THEFT * AUTO SOFTWARE DEVELOPMENT KIT AND ARE RELEASED AS diff --git a/modules/sockets/src/CLuaArgument.cpp b/modules/sockets/src/CLuaArgument.cpp index 0583234..85ab09f 100644 --- a/modules/sockets/src/CLuaArgument.cpp +++ b/modules/sockets/src/CLuaArgument.cpp @@ -4,9 +4,9 @@ * * ml_base, External lua add-on module * -* Copyright © 2003-2008 MTA. All Rights Reserved. +* Copyright (c) 2003-2008 MTA. All Rights Reserved. * -* Grand Theft Auto is © 2002-2003 Rockstar North +* Grand Theft Auto is (c) 2002-2003 Rockstar North * * THE FOLLOWING SOURCES ARE PART OF THE MULTI THEFT * AUTO SOFTWARE DEVELOPMENT KIT AND ARE RELEASED AS diff --git a/modules/sockets/src/CLuaArguments.cpp b/modules/sockets/src/CLuaArguments.cpp index 78a8c04..51003c3 100644 --- a/modules/sockets/src/CLuaArguments.cpp +++ b/modules/sockets/src/CLuaArguments.cpp @@ -4,9 +4,9 @@ * * ml_base, External lua add-on module * -* Copyright © 2003-2008 MTA. All Rights Reserved. +* Copyright (c) 2003-2008 MTA. All Rights Reserved. * -* Grand Theft Auto is © 2002-2003 Rockstar North +* Grand Theft Auto is (c) 2002-2003 Rockstar North * * THE FOLLOWING SOURCES ARE PART OF THE MULTI THEFT * AUTO SOFTWARE DEVELOPMENT KIT AND ARE RELEASED AS diff --git a/modules/sockets/src/CSocket.cpp b/modules/sockets/src/CSocket.cpp index 8f852cb..56ae80c 100644 --- a/modules/sockets/src/CSocket.cpp +++ b/modules/sockets/src/CSocket.cpp @@ -64,13 +64,14 @@ CSocket::~CSocket() } } -void CSocket::CloseSocketWithEvent() +void CSocket::CloseSocketWithEvent(bool bTriggerCloseEvent) { // Close the socket, if it exists, and trigger the closed event if (m_pSocket != ERR_INVALID_SOCKET) { CloseSocket(); - TriggerEvent("onSockClosed"); + if ( bTriggerCloseEvent ) + TriggerEvent("onSockClosed"); } } diff --git a/modules/sockets/src/CSocketManager.cpp b/modules/sockets/src/CSocketManager.cpp index d794f92..3ba1e11 100644 --- a/modules/sockets/src/CSocketManager.cpp +++ b/modules/sockets/src/CSocketManager.cpp @@ -39,17 +39,29 @@ void CSocketManager::DoPulse() } } + +void CSocketManager::ResourceStopped( lua_State * luaVM ) +{ + // Enusure all sockets using luaVM are closed + CSocket* pSocket; + while( GetSocketByLuaVM( pSocket, luaVM ) ) + { + SocketRemove( pSocket, false ); + } +} + + void CSocketManager::SocketAdd(CSocket*& pSocket) { // Add the socket to the loop stuff vecSockets.push_back(pSocket); } -void CSocketManager::SocketRemove(CSocket*& pSocket) +void CSocketManager::SocketRemove(CSocket*& pSocket, bool bTriggerCloseEvent) { ListRemove(vecSockets, pSocket); ListRemove(processQueue, pSocket); - pSocket->CloseSocketWithEvent(); + pSocket->CloseSocketWithEvent(bTriggerCloseEvent); ListRemove(deleteList, pSocket); deleteList.push_back(pSocket); } @@ -75,6 +87,24 @@ bool CSocketManager::GetSocket(CSocket*& pSocket, void* pUserdata) return false; } + +bool CSocketManager::GetSocketByLuaVM(CSocket*& pSocket, lua_State * luaVM) +{ + // Loop through all sockets + for (unsigned int i = 0; i < vecSockets.size(); ++i) + { + // Compare the current socket's luaVM with the one we're looking for + if (vecSockets[i]->GetLuaVM() == luaVM) + { + // If it's the one we want, assign pSocket to it and return true + pSocket = vecSockets[i]; + return true; + } + } + + return false; +} + void CSocketManager::HandleStop() { // Triggered at module stop. Simply destroys all sockets diff --git a/modules/sockets/src/ml_sockets.cpp b/modules/sockets/src/ml_sockets.cpp index 6974fea..8ad1ea1 100644 --- a/modules/sockets/src/ml_sockets.cpp +++ b/modules/sockets/src/ml_sockets.cpp @@ -4,9 +4,9 @@ * * ml_base, External lua add-on module * -* Copyright © 2003-2008 MTA. All Rights Reserved. +* Copyright (c) 2003-2008 MTA. All Rights Reserved. * -* Grand Theft Auto is © 2002-2003 Rockstar North +* Grand Theft Auto is (c) 2002-2003 Rockstar North * * THE FOLLOWING SOURCES ARE PART OF THE MULTI THEFT * AUTO SOFTWARE DEVELOPMENT KIT AND ARE RELEASED AS diff --git a/premake5.lua b/premake5.lua index 996b9b7..7a086f1 100644 --- a/premake5.lua +++ b/premake5.lua @@ -1,6 +1,7 @@ -- Create helper function for output -binpath = function (path) targetdir("%{wks.location}../bin/".. path) end +cwd = os.getcwd() +binpath = function (path) targetdir(os.realpath(("%s/bin/%s"):format(cwd, path))) end workspace "MTA Modules" @@ -27,7 +28,8 @@ workspace "MTA Modules" filter "configurations:Debug" defines { "DEBUG" } - flags { "C++14", "Symbols" } + flags { "C++14" } + symbols "On" targetsuffix "_d" filter "configurations:Release" diff --git a/utils/premake5 b/utils/premake5 index 5e6c835..f385c8c 100644 Binary files a/utils/premake5 and b/utils/premake5 differ diff --git a/utils/premake5.exe b/utils/premake5.exe index 28bccbc..ebe7ae7 100644 Binary files a/utils/premake5.exe and b/utils/premake5.exe differ