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

Function skip_element

lib/php/src/ext/thrift_protocol/php_thrift_protocol.cpp:441–499  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

439}
440
441static
442void skip_element(long thrift_typeID, PHPInputTransport& transport) {
443 switch (thrift_typeID) {
444 case T_STOP:
445 case T_VOID:
446 return;
447 case T_STRUCT:
448 while (true) {
449 int8_t ttype = transport.readI8(); // get field type
450 if (ttype == T_STOP) break;
451 transport.skip(2); // skip field number, I16
452 skip_element(ttype, transport); // skip field payload
453 }
454 return;
455 case T_BOOL:
456 case T_BYTE:
457 transport.skip(1);
458 return;
459 case T_I16:
460 transport.skip(2);
461 return;
462 case T_I32:
463 transport.skip(4);
464 return;
465 case T_U64:
466 case T_I64:
467 case T_DOUBLE:
468 transport.skip(8);
469 return;
470 //case T_UTF7: // aliases T_STRING
471 case T_UTF8:
472 case T_UTF16:
473 case T_STRING: {
474 uint32_t len = transport.readU32();
475 transport.skip(len);
476 } return;
477 case T_MAP: {
478 int8_t keytype = transport.readI8();
479 int8_t valtype = transport.readI8();
480 uint32_t size = transport.readU32();
481 for (uint32_t i = 0; i < size; ++i) {
482 skip_element(keytype, transport);
483 skip_element(valtype, transport);
484 }
485 } return;
486 case T_LIST:
487 case T_SET: {
488 int8_t valtype = transport.readI8();
489 uint32_t size = transport.readU32();
490 for (uint32_t i = 0; i < size; ++i) {
491 skip_element(valtype, transport);
492 }
493 } return;
494 };
495
496 char errbuf[128];
497 sprintf(errbuf, "Unknown thrift typeID %ld", thrift_typeID);
498 throw_tprotocolexception(errbuf, INVALID_DATA);

Callers 2

binary_deserializeFunction · 0.85
binary_deserialize_specFunction · 0.85

Calls 4

throw_tprotocolexceptionFunction · 0.85
readU32Method · 0.80
readI8Method · 0.45
skipMethod · 0.45

Tested by

no test coverage detected