X-Git-Url: http://git.cyclocoop.org/%22%20.%20generer_url_ecrire%28%22auteur_infos%22%2C%20%22id_auteur=%24id%22%29%20.%20%22?a=blobdiff_plain;f=includes%2Flibs%2Fobjectcache%2FRESTBagOStuff.php;h=82b5ac05bfa623ea695cf7223f25d7e8b416a018;hb=94eb0c946f249aace839ec3876b6ab11e7fc39b8;hp=a10d1a47b2e93b853915ba176303375bd39ce5fc;hpb=e3705c7b17aac5e0c7866e1d03efa7e6b7998ddf;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/libs/objectcache/RESTBagOStuff.php b/includes/libs/objectcache/RESTBagOStuff.php index a10d1a47b2..82b5ac05bf 100644 --- a/includes/libs/objectcache/RESTBagOStuff.php +++ b/includes/libs/objectcache/RESTBagOStuff.php @@ -44,7 +44,7 @@ use Psr\Log\LoggerInterface; * $wgSessionCacheType = 'sessions'; * @endcode */ -class RESTBagOStuff extends BagOStuff { +class RESTBagOStuff extends MediumSpecificBagOStuff { /** * Default connection timeout in seconds. The kernel retransmits the SYN * packet after 1 second, so 1.2 seconds allows for 1 retransmit without @@ -79,6 +79,7 @@ class RESTBagOStuff extends BagOStuff { private $extendedErrorBodyFields; public function __construct( $params ) { + $params['segmentationSize'] = $params['segmentationSize'] ?? INF; if ( empty( $params['url'] ) ) { throw new InvalidArgumentException( 'URL parameter is required' ); } @@ -146,7 +147,7 @@ class RESTBagOStuff extends BagOStuff { return false; } - public function set( $key, $value, $exptime = 0, $flags = 0 ) { + protected function doSet( $key, $value, $exptime = 0, $flags = 0 ) { // @TODO: respect WRITE_SYNC (e.g. EACH_QUORUM) // @TODO: respect $exptime $req = [ @@ -163,7 +164,7 @@ class RESTBagOStuff extends BagOStuff { return $this->handleError( "Failed to store $key", $rcode, $rerr, $rhdrs, $rbody ); } - public function add( $key, $value, $exptime = 0, $flags = 0 ) { + protected function doAdd( $key, $value, $exptime = 0, $flags = 0 ) { // @TODO: make this atomic if ( $this->get( $key ) === false ) { return $this->set( $key, $value, $exptime, $flags ); @@ -172,7 +173,7 @@ class RESTBagOStuff extends BagOStuff { return false; // key already set } - public function delete( $key, $flags = 0 ) { + protected function doDelete( $key, $flags = 0 ) { // @TODO: respect WRITE_SYNC (e.g. EACH_QUORUM) $req = [ 'method' => 'DELETE', @@ -187,11 +188,11 @@ class RESTBagOStuff extends BagOStuff { return $this->handleError( "Failed to delete $key", $rcode, $rerr, $rhdrs, $rbody ); } - public function incr( $key, $value = 1 ) { + public function incr( $key, $value = 1, $flags = 0 ) { // @TODO: make this atomic $n = $this->get( $key, self::READ_LATEST ); if ( $this->isInteger( $n ) ) { // key exists? - $n = max( $n + intval( $value ), 0 ); + $n = max( $n + (int)$value, 0 ); // @TODO: respect $exptime return $this->set( $key, $n ) ? $n : false; } @@ -199,6 +200,10 @@ class RESTBagOStuff extends BagOStuff { return false; } + public function decr( $key, $value = 1, $flags = 0 ) { + return $this->incr( $key, -$value, $flags ); + } + /** * Processes the response body. *