Module v.vcache stdlib

v.vcache
Version:
0.3.3
License:
MIT
Dependencies from vmod:
0
Imports:
2
Imported by:
2
Repository:
OS-specific
Show selected OS-specific symbols.
Backend-specific
Show selected Backend-specific symbols.

Dependencies defined in v.mod

This section is empty.

Imports

Imported by

Aliases

This section is empty.

Constants

This section is empty.

Sum types

This section is empty.

Functions

#fn dlog

trace_usecache ?
fn dlog(fname string, s string)

Structs

#struct CacheManager

pub 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 new_cache_manager

fn new_cache_manager(opts []string) CacheManager

#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

Interfaces

This section is empty.

Enums

This section is empty.