This is really complicated to explain, but quite simple behind all
the gunk: A persistent storage method, needs to know about "struct object" in addition to regular storage allocations, in order to track ttl and ban information etc. Therefore, when we create an object, we call into the stevedore.c to do so with STV_NewObject(), it picks an stevedore, and calls the ->allocobj() method, which will allocate some storage, call STV_MkObject() to turn it into an object, which can then be fondled, before passing it back to STV_NewObject() an from there to cache_center.c::cnt_fetch(). Non-persistent stevedores, don't define ->allocobj() and when initialized by stevedore.c, get a suitable default function. XXX: next steps, remove objcore argument from stv->alloc() and remove stv->object() method entirely, now that we have a proper calling order. git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@5558 d4fa192b-c00b-0410-8231-f00ffab90ce4
Showing
Please register or sign in to comment