libsaria: Actually add libsaria.sources.attrs

I forgot to add this file a few commits ago... oops...
This commit is contained in:
Bryan Schumaker 2011-05-28 16:15:07 -04:00
parent 0a644752a4
commit c9dee00727
1 changed files with 47 additions and 0 deletions

47
libsaria/sources/attrs.py Normal file
View File

@ -0,0 +1,47 @@
# Bryan Schumaker (5 / 28 / 2011)
import threading
from libsaria import storage
dattrs_lock = threading.Lock()
lock_dattrs = dattrs_lock.acquire
unlock_dattrs = dattrs_lock.release
# dynamic attributes
dattrs = dict()
def load_dattrs():
global dattrs
dattrs_dict = storage.load_obj("dattrs", dict)
lock_dattrs()
dattrs = dattrs_dict
unlock_dattrs()
def save_dattrs():
storage.save_obj("dattrs", dattrs)
def get_dattr(id, attribute):
lock_dattrs()
attrs = dattrs.get(id, None)
if attrs == None:
unlock_dattrs()
return None
attr = attrs.get(attribute, None)
unlock_dattrs()
return attr
def set_dattr(id, attribute, value):
lock_dattrs()
attrs = dattrs.setdefault(id, dict())
attrs[attribute] = value
save_dattrs()
unlock_dattrs()
def get_count(id):
count = get_dattr(id, "count")
if count != None:
return count
return 0
def inc_count(id):
count = get_count(id)
set_dattr(id, "count", count + 1)