[CalendarServer-changes] [4838] CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py

source_changes at macosforge.org source_changes at macosforge.org
Mon Dec 7 15:23:09 PST 2009


Revision: 4838
          http://trac.macosforge.org/projects/calendarserver/changeset/4838
Author:   wsanchez at apple.com
Date:     2009-12-07 15:23:09 -0800 (Mon, 07 Dec 2009)
Log Message:
-----------
Unroll inlineCallbacks

Modified Paths:
--------------
    CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py

Modified: CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py	2009-12-07 23:16:52 UTC (rev 4837)
+++ CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py	2009-12-07 23:23:09 UTC (rev 4838)
@@ -568,44 +568,45 @@
 
         @return: a deferred returning a C{set} of members.
         """
+        def gotCachedMembers(members):
+            if members is not None:
+                return members
 
-        def _members():
-            return set([
+            # Cache miss; compute members and update cache
+            members = set([
                 row[0] for row in
                 self._db_execute("select MEMBER from GROUPS where GROUPNAME = :1", principalUID)
             ])
+            d = self._memcacher.setMembers(principalUID, members)
+            d.addCallback(lambda _: members)
+            return d
 
-        def gotCachedMembers(members):
-            if members is None:
-                # Cache miss; compute members and update cache
-                members = _members()
-                d = self._memcacher.setMembers(principalUID, members)
-                d.addCallback(lambda _: members)
-                return d
-            else:
-                return members
-
         d = self._memcacher.getMembers(principalUID)
         d.addCallback(gotCachedMembers)
         return d
 
-    @inlineCallbacks
     def getMemberships(self, principalUID):
         """
         Return the list of group principal UIDs the specified principal is a member of.
         
         @return: a deferred returning a C{set} of memberships.
         """
+        def gotCachedMemberships(memberships):
+            if memberships is not None:
+                return memberships
 
-        def _members():
-            return set([row[0] for row in self._db_execute("select GROUPNAME from GROUPS where MEMBER = :1", principalUID)])
+            # Cache miss; compute memberships and update cache
+            memberships = set([
+                row[0] for row in
+                self._db_execute("select GROUPNAME from GROUPS where MEMBER = :1", principalUID)
+            ])
+            d = self._memcacher.setMemberships(principalUID, memberships)
+            d.addCallback(lambda _: memberships)
+            return d
 
-        # Pull from cache
-        result = yield self._memcacher.getMemberships(principalUID)
-        if result is None:
-            result = _members()
-            yield self._memcacher.setMemberships(principalUID, result)
-        returnValue(result)
+        d = self._memcacher.getMemberships(principalUID)
+        d.addCallback(gotCachedMemberships)
+        return d
 
     def _add_to_db(self, principalUID, members):
         """
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20091207/b712fbb1/attachment.html>


More information about the calendarserver-changes mailing list