Jim Jagielski wrote:
If this is data that needs to be accessed from "non-proxy" modules
then yes, I agree.
A basic API could look like. By worker, I am thinking about the mpm
sense, not the proxy sense. I guess "slot" may be a better term:
/*used for ap_scoreboard_do. mem is the memory associated with a worker,
data is what is passed to ap_scoreboard_do. pool is pool used to create
scoreboard*/
typedef apr_status_t ap_scoreboard_callback_fn_t(void* mem, void *data,
apr_pool_t *pool);
/*call the callback on all worker slots*/
AP_DECLARE(apr_status_t)ap_scoreboard_do(ap_scoreboard_t *s,
ap_scoreboard_callback_fn_t *func, void *data, apr_pool_t *pool);
/*create a new scoreboard with each item size is item_size. name is a
key used for debuggin and in mod_status output. This would create shared
memory, basically*/
AP_DECLARE(apr_status_t) ap_scoreboard_create(ap_scoreboard_t **new,
const char *name, apr_size_t item_size, apr_pool_t *pool);
/*get the memory associated with this worker slot. use c->id or c->sbh
to get offset into shared memory*/
AP_DECLARE(apr_status_t) ap_scoreboard_mem(ap_scoreboard_t *s, conn_rec
*c, void**mem);
Thoughts. Somthing very similar to this is used by several very busy
web sites...
--
Brian Akins
Chief Operations Engineer
Turner Digital Media Technologies