Ejemplo n.º 1
0
 /**
  * @param DataStream $stream
  * @return mixed
  */
 public static function readFromStream(DataStream $stream)
 {
     $data = ['type' => $stream->readShort()];
     switch ($data['type']) {
         case DataTypeEnum::CUSTOM:
             $data['name'] = $stream->readString();
             break;
         case DataTypeEnum::COLLECTION_LIST:
         case DataTypeEnum::COLLECTION_SET:
             $data['value'] = self::readFromStream($stream);
             break;
         case DataTypeEnum::COLLECTION_MAP:
             $data['key'] = self::readFromStream($stream);
             $data['value'] = self::readFromStream($stream);
             break;
     }
     return $data;
 }
Ejemplo n.º 2
0
 /**
  * Return metadata
  * @return array
  */
 private function getMetadata()
 {
     $flags = $this->dataStream->readInt();
     $columnCount = $this->dataStream->readInt();
     $globalTableSpec = $flags & 0x1;
     if ($globalTableSpec) {
         $keyspace = $this->dataStream->readString();
         $tableName = $this->dataStream->readString();
     }
     $columns = [];
     for ($i = 0; $i < $columnCount; ++$i) {
         if (isset($keyspace, $tableName)) {
             $columnData = ['keyspace' => $keyspace, 'tableName' => $tableName, 'name' => $this->dataStream->readString(), 'type' => TypeReader::readFromStream($this->dataStream)];
         } else {
             $columnData = ['keyspace' => $this->dataStream->readString(), 'tableName' => $this->dataStream->readString(), 'name' => $this->dataStream->readString(), 'type' => TypeReader::readFromStream($this->dataStream)];
         }
         $columns[] = $columnData;
     }
     return ['columnCount' => $columnCount, 'columns' => $columns];
 }