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

Method _writeMap

lib/php/src/Thrift.php:624–682  ·  view source on GitHub ↗
($var, $spec, $output)

Source from the content-addressed store, hash-verified

622 }
623
624 private function _writeMap($var, $spec, $output)
625 {
626 $xfer = 0;
627 $ktype = $spec['ktype'];
628 $vtype = $spec['vtype'];
629 $kwrite = $vwrite = null;
630 if (isset(TBase::$tmethod[$ktype])) {
631 $kwrite = 'write'.TBase::$tmethod[$ktype];
632 } else {
633 $kspec = $spec['key'];
634 }
635 if (isset(TBase::$tmethod[$vtype])) {
636 $vwrite = 'write'.TBase::$tmethod[$vtype];
637 } else {
638 $vspec = $spec['val'];
639 }
640 $xfer += $output->writeMapBegin($ktype, $vtype, count($var));
641 foreach ($var as $key => $val) {
642 if (isset($kwrite)) {
643 $xfer += $output->$kwrite($key);
644 } else {
645 switch ($ktype) {
646 case TType::STRUCT:
647 $xfer += $key->write($output);
648 break;
649 case TType::MAP:
650 $xfer += $this->_writeMap($key, $kspec, $output);
651 break;
652 case TType::LST:
653 $xfer += $this->_writeList($key, $kspec, $output, false);
654 break;
655 case TType::SET:
656 $xfer += $this->_writeList($key, $kspec, $output, true);
657 break;
658 }
659 }
660 if (isset($vwrite)) {
661 $xfer += $output->$vwrite($val);
662 } else {
663 switch ($vtype) {
664 case TType::STRUCT:
665 $xfer += $val->write($output);
666 break;
667 case TType::MAP:
668 $xfer += $this->_writeMap($val, $vspec, $output);
669 break;
670 case TType::LST:
671 $xfer += $this->_writeList($val, $vspec, $output, false);
672 break;
673 case TType::SET:
674 $xfer += $this->_writeList($val, $vspec, $output, true);
675 break;
676 }
677 }
678 }
679 $xfer += $output->writeMapEnd();
680
681 return $xfer;

Callers 2

_writeListMethod · 0.95
_writeMethod · 0.95

Calls 4

_writeListMethod · 0.95
writeMapBeginMethod · 0.65
writeMethod · 0.65
writeMapEndMethod · 0.65

Tested by

no test coverage detected