diff options
Diffstat (limited to 'includes/objectcache/XCacheBagOStuff.php')
-rw-r--r-- | includes/objectcache/XCacheBagOStuff.php | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/includes/objectcache/XCacheBagOStuff.php b/includes/objectcache/XCacheBagOStuff.php index bc68b596..0f45db73 100644 --- a/includes/objectcache/XCacheBagOStuff.php +++ b/includes/objectcache/XCacheBagOStuff.php @@ -31,10 +31,11 @@ class XCacheBagOStuff extends BagOStuff { /** * Get a value from the XCache object cache * - * @param $key String: cache key + * @param string $key cache key + * @param $casToken mixed: cas token * @return mixed */ - public function get( $key ) { + public function get( $key, &$casToken = null ) { $val = xcache_get( $key ); if ( is_string( $val ) ) { @@ -53,9 +54,9 @@ class XCacheBagOStuff extends BagOStuff { /** * Store a value in the XCache object cache * - * @param $key String: cache key + * @param string $key cache key * @param $value Mixed: object to store - * @param $expire Int: expiration time + * @param int $expire expiration time * @return bool */ public function set( $key, $value, $expire = 0 ) { @@ -68,10 +69,22 @@ class XCacheBagOStuff extends BagOStuff { } /** + * @param $casToken mixed + * @param $key string + * @param $value mixed + * @param $exptime int + * @return bool + */ + public function cas( $casToken, $key, $value, $exptime = 0 ) { + // Can't find any documentation on xcache cas + throw new MWException( "CAS is not implemented in " . __CLASS__ ); + } + + /** * Remove a value from the XCache object cache * - * @param $key String: cache key - * @param $time Int: not used in this implementation + * @param string $key cache key + * @param int $time not used in this implementation * @return bool */ public function delete( $key, $time = 0 ) { @@ -79,6 +92,21 @@ class XCacheBagOStuff extends BagOStuff { return true; } + /** + * Merge an item. + * XCache does not seem to support any way of performing CAS - this however will + * provide a way to perform CAS-like functionality. + * + * @param $key string + * @param $callback closure Callback method to be executed + * @param int $exptime Either an interval in seconds or a unix timestamp for expiry + * @param int $attempts The amount of times to attempt a merge in case of failure + * @return bool success + */ + public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) { + return $this->mergeViaLock( $key, $callback, $exptime, $attempts ); + } + public function incr( $key, $value = 1 ) { return xcache_inc( $key, $value ); } |