Annotation of sbbs/src/sbbs3/js_cache.h, revision 1.1

1.1     ! root        1: #ifndef _JS_CACHE_H_
        !             2: #define _JS_CACHE_H_
        !             3: 
        !             4: #include "link_list.h"
        !             5: #include "jscntxt.h"
        !             6: #include "jsscript.h"
        !             7: 
        !             8: /* JS Compile Cache Stuff */
        !             9: struct context_cache {
        !            10:        JSContext       *cx;
        !            11:        link_list_t     cache;
        !            12: };
        !            13: 
        !            14: struct cache_data {
        !            15:        char    filename[MAX_PATH+1];
        !            16:        time_t  mtime,ctime;            /* st_mtime/st_ctime from last stat() call */
        !            17:        off_t   size;                           /* File size when loaded */
        !            18:        ulong   runcount;                       /* Number of times this script has been used */
        !            19:        time_t  lastrun;                        /* Time script was last ran */
        !            20:        time_t  laststat;                       /* Time of last call to stat() */
        !            21:        JSScript        *script;
        !            22:        int             running;                        /* Count of currently running scripts */
        !            23:        int             expired;                        /* TRUE if last stat() makes this as stale and
        !            24:                                                                 * running was non-zero */
        !            25: };
        !            26: 
        !            27: typedef struct {
        !            28:        DWORD   size;                           /* sizeof(js_cache_startup_t) */
        !            29:        time_t  max_age;                        /* Max age in seconds for lastrun */
        !            30:        ulong   max_scripts;            /* Max number of scripts to hold in cache */
        !            31:        time_t  stale_timeout;          /* Minimum time between calls to stat() */
        !            32:        ulong   expire_period;          /* Time between servicing the exipry cache... milliseconds */
        !            33: } js_cache_startup_t;
        !            34: 
        !            35: #ifdef __cplusplus
        !            36: extern "C" {
        !            37: #endif
        !            38: 
        !            39: /*
        !            40:  * Gets the compiled script from the cache if available and
        !            41:  * laststat is less than stale time or a new stat() matches
        !            42:  * the mtime, ctime, and size.
        !            43:  * Compiles it and adds to the cache if not.
        !            44:  * Increments running value.
        !            45:  */
        !            46: JSScript *js_get_compiled_script(JSContext *cx, char *filename);
        !            47: 
        !            48: /*
        !            49:  * Starts the caching thread.  The caching thread periodically
        !            50:  * checks the caches for entries to be expired.  They are expired
        !            51:  * by weigth where weight=(age in seconds)/(number of times ran)
        !            52:  * does NOT check the laststat nor does it do a stat().
        !            53:  * It also does not expire an entry for which running is non-zero.
        !            54:  */
        !            55: void js_cache_thread(void *args);
        !            56: 
        !            57: /*
        !            58:  * Decrements the running value, increments runcount, and updates
        !            59:  * lastrun
        !            60:  */
        !            61: void js_script_done(struct cached_data *entry);
        !            62: 
        !            63: /*
        !            64:  * Sets the expired member for any existing cached copies of filename
        !            65:  * Required for self-modifying scripts.
        !            66:  */
        !            67: void js_cache_expire(char *filename);
        !            68: 
        !            69: /*
        !            70:  * Creates a new cached runtime and context
        !            71:  */
        !            72: JSContext *js_get_cached_context(size_t maxbytes, size_t stacksize);
        !            73: #ifdef __cplusplus
        !            74: }
        !            75: #endif
        !            76: 
        !            77: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.