Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions Arma2NETMySQLPlugin/Arma2NETMySQLPlugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,61 @@ public override void Unload()
}
}

[AddIn("Arma2NetMySQLAsync", Version = "0.1.0.0", Publisher = "firefly2442", Description = "Runs MySQL procedure commands asyncronously.")]
public class Arma2NETMySQLPluginAsync : AsyncAddIn
{
//This method is called when callExtension is used from SQF:
//"Arma2Net.Unmanaged" callExtension "Arma2NetMySQLAsync ..."
public override string InvokeAsync(string args, int maxResultSize, CancellationToken token)
{
//if we haven't setup the database connection and such yet, this will do it
Startup.StartupConnection();

IList<object> arguments;
if (Format.TrySqfAsCollection(args, out arguments) && arguments.Count >= 2 && arguments[0] != null && arguments[1] != null)
{
string database = arguments[0] as string;
string procedure = arguments[1] as string;
string parameters = arguments[2] as string;
//strip out [] characters at the beginning and end
if (parameters[0].ToString() == "[" && parameters[parameters.Length - 1].ToString() == "]")
{
parameters = parameters.Substring(1, parameters.Length - 2);
}
List<string> split = new List<string>();
if (parameters != null)
{
split = parameters.Split(',').ToList<string>();
}

Logger.addMessage(Logger.LogType.Info, "Received - Database: " + database + " Procedure: " + procedure + " Parameters: " + parameters.ToString());

if (SQL.dbs.SQLProviderExists(database))
{
IEnumerable<string[][]> returned = SQL.dbs.getSQLProvider(database).RunProcedure(procedure, split.ToArray(), maxResultSize);
return Format.ObjectAsSqf(returned);
}
else
{
Logger.addMessage(Logger.LogType.Warning, "The database: " + database + " is not loaded in through the Databases.txt file.");
}

//Logger.addMessage(Logger.LogType.Info, "Returning false object");
return Format.ObjectAsSqf(false);
}
else
{
Logger.addMessage(Logger.LogType.Error, "The number and/or format of the arguments passed in doesn't match.");
throw new ArgumentException();
}
}

public override void Unload()
{
Startup.Unload();
}
}

//the function name for the plugin (called from Arma side)
[AddIn("Arma2NETMySQLCommand", Version = "0.1.0.0", Publisher = "firefly2442", Description = "Runs raw MySQL/SQLite commands")]
public class Arma2NETMySQLPluginCommand : AddIn
Expand Down