diff --git a/BSQL.dll b/BSQL.dll index 4e19139307f..861492c8b47 100644 Binary files a/BSQL.dll and b/BSQL.dll differ diff --git a/code/__DEFINES/bsql.dm b/code/__DEFINES/bsql.dm index cd15115c7d4..e5a11f9a32f 100644 --- a/code/__DEFINES/bsql.dm +++ b/code/__DEFINES/bsql.dm @@ -1,10 +1,12 @@ -//BSQL - DMAPI v1.2.0.1 +//BSQL - DMAPI +#define BSQL_VERSION "v1.3.0.0" //types of connections #define BSQL_CONNECTION_TYPE_MARIADB "MySql" #define BSQL_CONNECTION_TYPE_SQLSERVER "SqlServer" #define BSQL_DEFAULT_TIMEOUT 5 +#define BSQL_DEFAULT_THREAD_LIMIT 50 //Call this before rebooting or shutting down your world to clean up gracefully. This invalidates all active connection and operation datums /world/proc/BSQL_Shutdown() @@ -22,8 +24,9 @@ Create a new database connection, does not perform the actual connect connection_type: The BSQL connection_type to use asyncTimeout: The timeout to use for normal operations, 0 for infinite, defaults to BSQL_DEFAULT_TIMEOUT blockingTimeout: The timeout to use for blocking operations, must be less than or equal to asyncTimeout, 0 for infinite, defaults to asyncTimeout + threadLimit: The limit of additional threads BSQL will run simultaneously, defaults to BSQL_DEFAULT_THREAD_LIMIT */ -/datum/BSQL_Connection/New(connection_type, asyncTimeout, blockingTimeout) +/datum/BSQL_Connection/New(connection_type, asyncTimeout, blockingTimeout, threadLimit) return ..() /* diff --git a/code/modules/bsql/core/connection.dm b/code/modules/bsql/core/connection.dm index 39425578729..692d1333f00 100644 --- a/code/modules/bsql/core/connection.dm +++ b/code/modules/bsql/core/connection.dm @@ -4,17 +4,19 @@ BSQL_PROTECT_DATUM(/datum/BSQL_Connection) -/datum/BSQL_Connection/New(connection_type, asyncTimeout, blockingTimeout) +/datum/BSQL_Connection/New(connection_type, asyncTimeout, blockingTimeout, threadLimit) if(asyncTimeout == null) asyncTimeout = BSQL_DEFAULT_TIMEOUT if(blockingTimeout == null) blockingTimeout = asyncTimeout + if(threadLimit == null) + threadLimit = BSQL_DEFAULT_THREAD_LIMIT src.connection_type = connection_type world._BSQL_InitCheck(src) - var/error = world._BSQL_Internal_Call("CreateConnection", connection_type, "[asyncTimeout]", "[blockingTimeout]") + var/error = world._BSQL_Internal_Call("CreateConnection", connection_type, "[asyncTimeout]", "[blockingTimeout]", "[threadLimit]") if(error) BSQL_ERROR(error) return diff --git a/code/modules/bsql/core/library.dm b/code/modules/bsql/core/library.dm index b8e764a16d9..3325768e01b 100644 --- a/code/modules/bsql/core/library.dm +++ b/code/modules/bsql/core/library.dm @@ -17,6 +17,12 @@ BSQL_ERROR("Could not find [libPath]!") return + var/version = _BSQL_Internal_Call("Version") + if(version != BSQL_VERSION) + BSQL_DEL_CALL(caller) + BSQL_ERROR("BSQL DMAPI version mismatch! Expected [BSQL_VERSION], got [version == null ? "NULL" : version]!") + return + var/result = _BSQL_Internal_Call("Initialize") if(result) BSQL_DEL_CALL(caller)