# OptimizerSegmentHandler.class.php

Go to the documentation of this file.

    00001 <?php
    00002 /***************************************************************************
    00003  *   Copyright (C) 2006-2007 by Konstantin V. Arkhipov                     *
    00004  *                                                                         *
    00005  *   This program is free software; you can redistribute it and/or modify  *
    00006  *   it under the terms of the GNU Lesser General Public License as        *
    00007  *   published by the Free Software Foundation; either version 3 of the    *
    00008  *   License, or (at your option) any later version.                       *
    00009  *                                                                         *
    00010  ***************************************************************************/
    00011
    00015     abstract class OptimizerSegmentHandler implements SegmentHandler
    00016     {
    00017         protected $id       = null;
    00018         protected $locker   = null;
    00019
    00020         abstract protected function getMap();
    00021         abstract protected function storeMap(array $map);
    00022
    00023         public function __construct($segmentId)
    00024         {
    00025             $this->id = $segmentId;
    00026         }
    00027
    00028         public function touch($key)
    00029         {
    00030             $map = $this->getMap();
    00031
    00032             if (!isset($map[$key])) {
    00033                 $map[$key] = true;
    00034                 return $this->storeMap($map);
    00035             }
    00036
    00037             $this->locker->free($this->id);
    00038             return true;
    00039         }
    00040
    00041         public function unlink($key)
    00042         {
    00043             $map = $this->getMap();
    00044
    00045             if (isset($map[$key])) {
    00046                 unset($map[$key]);
    00047                 return $this->storeMap($map);
    00048             }
    00049
    00050             $this->locker->free($this->id);
    00051             return true;
    00052         }
    00053
    00054         public function ping($key)
    00055         {
    00056             $map = $this->getMap();
    00057
    00058             $this->locker->free($this->id);
    00059
    00060             if (isset($map[$key])) {
    00061                 return true;
    00062             } else {
    00063                 return false;
    00064             }
    00065         }
    00066     }
    00067 ?>