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

Method _writeMap

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

Source from the content-addressed store, hash-verified

270 }
271
272 private function _writeMap($var, $spec, $output)
273 {
274 $xfer = 0;
275 $ktype = $spec['ktype'];
276 $vtype = $spec['vtype'];
277 $kwrite = $vwrite = null;
278 if (isset(TBase::$tmethod[$ktype])) {
279 $kwrite = 'write'.TBase::$tmethod[$ktype];
280 } else {
281 $kspec = $spec['key'];
282 }
283 if (isset(TBase::$tmethod[$vtype])) {
284 $vwrite = 'write'.TBase::$tmethod[$vtype];
285 } else {
286 $vspec = $spec['val'];
287 }
288 $xfer += $output->writeMapBegin($ktype, $vtype, count($var));
289 foreach ($var as $key => $val) {
290 if (isset($kwrite)) {
291 $xfer += $output->$kwrite($key);
292 } else {
293 switch ($ktype) {
294 case TType::STRUCT:
295 $xfer += $key->write($output);
296 break;
297 case TType::MAP:
298 $xfer += $this->_writeMap($key, $kspec, $output);
299 break;
300 case TType::LST:
301 $xfer += $this->_writeList($key, $kspec, $output, false);
302 break;
303 case TType::SET:
304 $xfer += $this->_writeList($key, $kspec, $output, true);
305 break;
306 }
307 }
308 if (isset($vwrite)) {
309 $xfer += $output->$vwrite($val);
310 } else {
311 switch ($vtype) {
312 case TType::STRUCT:
313 $xfer += $val->write($output);
314 break;
315 case TType::MAP:
316 $xfer += $this->_writeMap($val, $vspec, $output);
317 break;
318 case TType::LST:
319 $xfer += $this->_writeList($val, $vspec, $output, false);
320 break;
321 case TType::SET:
322 $xfer += $this->_writeList($val, $vspec, $output, true);
323 break;
324 }
325 }
326 }
327 $xfer += $output->writeMapEnd();
328
329 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