getFirst("ConfigModel",array("name"=>"cbsQueue")); if (!is_null($conf)){ $rval = $conf->lastOperationId+1; } return $rval; // $cur = GlobalVariables::get("dao")->getFirst("CBSQueueModel",array(),array("sort"=>"operationId")); // if (is_null($cur)){ // return 1; // } // else { // return $cur->operationId+1; // } } /** * (non-PHPdoc) * @see CBSClient_DataStorageBase::setMaxOperationId() */ public function setMaxOperationId($id){ $conf = GlobalVariables::get("dao")->getFirst("ConfigModel",array("name"=>"cbsQueue")); if (is_null($conf)){ $obj = new stdClass(); $obj->name="cbsQueue"; $conf = new ConfigModel($obj); } $conf->lastOperationId = $id; GlobalVariables::get("dao")->save($conf); } /** * @see CBSClient_DataStorageBase::queueUncompletedRequest() */ public function queueUncompletedRequest($id, RAPI_RequestDetails $req){ $queueFolder = GlobalVariables::get("config")->paths->cbsQueue; $obj = new stdClass(); $obj->operationId = $id; $obj->retry = 0; $queueObj = new CBSQueueModel($obj); GlobalVariables::get("dao")->save($queueObj); if (!SFSManager::fileExists($queueFolder)){ SFSManager::createDirectory($queueFolder); } $path = $queueFolder."/".$queueObj->id; SFSManager::writeFile(serialize($req), $path); } /** * @see CBSClient_DataStorageBase::getUncompletedRequests() */ public function getUncompletedRequests($limit = null){ $rval = array(); $basePath = GlobalVariables::get("config")->paths->cbsQueue; $opt = array("sort"=>array("retry"=>1)); if (!is_null($limit)){ $opt["limit"] = $limit; } $requests = GlobalVariables::get("dao")->query("CBSQueueModel", array(), $opt); if (sizeof($requests)>0){ foreach ($requests as $request){ $path = $basePath."/".$queueObj->id; $cont = implode("",SFSManager::readFile($path)); $rval[] = unserialize($cont); } } return $rval; } /** * @see CBSClient_DataStorageBase::onRequestCompletedFromQueue() */ public function onRequestCompletedFromQueue($id){ $queueObj = GlobalVariables::get("dao")->getFirst("CBSQueueModel", array("operationId"=>$id)); $path = GlobalVariables::get("config")->paths->cbsQueue."/".$queueObj->id; SFSManager::deleteFile($path); GlobalVariables::get("dao")->delete($queueObj); } /** * @see CBSClient_DataStorageBase::onRequestFailedFromQueue() */ public function onRequestFailedFromQueue($id){ $queueObj = GlobalVariables::get("dao")->getFirst("CBSQueueModel", array("operationId"=>$id)); $queueObj->retry = $queueObj->retry+1; GlobalVariables::get("dao")->save($queueObj); } // private function getOperationIdFile(){ // $config = GlobalVariables::get("config"); // return $config->paths->common."/RAPI_maxOperationId"; // } } ?>