%PDF- %PDF-
Direktori : /www/varak.net/wiki.varak.net/vendor/nmred/kafka-php/src/Kafka/Protocol/Fetch/ |
Current File : //www/varak.net/wiki.varak.net/vendor/nmred/kafka-php/src/Kafka/Protocol/Fetch/Message.php |
<?php /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */ // +--------------------------------------------------------------------------- // | SWAN [ $_SWANBR_SLOGAN_$ ] // +--------------------------------------------------------------------------- // | Copyright $_SWANBR_COPYRIGHT_$ // +--------------------------------------------------------------------------- // | Version $_SWANBR_VERSION_$ // +--------------------------------------------------------------------------- // | Licensed ( $_SWANBR_LICENSED_URL_$ ) // +--------------------------------------------------------------------------- // | $_SWANBR_WEB_DOMAIN_$ // +--------------------------------------------------------------------------- namespace Kafka\Protocol\Fetch; use \Kafka\Protocol\Decoder; /** +------------------------------------------------------------------------------ * Kafka protocol since Kafka v0.8 +------------------------------------------------------------------------------ * * @package * @version $_SWANBR_VERSION_$ * @copyright Copyleft * @author $_SWANBR_AUTHOR_$ +------------------------------------------------------------------------------ */ class Message { // {{{ members /** * crc32 code * * @var float * @access private */ private $crc = 0; /** * This is a version id used to allow backwards compatible evolution of the * message binary format. * * @var float * @access private */ private $magic = 0; /** * The lowest 2 bits contain the compression codec used for the message. The * other bits should be set to 0. * * @var float * @access private */ private $attribute = 0; /** * message key * * @var string * @access private */ private $key = ''; /** * message value * * @var string * @access private */ private $value = ''; // }}} // {{{ functions // {{{ public function __construct() /** * __construct * * @param string(raw) $msg * @access public */ public function __construct($msg) { $offset = 0; $crc = Decoder::unpack(Decoder::BIT_B32, substr($msg, $offset, 4)); $offset += 4; $this->crc = array_shift($crc); $magic = Decoder::unpack(Decoder::BIT_B8, substr($msg, $offset, 1)); $this->magic = array_shift($magic); $offset += 1; $attr = Decoder::unpack(Decoder::BIT_B8, substr($msg, $offset, 1)); $this->attribute = array_shift($attr); $offset += 1; $keyLen = Decoder::unpack(Decoder::BIT_B32, substr($msg, $offset, 4)); $keyLen = array_shift($keyLen); $offset += 4; if ($keyLen > 0 && $keyLen != 0xFFFFFFFF) { $this->key = substr($msg, $offset, $keyLen); $offset += $keyLen; } $messageSize = Decoder::unpack(Decoder::BIT_B32, substr($msg, $offset, 4)); $messageSize = array_shift($messageSize); $offset += 4; if ($messageSize) { $this->value = substr($msg, $offset, $messageSize); } } // }}} // {{{ public function getMessage() /** * get message data * * @access public * @return string (raw) */ public function getMessage() { return $this->value; } // }}} // {{{ public function getMessageKey() /** * get message key * * @access public * @return string (raw) */ public function getMessageKey() { return $this->key; } // }}} // {{{ public function __toString() /** * __toString * * @access public * @return string (raw) */ public function __toString() { return $this->value; } // }}} // }}} }