github.com/cloudwego/dynamicgo@v0.2.6-0.20240519101509-707f41b6b834/thrift/base/k-base.go (about) 1 /** 2 * Copyright 2023 CloudWeGo Authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package base 18 19 import ( 20 "bytes" 21 "fmt" 22 "reflect" 23 "strings" 24 25 "github.com/apache/thrift/lib/go/thrift" 26 27 "github.com/cloudwego/kitex/pkg/protocol/bthrift" 28 ) 29 30 // unused protection 31 var ( 32 _ = fmt.Formatter(nil) 33 _ = (*bytes.Buffer)(nil) 34 _ = (*strings.Builder)(nil) 35 _ = reflect.Type(nil) 36 _ = thrift.TProtocol(nil) 37 _ = bthrift.BinaryWriter(nil) 38 ) 39 40 func (p *TrafficEnv) FastRead(buf []byte) (int, error) { 41 var err error 42 var offset int 43 var l int 44 var fieldTypeId thrift.TType 45 var fieldId int16 46 _, l, err = bthrift.Binary.ReadStructBegin(buf) 47 offset += l 48 if err != nil { 49 goto ReadStructBeginError 50 } 51 52 for { 53 _, fieldTypeId, fieldId, l, err = bthrift.Binary.ReadFieldBegin(buf[offset:]) 54 offset += l 55 if err != nil { 56 goto ReadFieldBeginError 57 } 58 if fieldTypeId == thrift.STOP { 59 break 60 } 61 switch fieldId { 62 case 1: 63 if fieldTypeId == thrift.BOOL { 64 l, err = p.FastReadField1(buf[offset:]) 65 offset += l 66 if err != nil { 67 goto ReadFieldError 68 } 69 } else { 70 l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId) 71 offset += l 72 if err != nil { 73 goto SkipFieldError 74 } 75 } 76 case 2: 77 if fieldTypeId == thrift.STRING { 78 l, err = p.FastReadField2(buf[offset:]) 79 offset += l 80 if err != nil { 81 goto ReadFieldError 82 } 83 } else { 84 l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId) 85 offset += l 86 if err != nil { 87 goto SkipFieldError 88 } 89 } 90 default: 91 l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId) 92 offset += l 93 if err != nil { 94 goto SkipFieldError 95 } 96 } 97 98 l, err = bthrift.Binary.ReadFieldEnd(buf[offset:]) 99 offset += l 100 if err != nil { 101 goto ReadFieldEndError 102 } 103 } 104 l, err = bthrift.Binary.ReadStructEnd(buf[offset:]) 105 offset += l 106 if err != nil { 107 goto ReadStructEndError 108 } 109 110 return offset, nil 111 ReadStructBeginError: 112 return offset, thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) 113 ReadFieldBeginError: 114 return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) 115 ReadFieldError: 116 return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TrafficEnv[fieldId]), err) 117 SkipFieldError: 118 return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) 119 ReadFieldEndError: 120 return offset, thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) 121 ReadStructEndError: 122 return offset, thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) 123 } 124 125 func (p *TrafficEnv) FastReadField1(buf []byte) (int, error) { 126 offset := 0 127 128 if v, l, err := bthrift.Binary.ReadBool(buf[offset:]); err != nil { 129 return offset, err 130 } else { 131 offset += l 132 133 p.Open = v 134 135 } 136 return offset, nil 137 } 138 139 func (p *TrafficEnv) FastReadField2(buf []byte) (int, error) { 140 offset := 0 141 142 if v, l, err := bthrift.Binary.ReadString(buf[offset:]); err != nil { 143 return offset, err 144 } else { 145 offset += l 146 147 p.Env = v 148 149 } 150 return offset, nil 151 } 152 153 // for compatibility 154 func (p *TrafficEnv) FastWrite(buf []byte) int { 155 offset := 0 156 offset += bthrift.Binary.WriteStructBegin(buf[offset:], "TrafficEnv") 157 if p != nil { 158 offset += p.fastWriteField1(buf[offset:]) 159 offset += p.fastWriteField2(buf[offset:]) 160 } 161 offset += bthrift.Binary.WriteFieldStop(buf[offset:]) 162 offset += bthrift.Binary.WriteStructEnd(buf[offset:]) 163 return offset 164 } 165 166 func (p *TrafficEnv) BLength() int { 167 l := 0 168 l += bthrift.Binary.StructBeginLength("TrafficEnv") 169 if p != nil { 170 l += p.field1Length() 171 l += p.field2Length() 172 } 173 l += bthrift.Binary.FieldStopLength() 174 l += bthrift.Binary.StructEndLength() 175 return l 176 } 177 178 func (p *TrafficEnv) fastWriteField1(buf []byte) int { 179 offset := 0 180 offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "Open", thrift.BOOL, 1) 181 offset += bthrift.Binary.WriteBool(buf[offset:], p.Open) 182 183 offset += bthrift.Binary.WriteFieldEnd(buf[offset:]) 184 return offset 185 } 186 187 func (p *TrafficEnv) fastWriteField2(buf []byte) int { 188 offset := 0 189 offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "Env", thrift.STRING, 2) 190 offset += bthrift.Binary.WriteString(buf[offset:], p.Env) 191 192 offset += bthrift.Binary.WriteFieldEnd(buf[offset:]) 193 return offset 194 } 195 196 func (p *TrafficEnv) field1Length() int { 197 l := 0 198 l += bthrift.Binary.FieldBeginLength("Open", thrift.BOOL, 1) 199 l += bthrift.Binary.BoolLength(p.Open) 200 201 l += bthrift.Binary.FieldEndLength() 202 return l 203 } 204 205 func (p *TrafficEnv) field2Length() int { 206 l := 0 207 l += bthrift.Binary.FieldBeginLength("Env", thrift.STRING, 2) 208 l += bthrift.Binary.StringLength(p.Env) 209 210 l += bthrift.Binary.FieldEndLength() 211 return l 212 } 213 214 func (p *Base) FastRead(buf []byte) (int, error) { 215 var err error 216 var offset int 217 var l int 218 var fieldTypeId thrift.TType 219 var fieldId int16 220 _, l, err = bthrift.Binary.ReadStructBegin(buf) 221 offset += l 222 if err != nil { 223 goto ReadStructBeginError 224 } 225 226 for { 227 _, fieldTypeId, fieldId, l, err = bthrift.Binary.ReadFieldBegin(buf[offset:]) 228 offset += l 229 if err != nil { 230 goto ReadFieldBeginError 231 } 232 if fieldTypeId == thrift.STOP { 233 break 234 } 235 switch fieldId { 236 case 1: 237 if fieldTypeId == thrift.STRING { 238 l, err = p.FastReadField1(buf[offset:]) 239 offset += l 240 if err != nil { 241 goto ReadFieldError 242 } 243 } else { 244 l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId) 245 offset += l 246 if err != nil { 247 goto SkipFieldError 248 } 249 } 250 case 2: 251 if fieldTypeId == thrift.STRING { 252 l, err = p.FastReadField2(buf[offset:]) 253 offset += l 254 if err != nil { 255 goto ReadFieldError 256 } 257 } else { 258 l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId) 259 offset += l 260 if err != nil { 261 goto SkipFieldError 262 } 263 } 264 case 3: 265 if fieldTypeId == thrift.STRING { 266 l, err = p.FastReadField3(buf[offset:]) 267 offset += l 268 if err != nil { 269 goto ReadFieldError 270 } 271 } else { 272 l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId) 273 offset += l 274 if err != nil { 275 goto SkipFieldError 276 } 277 } 278 case 4: 279 if fieldTypeId == thrift.STRING { 280 l, err = p.FastReadField4(buf[offset:]) 281 offset += l 282 if err != nil { 283 goto ReadFieldError 284 } 285 } else { 286 l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId) 287 offset += l 288 if err != nil { 289 goto SkipFieldError 290 } 291 } 292 case 5: 293 if fieldTypeId == thrift.STRUCT { 294 l, err = p.FastReadField5(buf[offset:]) 295 offset += l 296 if err != nil { 297 goto ReadFieldError 298 } 299 } else { 300 l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId) 301 offset += l 302 if err != nil { 303 goto SkipFieldError 304 } 305 } 306 case 6: 307 if fieldTypeId == thrift.MAP { 308 l, err = p.FastReadField6(buf[offset:]) 309 offset += l 310 if err != nil { 311 goto ReadFieldError 312 } 313 } else { 314 l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId) 315 offset += l 316 if err != nil { 317 goto SkipFieldError 318 } 319 } 320 default: 321 l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId) 322 offset += l 323 if err != nil { 324 goto SkipFieldError 325 } 326 } 327 328 l, err = bthrift.Binary.ReadFieldEnd(buf[offset:]) 329 offset += l 330 if err != nil { 331 goto ReadFieldEndError 332 } 333 } 334 l, err = bthrift.Binary.ReadStructEnd(buf[offset:]) 335 offset += l 336 if err != nil { 337 goto ReadStructEndError 338 } 339 340 return offset, nil 341 ReadStructBeginError: 342 return offset, thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) 343 ReadFieldBeginError: 344 return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) 345 ReadFieldError: 346 return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Base[fieldId]), err) 347 SkipFieldError: 348 return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) 349 ReadFieldEndError: 350 return offset, thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) 351 ReadStructEndError: 352 return offset, thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) 353 } 354 355 func (p *Base) FastReadField1(buf []byte) (int, error) { 356 offset := 0 357 358 if v, l, err := bthrift.Binary.ReadString(buf[offset:]); err != nil { 359 return offset, err 360 } else { 361 offset += l 362 363 p.LogID = v 364 365 } 366 return offset, nil 367 } 368 369 func (p *Base) FastReadField2(buf []byte) (int, error) { 370 offset := 0 371 372 if v, l, err := bthrift.Binary.ReadString(buf[offset:]); err != nil { 373 return offset, err 374 } else { 375 offset += l 376 377 p.Caller = v 378 379 } 380 return offset, nil 381 } 382 383 func (p *Base) FastReadField3(buf []byte) (int, error) { 384 offset := 0 385 386 if v, l, err := bthrift.Binary.ReadString(buf[offset:]); err != nil { 387 return offset, err 388 } else { 389 offset += l 390 391 p.Addr = v 392 393 } 394 return offset, nil 395 } 396 397 func (p *Base) FastReadField4(buf []byte) (int, error) { 398 offset := 0 399 400 if v, l, err := bthrift.Binary.ReadString(buf[offset:]); err != nil { 401 return offset, err 402 } else { 403 offset += l 404 405 p.Client = v 406 407 } 408 return offset, nil 409 } 410 411 func (p *Base) FastReadField5(buf []byte) (int, error) { 412 offset := 0 413 p.TrafficEnv = NewTrafficEnv() 414 if l, err := p.TrafficEnv.FastRead(buf[offset:]); err != nil { 415 return offset, err 416 } else { 417 offset += l 418 } 419 return offset, nil 420 } 421 422 func (p *Base) FastReadField6(buf []byte) (int, error) { 423 offset := 0 424 425 _, _, size, l, err := bthrift.Binary.ReadMapBegin(buf[offset:]) 426 offset += l 427 if err != nil { 428 return offset, err 429 } 430 p.Extra = make(map[string]string, size) 431 for i := 0; i < size; i++ { 432 var _key string 433 if v, l, err := bthrift.Binary.ReadString(buf[offset:]); err != nil { 434 return offset, err 435 } else { 436 offset += l 437 438 _key = v 439 440 } 441 442 var _val string 443 if v, l, err := bthrift.Binary.ReadString(buf[offset:]); err != nil { 444 return offset, err 445 } else { 446 offset += l 447 448 _val = v 449 450 } 451 452 p.Extra[_key] = _val 453 } 454 if l, err := bthrift.Binary.ReadMapEnd(buf[offset:]); err != nil { 455 return offset, err 456 } else { 457 offset += l 458 } 459 return offset, nil 460 } 461 462 // for compatibility 463 func (p *Base) FastWrite(buf []byte) int { 464 offset := 0 465 offset += bthrift.Binary.WriteStructBegin(buf[offset:], "Base") 466 if p != nil { 467 offset += p.fastWriteField1(buf[offset:]) 468 offset += p.fastWriteField2(buf[offset:]) 469 offset += p.fastWriteField3(buf[offset:]) 470 offset += p.fastWriteField4(buf[offset:]) 471 offset += p.fastWriteField5(buf[offset:]) 472 offset += p.fastWriteField6(buf[offset:]) 473 } 474 offset += bthrift.Binary.WriteFieldStop(buf[offset:]) 475 offset += bthrift.Binary.WriteStructEnd(buf[offset:]) 476 return offset 477 } 478 479 func (p *Base) BLength() int { 480 l := 0 481 l += bthrift.Binary.StructBeginLength("Base") 482 if p != nil { 483 l += p.field1Length() 484 l += p.field2Length() 485 l += p.field3Length() 486 l += p.field4Length() 487 l += p.field5Length() 488 l += p.field6Length() 489 } 490 l += bthrift.Binary.FieldStopLength() 491 l += bthrift.Binary.StructEndLength() 492 return l 493 } 494 495 func (p *Base) fastWriteField1(buf []byte) int { 496 offset := 0 497 offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "LogID", thrift.STRING, 1) 498 offset += bthrift.Binary.WriteString(buf[offset:], p.LogID) 499 500 offset += bthrift.Binary.WriteFieldEnd(buf[offset:]) 501 return offset 502 } 503 504 func (p *Base) fastWriteField2(buf []byte) int { 505 offset := 0 506 offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "Caller", thrift.STRING, 2) 507 offset += bthrift.Binary.WriteString(buf[offset:], p.Caller) 508 509 offset += bthrift.Binary.WriteFieldEnd(buf[offset:]) 510 return offset 511 } 512 513 func (p *Base) fastWriteField3(buf []byte) int { 514 offset := 0 515 offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "Addr", thrift.STRING, 3) 516 offset += bthrift.Binary.WriteString(buf[offset:], p.Addr) 517 518 offset += bthrift.Binary.WriteFieldEnd(buf[offset:]) 519 return offset 520 } 521 522 func (p *Base) fastWriteField4(buf []byte) int { 523 offset := 0 524 offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "Client", thrift.STRING, 4) 525 offset += bthrift.Binary.WriteString(buf[offset:], p.Client) 526 527 offset += bthrift.Binary.WriteFieldEnd(buf[offset:]) 528 return offset 529 } 530 531 func (p *Base) fastWriteField5(buf []byte) int { 532 offset := 0 533 if p.IsSetTrafficEnv() { 534 offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "TrafficEnv", thrift.STRUCT, 5) 535 offset += p.TrafficEnv.FastWrite(buf[offset:]) 536 offset += bthrift.Binary.WriteFieldEnd(buf[offset:]) 537 } 538 return offset 539 } 540 541 func (p *Base) fastWriteField6(buf []byte) int { 542 offset := 0 543 if p.IsSetExtra() { 544 offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "Extra", thrift.MAP, 6) 545 offset += bthrift.Binary.WriteMapBegin(buf[offset:], thrift.STRING, thrift.STRING, len(p.Extra)) 546 for k, v := range p.Extra { 547 548 offset += bthrift.Binary.WriteString(buf[offset:], k) 549 550 offset += bthrift.Binary.WriteString(buf[offset:], v) 551 552 } 553 offset += bthrift.Binary.WriteMapEnd(buf[offset:]) 554 offset += bthrift.Binary.WriteFieldEnd(buf[offset:]) 555 } 556 return offset 557 } 558 559 func (p *Base) field1Length() int { 560 l := 0 561 l += bthrift.Binary.FieldBeginLength("LogID", thrift.STRING, 1) 562 l += bthrift.Binary.StringLength(p.LogID) 563 564 l += bthrift.Binary.FieldEndLength() 565 return l 566 } 567 568 func (p *Base) field2Length() int { 569 l := 0 570 l += bthrift.Binary.FieldBeginLength("Caller", thrift.STRING, 2) 571 l += bthrift.Binary.StringLength(p.Caller) 572 573 l += bthrift.Binary.FieldEndLength() 574 return l 575 } 576 577 func (p *Base) field3Length() int { 578 l := 0 579 l += bthrift.Binary.FieldBeginLength("Addr", thrift.STRING, 3) 580 l += bthrift.Binary.StringLength(p.Addr) 581 582 l += bthrift.Binary.FieldEndLength() 583 return l 584 } 585 586 func (p *Base) field4Length() int { 587 l := 0 588 l += bthrift.Binary.FieldBeginLength("Client", thrift.STRING, 4) 589 l += bthrift.Binary.StringLength(p.Client) 590 591 l += bthrift.Binary.FieldEndLength() 592 return l 593 } 594 595 func (p *Base) field5Length() int { 596 l := 0 597 if p.IsSetTrafficEnv() { 598 l += bthrift.Binary.FieldBeginLength("TrafficEnv", thrift.STRUCT, 5) 599 l += p.TrafficEnv.BLength() 600 l += bthrift.Binary.FieldEndLength() 601 } 602 return l 603 } 604 605 func (p *Base) field6Length() int { 606 l := 0 607 if p.IsSetExtra() { 608 l += bthrift.Binary.FieldBeginLength("Extra", thrift.MAP, 6) 609 l += bthrift.Binary.MapBeginLength(thrift.STRING, thrift.STRING, len(p.Extra)) 610 for k, v := range p.Extra { 611 612 l += bthrift.Binary.StringLength(k) 613 614 l += bthrift.Binary.StringLength(v) 615 616 } 617 l += bthrift.Binary.MapEndLength() 618 l += bthrift.Binary.FieldEndLength() 619 } 620 return l 621 } 622 623 func (p *BaseResp) FastRead(buf []byte) (int, error) { 624 var err error 625 var offset int 626 var l int 627 var fieldTypeId thrift.TType 628 var fieldId int16 629 _, l, err = bthrift.Binary.ReadStructBegin(buf) 630 offset += l 631 if err != nil { 632 goto ReadStructBeginError 633 } 634 635 for { 636 _, fieldTypeId, fieldId, l, err = bthrift.Binary.ReadFieldBegin(buf[offset:]) 637 offset += l 638 if err != nil { 639 goto ReadFieldBeginError 640 } 641 if fieldTypeId == thrift.STOP { 642 break 643 } 644 switch fieldId { 645 case 1: 646 if fieldTypeId == thrift.STRING { 647 l, err = p.FastReadField1(buf[offset:]) 648 offset += l 649 if err != nil { 650 goto ReadFieldError 651 } 652 } else { 653 l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId) 654 offset += l 655 if err != nil { 656 goto SkipFieldError 657 } 658 } 659 case 2: 660 if fieldTypeId == thrift.I32 { 661 l, err = p.FastReadField2(buf[offset:]) 662 offset += l 663 if err != nil { 664 goto ReadFieldError 665 } 666 } else { 667 l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId) 668 offset += l 669 if err != nil { 670 goto SkipFieldError 671 } 672 } 673 case 3: 674 if fieldTypeId == thrift.MAP { 675 l, err = p.FastReadField3(buf[offset:]) 676 offset += l 677 if err != nil { 678 goto ReadFieldError 679 } 680 } else { 681 l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId) 682 offset += l 683 if err != nil { 684 goto SkipFieldError 685 } 686 } 687 default: 688 l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId) 689 offset += l 690 if err != nil { 691 goto SkipFieldError 692 } 693 } 694 695 l, err = bthrift.Binary.ReadFieldEnd(buf[offset:]) 696 offset += l 697 if err != nil { 698 goto ReadFieldEndError 699 } 700 } 701 l, err = bthrift.Binary.ReadStructEnd(buf[offset:]) 702 offset += l 703 if err != nil { 704 goto ReadStructEndError 705 } 706 707 return offset, nil 708 ReadStructBeginError: 709 return offset, thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) 710 ReadFieldBeginError: 711 return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) 712 ReadFieldError: 713 return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_BaseResp[fieldId]), err) 714 SkipFieldError: 715 return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) 716 ReadFieldEndError: 717 return offset, thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) 718 ReadStructEndError: 719 return offset, thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) 720 } 721 722 func (p *BaseResp) FastReadField1(buf []byte) (int, error) { 723 offset := 0 724 725 if v, l, err := bthrift.Binary.ReadString(buf[offset:]); err != nil { 726 return offset, err 727 } else { 728 offset += l 729 730 p.StatusMessage = v 731 732 } 733 return offset, nil 734 } 735 736 func (p *BaseResp) FastReadField2(buf []byte) (int, error) { 737 offset := 0 738 739 if v, l, err := bthrift.Binary.ReadI32(buf[offset:]); err != nil { 740 return offset, err 741 } else { 742 offset += l 743 744 p.StatusCode = v 745 746 } 747 return offset, nil 748 } 749 750 func (p *BaseResp) FastReadField3(buf []byte) (int, error) { 751 offset := 0 752 753 _, _, size, l, err := bthrift.Binary.ReadMapBegin(buf[offset:]) 754 offset += l 755 if err != nil { 756 return offset, err 757 } 758 p.Extra = make(map[string]string, size) 759 for i := 0; i < size; i++ { 760 var _key string 761 if v, l, err := bthrift.Binary.ReadString(buf[offset:]); err != nil { 762 return offset, err 763 } else { 764 offset += l 765 766 _key = v 767 768 } 769 770 var _val string 771 if v, l, err := bthrift.Binary.ReadString(buf[offset:]); err != nil { 772 return offset, err 773 } else { 774 offset += l 775 776 _val = v 777 778 } 779 780 p.Extra[_key] = _val 781 } 782 if l, err := bthrift.Binary.ReadMapEnd(buf[offset:]); err != nil { 783 return offset, err 784 } else { 785 offset += l 786 } 787 return offset, nil 788 } 789 790 // for compatibility 791 func (p *BaseResp) FastWrite(buf []byte) int { 792 offset := 0 793 offset += bthrift.Binary.WriteStructBegin(buf[offset:], "BaseResp") 794 if p != nil { 795 offset += p.fastWriteField2(buf[offset:]) 796 offset += p.fastWriteField1(buf[offset:]) 797 offset += p.fastWriteField3(buf[offset:]) 798 } 799 offset += bthrift.Binary.WriteFieldStop(buf[offset:]) 800 offset += bthrift.Binary.WriteStructEnd(buf[offset:]) 801 return offset 802 } 803 804 func (p *BaseResp) BLength() int { 805 l := 0 806 l += bthrift.Binary.StructBeginLength("BaseResp") 807 if p != nil { 808 l += p.field1Length() 809 l += p.field2Length() 810 l += p.field3Length() 811 } 812 l += bthrift.Binary.FieldStopLength() 813 l += bthrift.Binary.StructEndLength() 814 return l 815 } 816 817 func (p *BaseResp) fastWriteField1(buf []byte) int { 818 offset := 0 819 offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "StatusMessage", thrift.STRING, 1) 820 offset += bthrift.Binary.WriteString(buf[offset:], p.StatusMessage) 821 822 offset += bthrift.Binary.WriteFieldEnd(buf[offset:]) 823 return offset 824 } 825 826 func (p *BaseResp) fastWriteField2(buf []byte) int { 827 offset := 0 828 offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "StatusCode", thrift.I32, 2) 829 offset += bthrift.Binary.WriteI32(buf[offset:], p.StatusCode) 830 831 offset += bthrift.Binary.WriteFieldEnd(buf[offset:]) 832 return offset 833 } 834 835 func (p *BaseResp) fastWriteField3(buf []byte) int { 836 offset := 0 837 if p.IsSetExtra() { 838 offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "Extra", thrift.MAP, 3) 839 offset += bthrift.Binary.WriteMapBegin(buf[offset:], thrift.STRING, thrift.STRING, len(p.Extra)) 840 for k, v := range p.Extra { 841 842 offset += bthrift.Binary.WriteString(buf[offset:], k) 843 844 offset += bthrift.Binary.WriteString(buf[offset:], v) 845 846 } 847 offset += bthrift.Binary.WriteMapEnd(buf[offset:]) 848 offset += bthrift.Binary.WriteFieldEnd(buf[offset:]) 849 } 850 return offset 851 } 852 853 func (p *BaseResp) field1Length() int { 854 l := 0 855 l += bthrift.Binary.FieldBeginLength("StatusMessage", thrift.STRING, 1) 856 l += bthrift.Binary.StringLength(p.StatusMessage) 857 858 l += bthrift.Binary.FieldEndLength() 859 return l 860 } 861 862 func (p *BaseResp) field2Length() int { 863 l := 0 864 l += bthrift.Binary.FieldBeginLength("StatusCode", thrift.I32, 2) 865 l += bthrift.Binary.I32Length(p.StatusCode) 866 867 l += bthrift.Binary.FieldEndLength() 868 return l 869 } 870 871 func (p *BaseResp) field3Length() int { 872 l := 0 873 if p.IsSetExtra() { 874 l += bthrift.Binary.FieldBeginLength("Extra", thrift.MAP, 3) 875 l += bthrift.Binary.MapBeginLength(thrift.STRING, thrift.STRING, len(p.Extra)) 876 for k, v := range p.Extra { 877 878 l += bthrift.Binary.StringLength(k) 879 880 l += bthrift.Binary.StringLength(v) 881 882 } 883 l += bthrift.Binary.MapEndLength() 884 l += bthrift.Binary.FieldEndLength() 885 } 886 return l 887 }