116 lines
3.0 KiB
SourcePawn
116 lines
3.0 KiB
SourcePawn
|
|
/* API - Natives & Forwards */
|
|
|
|
static Handle fwd_OnPluginChecking = INVALID_HANDLE;
|
|
static Handle fwd_OnPluginDownloading = INVALID_HANDLE;
|
|
static Handle fwd_OnPluginUpdating = INVALID_HANDLE;
|
|
static Handle fwd_OnPluginUpdated = INVALID_HANDLE;
|
|
|
|
void API_Init()
|
|
{
|
|
CreateNative("Updater_AddPlugin", Native_AddPlugin);
|
|
CreateNative("Updater_RemovePlugin", Native_RemovePlugin);
|
|
CreateNative("Updater_ForceUpdate", Native_ForceUpdate);
|
|
|
|
fwd_OnPluginChecking = CreateForward(ET_Event);
|
|
fwd_OnPluginDownloading = CreateForward(ET_Event);
|
|
fwd_OnPluginUpdating = CreateForward(ET_Ignore);
|
|
fwd_OnPluginUpdated = CreateForward(ET_Ignore);
|
|
}
|
|
|
|
// native Updater_AddPlugin(const char[] url);
|
|
public int Native_AddPlugin(Handle plugin, int numParams)
|
|
{
|
|
char url[MAX_URL_LENGTH];
|
|
GetNativeString(1, url, sizeof(url));
|
|
|
|
Updater_AddPlugin(plugin, url);
|
|
}
|
|
|
|
// native Updater_RemovePlugin();
|
|
public int Native_RemovePlugin(Handle plugin, int numParams)
|
|
{
|
|
int index = PluginToIndex(plugin);
|
|
|
|
if (index != -1)
|
|
{
|
|
Updater_QueueRemovePlugin(plugin);
|
|
}
|
|
}
|
|
|
|
// native bool Updater_ForceUpdate();
|
|
public int Native_ForceUpdate(Handle plugin, int numParams)
|
|
{
|
|
int index = PluginToIndex(plugin);
|
|
|
|
if (index == -1)
|
|
{
|
|
ThrowNativeError(SP_ERROR_NOT_FOUND, "Plugin not found in updater.");
|
|
}
|
|
else if (Updater_GetStatus(index) == Status_Idle)
|
|
{
|
|
Updater_Check(index);
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
// forward Action:Updater_OnPluginChecking();
|
|
Action Fwd_OnPluginChecking(Handle plugin)
|
|
{
|
|
Action result = Plugin_Continue;
|
|
Function func = GetFunctionByName(plugin, "Updater_OnPluginChecking");
|
|
|
|
if (func != INVALID_FUNCTION && AddToForward(fwd_OnPluginChecking, plugin, func))
|
|
{
|
|
Call_StartForward(fwd_OnPluginChecking);
|
|
Call_Finish(result);
|
|
RemoveAllFromForward(fwd_OnPluginChecking, plugin);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
// forward Action:Updater_OnPluginDownloading();
|
|
Action Fwd_OnPluginDownloading(Handle plugin)
|
|
{
|
|
Action result = Plugin_Continue;
|
|
Function func = GetFunctionByName(plugin, "Updater_OnPluginDownloading");
|
|
|
|
if (func != INVALID_FUNCTION && AddToForward(fwd_OnPluginDownloading, plugin, func))
|
|
{
|
|
Call_StartForward(fwd_OnPluginDownloading);
|
|
Call_Finish(result);
|
|
RemoveAllFromForward(fwd_OnPluginDownloading, plugin);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
// forward Updater_OnPluginUpdating();
|
|
void Fwd_OnPluginUpdating(Handle plugin)
|
|
{
|
|
Function func = GetFunctionByName(plugin, "Updater_OnPluginUpdating");
|
|
|
|
if (func != INVALID_FUNCTION && AddToForward(fwd_OnPluginUpdating, plugin, func))
|
|
{
|
|
Call_StartForward(fwd_OnPluginUpdating);
|
|
Call_Finish();
|
|
RemoveAllFromForward(fwd_OnPluginUpdating, plugin);
|
|
}
|
|
}
|
|
|
|
// forward Updater_OnPluginUpdated();
|
|
void Fwd_OnPluginUpdated(Handle plugin)
|
|
{
|
|
Function func = GetFunctionByName(plugin, "Updater_OnPluginUpdated");
|
|
|
|
if (func != INVALID_FUNCTION && AddToForward(fwd_OnPluginUpdated, plugin, func))
|
|
{
|
|
Call_StartForward(fwd_OnPluginUpdated);
|
|
Call_Finish();
|
|
RemoveAllFromForward(fwd_OnPluginUpdated, plugin);
|
|
}
|
|
}
|