* @revision 03 * @license http://creativecommons.org/licenses/by-sa/3.0/de/ Creative Commons Attribution-Share Alike 3.0 Germany * @homepage http://oss.tiggerswelt.net/oscar/ * @copyright Copyright © 2009 tiggersWelt.net */ require_once ("oscar/common.php"); require_once ("oscar/snac.php"); require_once ("oscar/snac/rate/parameter.php"); require_once ("oscar/snac/rate/member.php"); class Oscar_SNAC_Rate_Reply extends Oscar_SNAC { /* About this class */ const SNAC_FAMILY = 0x0001; const SNAC_SERVICE = 0x0007; private $Parameters = array (); private $Members = array (); // {{{ parse /** * Parse incoming data * * @access public * @return void **/ public function parse () { // Check how many classes are on this snac $Count = Oscar_Common::str2int16 ($this->Data, 0, true); // Load parameters $this->Parameters = Oscar_SNAC_Rate_Parameter::getParameters ($this->Data, $Count, true); // Load members $this->Members = Oscar_SNAC_Rate_Member::getMembers ($this->Data, $Count, true); } // }}} // {{{ generate /** * Generate a binary string from this SNAC * * @accss public * @return string **/ public function generate () { $this->Data = Oscar_Common::int16tostr (count ($this->Paramters)) . Oscar_SNAC_Rate_Parameter::setParameters ($this->Parameters) . Oscar_SNAC_Rate_Member::setMembers ($this->Members); return parent::generate (); } // }}} // {{{ getRates /** * Compatibility with old SNAC * * @access public * @return array **/ public function getRates () { $Classes = array (); foreach ($this->Parameters as $Parameter) $Classes [$Parameter->classID] = array ( "ID" => $Parameter->classID, "WindowSize" => $Parameter->windowSize, "ClearLevel" => $Parameter->clearThreshold, "AlertLevel" => $Parameter->alertThreshold, "LimitLevel" => $Parameter->limitThreshold, "DisconnectLevel" => $Parameter->disconnectThreshold, "CurrentLevel" => $Parameter->currentAverage, "MaxLevel" => $Parameter->maxAverage, "LastTime" => $Parameter->lastArrivalDelta, "State" => $Parameter->droppingSNACs, "Groups" => array (), ); foreach ($this->Members as $Member) $Classes [$Member->classID]["Groups"] = $Member->SNACs; return $Classes; } // }}} } ?>