MCPcopy Create free account
hub / github.com/apache/thrift / _readMap

Method _readMap

lib/php/src/Thrift.php:450–516  ·  view source on GitHub ↗
(&$var, $spec, $input)

Source from the content-addressed store, hash-verified

448 }
449
450 private function _readMap(&$var, $spec, $input)
451 {
452 $xfer = 0;
453 $ktype = $spec['ktype'];
454 $vtype = $spec['vtype'];
455 $kread = $vread = null;
456 if (isset(TBase::$tmethod[$ktype])) {
457 $kread = 'read'.TBase::$tmethod[$ktype];
458 } else {
459 $kspec = $spec['key'];
460 }
461 if (isset(TBase::$tmethod[$vtype])) {
462 $vread = 'read'.TBase::$tmethod[$vtype];
463 } else {
464 $vspec = $spec['val'];
465 }
466 $var = array();
467 $_ktype = $_vtype = $size = 0;
468 $xfer += $input->readMapBegin($_ktype, $_vtype, $size);
469 for ($i = 0; $i < $size; ++$i) {
470 $key = $val = null;
471 if ($kread !== null) {
472 $xfer += $input->$kread($key);
473 } else {
474 switch ($ktype) {
475 case TType::STRUCT:
476 $class = $kspec['class'];
477 $key = new $class();
478 $xfer += $key->read($input);
479 break;
480 case TType::MAP:
481 $xfer += $this->_readMap($key, $kspec, $input);
482 break;
483 case TType::LST:
484 $xfer += $this->_readList($key, $kspec, $input, false);
485 break;
486 case TType::SET:
487 $xfer += $this->_readList($key, $kspec, $input, true);
488 break;
489 }
490 }
491 if ($vread !== null) {
492 $xfer += $input->$vread($val);
493 } else {
494 switch ($vtype) {
495 case TType::STRUCT:
496 $class = $vspec['class'];
497 $val = new $class();
498 $xfer += $val->read($input);
499 break;
500 case TType::MAP:
501 $xfer += $this->_readMap($val, $vspec, $input);
502 break;
503 case TType::LST:
504 $xfer += $this->_readList($val, $vspec, $input, false);
505 break;
506 case TType::SET:
507 $xfer += $this->_readList($val, $vspec, $input, true);

Callers 2

_readListMethod · 0.95
_readMethod · 0.95

Calls 4

_readListMethod · 0.95
readMapBeginMethod · 0.65
readMethod · 0.65
readMapEndMethod · 0.65

Tested by

no test coverage detected