Add-on:Common plugin cache
Jump to navigation
Jump to search
Common plugin cache | ||||||||||
|
Add-ons | Common plugin cache |
Installing
This add-on is installed from the Add-on browser located in Kodi as follows:
Developers
Setup
To use the cacheing service add the following to your py file.
try: import StorageServer except: import storageserverdummy as StorageServer cache = StorageServer.StorageServer() cache.table_name = "PluginName" # Name of your plugni.
You can now access the caching service through the "cache" variable.
cacheFunction(self, funct = False, *args)
Caching function results for one hour.
The function being cached must return a tupple ( function_return, status), a status of 200 means the result is ok and should be cached. Any other value and the function result will be returned, but not cached.
returns a tupple of the results from the function called.
def pi_count(self): def arccot(x, unity): sum = xpower = unity // x n = 3 sign = -1 while 1: xpower = xpower // (x*x) term = xpower // n if not term: break sum += sign * term sign = -sign n += 2 return sum digits = 40 unity = 10**(digits + 10) pi = 4 * (4*arccot(5, unity) - arccot(239, unity)) return (pi // 10**10, 200) cache.table_name = "PluginName" # Name of your plugni. result = cache.cacheFunction(pi_count) # This will call the pi_count function, save the result in the cache, and return the result. time.sleep(300) result = cache.cacheFunction(pi_count) # This will return the cached result time.sleep(3600) result = cache.cacheFunction(pi_count) # This will again call pi_count since the result is now considered stale.
lock(self, name)
Try to aquire a lock
Returns bool
cache.table_name = "PluginName" locked = cache.lock("lock_me") # Returns True if locked: print "Got lock" new_lock = cache.lock("lock_me") # Returns False if not new_lock: print "Couldn't aquire second lock.
unlock(self, name)
Unlock
Returns bool
cache.table_name = "PluginName" lock = cache.lock("lock_me") # Returns True
unlocked = cache.unlock("lock_me") # Returns True if unlocked: print "Discarded lock" new_unlocked = cache.unlock("lock_me") # Returns False if not new_unlocked: print "Couldn't discard lock."
set(self, name, data)
Store a value
Returns nothing
cache.table_name = "PluginName" cache.set("some_string", "string") cache.set("some_int", 1234) cache.set("some_dict", { "our": { "dictionary": [] } } )
setMulti(self, name, data)
Store multiple values
Returns nothing
get(self, name)
Get a value
Returns stored data.
cache.table_name = "PluginName" cache.set("some_string", "string") cache.set("some_int", 1234) cache.set("some_dict", { "our": { "dictionary": [] } } )
some_string = cache.get("some_string") print some_string # Prints "string"
some_int = cache.get("some_int") print some_int # prints 1234
some_dict = cache.get("some_dict") print repr(some_dict) # prints '{ "our": { "dictionary": [] } }'
getMulti(self, name, items)
Get multiple values
Retuns list of stored data elements.