]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Memcached_DataObject.php
wiring in magicsig
[quix0rs-gnu-social.git] / classes / Memcached_DataObject.php
index e615f23539f41b539710aa6c7a385383cc977b2a..40576dc71783aedda343e8ea25414b11f777e70e 100644 (file)
 
 if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
 
-class Memcached_DataObject extends DB_DataObject
+class Memcached_DataObject extends Safe_DataObject
 {
-    /**
-     * Destructor to free global memory resources associated with
-     * this data object when it's unset or goes out of scope.
-     * DB_DataObject doesn't do this yet by itself.
-     */
-
-    function __destruct()
-    {
-        $this->free();
-        if (method_exists('DB_DataObject', '__destruct')) {
-            parent::__destruct();
-        }
-    }
-
-    /**
-     * Magic function called at serialize() time.
-     *
-     * We use this to drop a couple process-specific references
-     * from DB_DataObject which can cause trouble in future
-     * processes.
-     *
-     * @return array of variable names to include in serialization.
-     */
-    function __sleep()
-    {
-        $vars = array_keys(get_object_vars($this));
-        $skip = array('_DB_resultid', '_link_loaded');
-        return array_diff($vars, $skip);
-    }
-
-    /**
-     * Magic function called at unserialize() time.
-     *
-     * Clean out some process-specific variables which might
-     * be floating around from a previous process's cached
-     * objects.
-     *
-     * Old cached objects may still have them.
-     */
-    function __wakeup()
-    {
-        // Refers to global state info from a previous process.
-        // Clear this out so we don't accidentally break global
-        // state in *this* process.
-        $this->_DB_resultid = null;
-        // We don't have any local DBO refs, so clear these out.
-        $this->_link_loaded = false;
-    }
-
     /**
      * Wrapper for DB_DataObject's static lookup using memcached
      * as backing instead of an in-process cache array.
@@ -363,7 +314,7 @@ class Memcached_DataObject extends DB_DataObject
             $cached[] = clone($inst);
         }
         $inst->free();
-        $c->set($ckey, $cached, MEMCACHE_COMPRESSED, $expiry);
+        $c->set($ckey, $cached, Cache::COMPRESSED, $expiry);
         return new ArrayWrapper($cached);
     }
 
@@ -547,4 +498,36 @@ class Memcached_DataObject extends DB_DataObject
     {
         common_debug("debugDump: " . common_log_objstring($this));
     }
+
+    function raiseError($message, $type = null, $behaviour = null)
+    {
+        throw new ServerException("DB_DataObject error [$type]: $message");
+    }
+
+    static function cacheGet($keyPart)
+    {
+        $c = self::memcache();
+
+        if (empty($c)) {
+            return false;
+        }
+
+        $cacheKey = common_cache_key($keyPart);
+
+        return $c->get($cacheKey);
+    }
+
+    static function cacheSet($keyPart, $value)
+    {
+        $c = self::memcache();
+
+        if (empty($c)) {
+            return false;
+        }
+
+        $cacheKey = common_cache_key($keyPart);
+
+        return $c->set($cacheKey, $value);
+    }
 }
+