1
0
KF2-Dev-Scripts/WebAdmin/Classes/Session.uc
2020-12-13 18:01:13 +03:00

116 lines
2.0 KiB
Ucode

/**
* A session implementation
*
* Copyright 2008 Epic Games, Inc. All Rights Reserved
*
* @author Michiel 'elmuerte' Hendriks
*/
class Session extends Object implements(ISession);
struct ObjectKV
{
var string key;
var Object value;
};
struct StringKV
{
var string key;
var string value;
};
var protected string id;
var protected array<ObjectKV> objects;
var protected array<StringKV> strings;
function string getId()
{
local int i;
if (id == "")
{
for (i = 0; i < 8; i++)
{
id $= Right(ToHex(rand(0xFFFF)), 4);
}
}
return id;
}
function reset()
{
objects.remove(0, objects.length);
strings.remove(0, strings.length);
}
function Object getObject(string key)
{
local int idx;
idx = objects.Find('key', key);
if (idx > INDEX_NONE)
{
return objects[idx].value;
}
return none;
}
function putObject(string key, Object value)
{
local int idx;
idx = objects.Find('key', key);
if (idx > INDEX_NONE)
{
objects[idx].value = value;
return;
}
objects.add(1);
objects[objects.length - 1].key = key;
objects[objects.length - 1].value = value;
}
function removeObject(string key)
{
local int idx;
idx = objects.Find('key', key);
if (idx > INDEX_NONE)
{
objects.remove(idx, 1);
return;
}
}
function string getString(string key, optional string defValue = "")
{
local int idx;
idx = strings.Find('key', key);
if (idx > INDEX_NONE)
{
return strings[idx].value;
}
return defValue;
}
function putString(string key, string value)
{
local int idx;
idx = strings.Find('key', key);
if (idx > INDEX_NONE)
{
strings[idx].value = value;
return;
}
strings.add(1);
strings[strings.length - 1].key = key;
strings[strings.length - 1].value = value;
}
function removeString(string key)
{
local int idx;
idx = strings.Find('key', key);
if (idx > INDEX_NONE)
{
strings.remove(idx, 1);
return;
}
}