Hello,


I've already asked you about dealing with expensive resources and thread-safety in WebKit but I'm still confused.

I want (if it's possible):
1. setup some objects on a per-client (per-session) basis
2. do not have to deal with thread issues inside those objects (IOW, they are not thread-safe but this mustnât result in a deadlocks).


Looks like the only bulletproof way to do this is like this:
1. create an object for session
2. wrap it into thread-safe wrapper
3. put in on session

The questions are:
1. Am I right? Or may be there is a simpler way to go?
2. What is the best place to do #3?

To make my post clearer, here is an excerpt of how it is done currently:

from cms.web.localizer import WebKitLocalizer
 # A thread-safe wrapper around Localizer class

class NoOpLocalizerStub:
    "A Localizer stub that does nothing."
    def translate(self, msgid):
        return msgid
    def setUser(self, userid):
        return
    def setWorkgroup(self, groupid):
        return
    def getCurrentLanguage(self):
        return 'en'

class BasicSitePage(mvc.View):
   # used by all other pages
   fakelcz = NoOpLocalizerStub()
   ...
    def awake(self, t):
        mvc.View.awake(self, t)
        if not t.session().hasValue('localizer'):
            localizer = self.createLocalizer()
            t.session().setValue('localizer',  localizer)
    def getLocalizer(self):
        localizer = self.session().value('localizer', None)
        return localizer or self.fakelcz
    def createLocalizer(self):
        try:
            mapper, transformers = factory.makeLocalizerParameters()
            return WebKitLocalizer(mapper, transformers)
        except cms.config.Error, e:
            self.handleError("Can't create localizer", e)


As you see, this feels like a messy kludge.
It is (1) too much code and (2) not generic -- I'd have to do something similar for another object I want to share.



tia.




-------------------------------------------------------
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html
_______________________________________________
Webware-discuss mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/webware-discuss

Reply via email to