v.vcache #
fn dlog #
fn dlog(fname string, s string)
fn new_cache_manager #
fn new_cache_manager(opts []string) CacheManager
struct CacheManager #
struct CacheManager {
pub:
basepath string
original_vopts string
pub mut:
vopts string
k2cpath map[string]string // key -> filesystem cache path for the object
}
Using a 2 level cache, ensures a more even distribution of cache entries, so there will not be cramped folders that contain many thousands of them. Most filesystems can not handle performantly such folders, and slow down. The first level will contain a max of 256 folders, named from 00/ to ff/. Each of them will contain many entries, but hopefully < 1000.
Note: using a hash here, makes the cache storage immune to special characters in the keys, like quotes, spaces and so on. Cleanup of the cache is simple: just delete the $VCACHE folder. The cache tree will look like this: │ $VCACHE │ ├── README.md <-- a short description of the folder's purpose. │ ├── 0f │ │ ├── 0f004f983ab9c487b0d7c1a0a73840a5.txt │ │ ├── 0f599edf5e16c2756fbcdd4c865087ac.description.txt <-- build details │ │ └── 0f599edf5e16c2756fbcdd4c865087ac.vh │ ├── 29 │ │ ├── 294717dd02a1cca5f2a0393fca2c5c22.o │ │ └── 294717dd02a1cca5f2a0393fca2c5c22.description.txt <-- build details │ ├── 62 │ │ └── 620d60d6b81fdcb3cab030a37fd86996.h │ └── 76 │ └── 7674f983ab9c487b0d7c1a0ad73840a5.c
fn (CacheManager) set_temporary_options #
fn (mut cm CacheManager) set_temporary_options(new_opts []string)
set_temporary_options can be used to add temporary options to the hash salt
Note: these can be changed easily with another .set_temporary_options call without affecting the .original_vopts
fn (CacheManager) key2cpath #
fn (mut cm CacheManager) key2cpath(key string) string
fn (CacheManager) postfix_with_key2cpath #
fn (mut cm CacheManager) postfix_with_key2cpath(postfix string, key string) string
fn (CacheManager) mod_postfix_with_key2cpath #
fn (mut cm CacheManager) mod_postfix_with_key2cpath(mod string, postfix string, key string) string
fn (CacheManager) exists #
fn (mut cm CacheManager) exists(postfix string, key string) !string
fn (CacheManager) mod_exists #
fn (mut cm CacheManager) mod_exists(mod string, postfix string, key string) !string
fn (CacheManager) save #
fn (mut cm CacheManager) save(postfix string, key string, content string) !string
fn (CacheManager) mod_save #
fn (mut cm CacheManager) mod_save(mod string, postfix string, key string, content string) !string
fn (CacheManager) load #
fn (mut cm CacheManager) load(postfix string, key string) !string
fn (CacheManager) mod_load #
fn (mut cm CacheManager) mod_load(mod string, postfix string, key string) !string