Files
fdn2/private/lib/backup/cbsClient/rapi/messages/RAPI_RequestDetails.php
T

135 lines
2.9 KiB
PHP

<?php
/*
Author: Riccardo Di Dato
Creation Date: 01/lug/2015
*/
/**
*
* @author Riccardo Di Dato
*/
abstract class RAPI_RequestDetails extends RAPI_MessageDetails{
/**
* Stringa md5 usata come checksum.
* L'attributo è valorizzato solo per i checksumFake
* @var string
*/
private $md5 = null;
/*
* Checksum e checksumFake
*/
/**
* Restituisce il checksum (Indipendentemente che si tratti o meno di un checksumFake).
* @return string
*/
public function getChecksum(){
$rval = $this->md5;
if (is_null($rval)){
$rval = md5(strval($this));
}
return $rval;
}
/**
* Forza il valore della variabile interna contenente il checkusm.
* ATTENZIONE! I non checksumFake non dovrebbero avere questo attributo valorizzato
* @param string $md5
*/
public function forceChecksum($md5){
$this->md5 = $md5;
}
/**
* Genera la versione checksumFake di un rapi request details.
* @return RAPI_RequestDetails
*/
public function generateChecksumFake(){
$tmp = new stdClass();
if (sizeof(static::getArgumentList())>0){
foreach (static::getArgumentList() as $arg){
$tmp->$arg = "";
}
}
$obj = new static($tmp);
$obj->md5 = $this->getChecksum();
return $obj;
}
/**
* Restituisce true se si tratta di un checksum fake.
* @return boolean
*/
public function isChecksumFake(){
return !is_null($this->md5);
}
/*
* Metodi propri della classe
*/
/**
* Valuta l'uguaglianza delle request details
* NOTA: Funziona anche se un requestDetails è un checksumFake, ma in tal caso confronta solo i due checksum.
* @param RAPI_Request $req
* @return boolean
*/
public function isEqual(RAPI_RequestDetails $req){
$rval = ( strcmp($this->getChecksum(), $req->getChecksum())==0 ) ;
if (!$this->isChecksumFake() && !$req->isChecksumFake()){
$rval = strcmp($this, $req);
}
return $rval;
}
/**
* @see RAPI_MessageDetails::generateEncryptionObject()
*/
public function generateEncryptionObject(){
$tmp = parent::generateEncryptionObject();
$tmp->operation = static::getOperationName();
if ($this->isChecksumFake()){
$tmp->md5 = $this->getChecksum();
}
return $tmp;
}
/*
* Factory
*/
/**
* Registra il details alla factory
*/
public static function registerToFactory(){
RAPI_RequestDetailsFactory::addToRegister(static::getOperationName(), get_called_class());
}
/*
* Metodi astratti
*/
/**
* Returns true if the operation requires an
* operationId (like for writes and deletion)
* @return bool
*/
public static abstract function usesOperationId();
/**
* Returns the name of the operation used by the request factory (NOT THE RAPI_Operation !!!!!)
* @return string
*/
public static abstract function getOperationName();
/**
* Returns the class name of the response details to use
* @return string
*/
public static abstract function getResponseDetailsClass();
}
?>