public function read(FlashorbBinaryReader $reader, ParseContext $parseContext)
 {
     $refId = $reader->readVarInteger();
     if (($refId & 0x1) == 0) {
         return $parseContext->getReference($refId >> 1);
     }
     $classInfo = $this->getClassInfo($refId, $reader, $parseContext);
     $props = array();
     $obj = new AnonymousObject($props);
     $returnValue = $obj;
     if (!is_null($classInfo->getClassName()) && strlen($classInfo->getClassName()) > 0) {
         $returnValue = new NamedObject($classInfo->getClassName(), $obj);
     }
     $parseContext->addReference($returnValue);
     $propCount = $classInfo->getPropertyCount();
     for ($i = 0; $i < $propCount; $i++) {
         $props[$classInfo->getProperty($i)] = AmfMessageFactory::readData($reader, $parseContext, null);
     }
     if ($classInfo->getLooseProps()) {
         while (TRUE) {
             $propName = ReaderUtils::readString($reader, $parseContext);
             if (is_null($propName) || strlen($propName) == 0) {
                 break;
             }
             $props[$propName] = AmfMessageFactory::readData($reader, $parseContext, null);
         }
     }
     return $returnValue;
 }
示例#2
0
 public function read(FlashorbBinaryReader $reader, ParseContext $parseContext)
 {
     $refId = $reader->readVarInteger();
     if (($refId & 0x1) == 0) {
         return $parseContext->getReference($refId >> 1);
     }
     $dateTime = $reader->readDouble();
     $dateType = new DateType(new ORBDateTime($dateTime, 0));
     $parseContext->addReference($dateType);
     return $dateType;
 }
示例#3
0
 public static function readString(FlashorbBinaryReader $reader, ParseContext $parseContext)
 {
     $len = $reader->readVarInteger();
     if (($len & 0x1) == 0) {
         return $parseContext->getStringReference($len >> 1);
     }
     $str = $reader->readUTF($len >> 1);
     if (strlen($str) == 0) {
         return $str;
     }
     $parseContext->addStringReference($str);
     return $str;
 }
示例#4
0
 public function read(FlashorbBinaryReader $reader, ParseContext $parseContext)
 {
     $len = $reader->readVarInteger();
     if (($len & 0x1) == 0) {
         return $parseContext->getReference($len >> 1);
     }
     $len = $len >> 1;
     if ($len == 0) {
         return $this->parseString("");
     }
     $xmlStr = $reader->readUTF($len);
     $xmlType = $this->parseString($xmlStr);
     $parseContext->addReference($xmlType);
     return $xmlType;
 }
 public function read(FlashorbBinaryReader $reader, ParseContext $parseContext)
 {
     $refId = $reader->readVarInteger();
     if (($refId & 0x1) == 0) {
         return $parseContext->getReference($refId >> 1);
     }
     $bytes = $reader->readBytes($refId >> 1);
     $objArray = array();
     $len = strlen($bytes);
     for ($i = 0; $i < $len; $i++) {
         $objArray[] = new NumberObject(ord($bytes[$i]));
     }
     $arrayType = new ArrayType($objArray);
     $parseContext->addReference($arrayType);
     return $arrayType;
 }
 public function read(FlashorbBinaryReader $reader, ParseContext $parseContext)
 {
     $refId = $reader->readVarInteger();
     if (($refId & 0x1) == 0) {
         return $parseContext->getReference($refId >> 1);
     }
     $arraySize = $refId >> 1;
     $adaptingType = null;
     $container = null;
     while (true) {
         $str = ReaderUtils::readString($reader, $parseContext);
         if (is_null($str) || strlen($str) == 0) {
             break;
         }
         if (is_null($container)) {
             $container = array();
             $adaptingType = new AnonymousObject($container);
             $parseContext->addReference($adaptingType);
         }
         $container[$str] = AmfMessageFactory::readData($reader, $parseContext, null);
     }
     if (is_null($adaptingType)) {
         $container = array();
         $adaptingType = new ArrayType($container);
         $parseContext->addReference($adaptingType);
         for ($i = 0; $i < $arraySize; $i++) {
             $container[$i] = AmfMessageFactory::readData($reader, $parseContext, null);
         }
     } else {
         for ($i = 0; $i < $arraySize; $i++) {
             $obj = AmfMessageFactory::readData($reader, $parseContext, null);
             $container[(string) $i] = $obj;
         }
     }
     return $adaptingType;
 }
 public function read(FlashorbBinaryReader $reader, ParseContext $parseContext)
 {
     $bitShift = PHP_INT_SIZE * 8 - 29;
     return new NumberObject($reader->readVarInteger() << $bitShift >> $bitShift);
     //        return new NumberObject(($reader->readVarInteger() << 3) >> 3);
 }