On 06.02.2013 17:28, Micha Lenk wrote: > On 02/05/2013 08:04 PM CEST +02:00, Rainer Jung wrote: >> Example code using it: modules/cluster/mod_heartmonitor.c should be >> simplest, look for slotmem and SLOTMEM in there. That should at least >> show how to bootstrap and use slotmem. > > Okay, the longer I am reading anything related to mod_slotmem_shm, the > more I get the impression that it is the wrong tool for my task. If I > understood it correctly, mod_slotmem_shm organizes data in slots. This > appears to make it unnecessarily limited to the number of slots I > initialize it with. > > What I need is a way to transfer information from one long living > request to another entirely independent request some time later. The > first request contains a cookie (i.e. a random string), which is also > contained in the second request. I would like to use this cookie as a > handle to store some data (fixed size, if needed) generated during > processing of the first request somewhere (at least for the life time of > the first request). The second request then needs to be able to use the > cookie to access the data the first request already generated. Moreover, > an arbitrary number of such request pairs can happen at the same time. > > Given the requirements above, is the mod_slotmem_shm API still the right > tool for this purpose? > > I just started looking at mod_socache_shmcb -- is this maybe better > suited for the purpose described above? > > I could also go for a custom shared memory usage implementation, but I > thought making use of any already existing API might be a better idea > (trying avoid implementing things twice). So, any hint is appreciated...
It seems socache is a better choice in your case. slotmem is based on a fixed max. number of cache entries, each of fixed size and accessed by an integer key. For socache you can find some info in include/ap_socache.h and a probably not to complex example is modules/aaa/mod_authn_socache.c It comes with four different implementations (providers), the shmcb one is probably the one you'd use (or the memcached based one if sharing in a farm of hosts is needed). Regards, Rainer