go.uber.org/yarpc@v1.72.1/serialize/internal/internal.go (about) 1 // Code generated by thriftrw v1.29.2. DO NOT EDIT. 2 // @generated 3 4 // Copyright (c) 2022 Uber Technologies, Inc. 5 // 6 // Permission is hereby granted, free of charge, to any person obtaining a copy 7 // of this software and associated documentation files (the "Software"), to deal 8 // in the Software without restriction, including without limitation the rights 9 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 // copies of the Software, and to permit persons to whom the Software is 11 // furnished to do so, subject to the following conditions: 12 // 13 // The above copyright notice and this permission notice shall be included in 14 // all copies or substantial portions of the Software. 15 // 16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 // THE SOFTWARE. 23 24 package internal 25 26 import ( 27 bytes "bytes" 28 base64 "encoding/base64" 29 errors "errors" 30 fmt "fmt" 31 multierr "go.uber.org/multierr" 32 stream "go.uber.org/thriftrw/protocol/stream" 33 thriftreflect "go.uber.org/thriftrw/thriftreflect" 34 wire "go.uber.org/thriftrw/wire" 35 zapcore "go.uber.org/zap/zapcore" 36 strings "strings" 37 ) 38 39 type RPC struct { 40 SpanContext []byte `json:"spanContext,required"` 41 CallerName string `json:"callerName,required"` 42 ServiceName string `json:"serviceName,required"` 43 Encoding string `json:"encoding,required"` 44 Procedure string `json:"procedure,required"` 45 Headers map[string]string `json:"headers,omitempty"` 46 ShardKey *string `json:"shardKey,omitempty"` 47 RoutingKey *string `json:"routingKey,omitempty"` 48 RoutingDelegate *string `json:"routingDelegate,omitempty"` 49 Body []byte `json:"body,omitempty"` 50 } 51 52 type _Map_String_String_MapItemList map[string]string 53 54 func (m _Map_String_String_MapItemList) ForEach(f func(wire.MapItem) error) error { 55 for k, v := range m { 56 kw, err := wire.NewValueString(k), error(nil) 57 if err != nil { 58 return err 59 } 60 61 vw, err := wire.NewValueString(v), error(nil) 62 if err != nil { 63 return err 64 } 65 err = f(wire.MapItem{Key: kw, Value: vw}) 66 if err != nil { 67 return err 68 } 69 } 70 return nil 71 } 72 73 func (m _Map_String_String_MapItemList) Size() int { 74 return len(m) 75 } 76 77 func (_Map_String_String_MapItemList) KeyType() wire.Type { 78 return wire.TBinary 79 } 80 81 func (_Map_String_String_MapItemList) ValueType() wire.Type { 82 return wire.TBinary 83 } 84 85 func (_Map_String_String_MapItemList) Close() {} 86 87 // ToWire translates a RPC struct into a Thrift-level intermediate 88 // representation. This intermediate representation may be serialized 89 // into bytes using a ThriftRW protocol implementation. 90 // 91 // An error is returned if the struct or any of its fields failed to 92 // validate. 93 // 94 // x, err := v.ToWire() 95 // if err != nil { 96 // return err 97 // } 98 // 99 // if err := binaryProtocol.Encode(x, writer); err != nil { 100 // return err 101 // } 102 func (v *RPC) ToWire() (wire.Value, error) { 103 var ( 104 fields [10]wire.Field 105 i int = 0 106 w wire.Value 107 err error 108 ) 109 110 if v.SpanContext == nil { 111 return w, errors.New("field SpanContext of RPC is required") 112 } 113 w, err = wire.NewValueBinary(v.SpanContext), error(nil) 114 if err != nil { 115 return w, err 116 } 117 fields[i] = wire.Field{ID: 1, Value: w} 118 i++ 119 120 w, err = wire.NewValueString(v.CallerName), error(nil) 121 if err != nil { 122 return w, err 123 } 124 fields[i] = wire.Field{ID: 2, Value: w} 125 i++ 126 127 w, err = wire.NewValueString(v.ServiceName), error(nil) 128 if err != nil { 129 return w, err 130 } 131 fields[i] = wire.Field{ID: 3, Value: w} 132 i++ 133 134 w, err = wire.NewValueString(v.Encoding), error(nil) 135 if err != nil { 136 return w, err 137 } 138 fields[i] = wire.Field{ID: 4, Value: w} 139 i++ 140 141 w, err = wire.NewValueString(v.Procedure), error(nil) 142 if err != nil { 143 return w, err 144 } 145 fields[i] = wire.Field{ID: 5, Value: w} 146 i++ 147 if v.Headers != nil { 148 w, err = wire.NewValueMap(_Map_String_String_MapItemList(v.Headers)), error(nil) 149 if err != nil { 150 return w, err 151 } 152 fields[i] = wire.Field{ID: 6, Value: w} 153 i++ 154 } 155 if v.ShardKey != nil { 156 w, err = wire.NewValueString(*(v.ShardKey)), error(nil) 157 if err != nil { 158 return w, err 159 } 160 fields[i] = wire.Field{ID: 7, Value: w} 161 i++ 162 } 163 if v.RoutingKey != nil { 164 w, err = wire.NewValueString(*(v.RoutingKey)), error(nil) 165 if err != nil { 166 return w, err 167 } 168 fields[i] = wire.Field{ID: 8, Value: w} 169 i++ 170 } 171 if v.RoutingDelegate != nil { 172 w, err = wire.NewValueString(*(v.RoutingDelegate)), error(nil) 173 if err != nil { 174 return w, err 175 } 176 fields[i] = wire.Field{ID: 9, Value: w} 177 i++ 178 } 179 if v.Body != nil { 180 w, err = wire.NewValueBinary(v.Body), error(nil) 181 if err != nil { 182 return w, err 183 } 184 fields[i] = wire.Field{ID: 10, Value: w} 185 i++ 186 } 187 188 return wire.NewValueStruct(wire.Struct{Fields: fields[:i]}), nil 189 } 190 191 func _Map_String_String_Read(m wire.MapItemList) (map[string]string, error) { 192 if m.KeyType() != wire.TBinary { 193 return nil, nil 194 } 195 196 if m.ValueType() != wire.TBinary { 197 return nil, nil 198 } 199 200 o := make(map[string]string, m.Size()) 201 err := m.ForEach(func(x wire.MapItem) error { 202 k, err := x.Key.GetString(), error(nil) 203 if err != nil { 204 return err 205 } 206 207 v, err := x.Value.GetString(), error(nil) 208 if err != nil { 209 return err 210 } 211 212 o[k] = v 213 return nil 214 }) 215 m.Close() 216 return o, err 217 } 218 219 // FromWire deserializes a RPC struct from its Thrift-level 220 // representation. The Thrift-level representation may be obtained 221 // from a ThriftRW protocol implementation. 222 // 223 // An error is returned if we were unable to build a RPC struct 224 // from the provided intermediate representation. 225 // 226 // x, err := binaryProtocol.Decode(reader, wire.TStruct) 227 // if err != nil { 228 // return nil, err 229 // } 230 // 231 // var v RPC 232 // if err := v.FromWire(x); err != nil { 233 // return nil, err 234 // } 235 // return &v, nil 236 func (v *RPC) FromWire(w wire.Value) error { 237 var err error 238 239 spanContextIsSet := false 240 callerNameIsSet := false 241 serviceNameIsSet := false 242 encodingIsSet := false 243 procedureIsSet := false 244 245 for _, field := range w.GetStruct().Fields { 246 switch field.ID { 247 case 1: 248 if field.Value.Type() == wire.TBinary { 249 v.SpanContext, err = field.Value.GetBinary(), error(nil) 250 if err != nil { 251 return err 252 } 253 spanContextIsSet = true 254 } 255 case 2: 256 if field.Value.Type() == wire.TBinary { 257 v.CallerName, err = field.Value.GetString(), error(nil) 258 if err != nil { 259 return err 260 } 261 callerNameIsSet = true 262 } 263 case 3: 264 if field.Value.Type() == wire.TBinary { 265 v.ServiceName, err = field.Value.GetString(), error(nil) 266 if err != nil { 267 return err 268 } 269 serviceNameIsSet = true 270 } 271 case 4: 272 if field.Value.Type() == wire.TBinary { 273 v.Encoding, err = field.Value.GetString(), error(nil) 274 if err != nil { 275 return err 276 } 277 encodingIsSet = true 278 } 279 case 5: 280 if field.Value.Type() == wire.TBinary { 281 v.Procedure, err = field.Value.GetString(), error(nil) 282 if err != nil { 283 return err 284 } 285 procedureIsSet = true 286 } 287 case 6: 288 if field.Value.Type() == wire.TMap { 289 v.Headers, err = _Map_String_String_Read(field.Value.GetMap()) 290 if err != nil { 291 return err 292 } 293 294 } 295 case 7: 296 if field.Value.Type() == wire.TBinary { 297 var x string 298 x, err = field.Value.GetString(), error(nil) 299 v.ShardKey = &x 300 if err != nil { 301 return err 302 } 303 304 } 305 case 8: 306 if field.Value.Type() == wire.TBinary { 307 var x string 308 x, err = field.Value.GetString(), error(nil) 309 v.RoutingKey = &x 310 if err != nil { 311 return err 312 } 313 314 } 315 case 9: 316 if field.Value.Type() == wire.TBinary { 317 var x string 318 x, err = field.Value.GetString(), error(nil) 319 v.RoutingDelegate = &x 320 if err != nil { 321 return err 322 } 323 324 } 325 case 10: 326 if field.Value.Type() == wire.TBinary { 327 v.Body, err = field.Value.GetBinary(), error(nil) 328 if err != nil { 329 return err 330 } 331 332 } 333 } 334 } 335 336 if !spanContextIsSet { 337 return errors.New("field SpanContext of RPC is required") 338 } 339 340 if !callerNameIsSet { 341 return errors.New("field CallerName of RPC is required") 342 } 343 344 if !serviceNameIsSet { 345 return errors.New("field ServiceName of RPC is required") 346 } 347 348 if !encodingIsSet { 349 return errors.New("field Encoding of RPC is required") 350 } 351 352 if !procedureIsSet { 353 return errors.New("field Procedure of RPC is required") 354 } 355 356 return nil 357 } 358 359 func _Map_String_String_Encode(val map[string]string, sw stream.Writer) error { 360 361 mh := stream.MapHeader{ 362 KeyType: wire.TBinary, 363 ValueType: wire.TBinary, 364 Length: len(val), 365 } 366 if err := sw.WriteMapBegin(mh); err != nil { 367 return err 368 } 369 370 for k, v := range val { 371 if err := sw.WriteString(k); err != nil { 372 return err 373 } 374 if err := sw.WriteString(v); err != nil { 375 return err 376 } 377 } 378 379 return sw.WriteMapEnd() 380 } 381 382 // Encode serializes a RPC struct directly into bytes, without going 383 // through an intermediary type. 384 // 385 // An error is returned if a RPC struct could not be encoded. 386 func (v *RPC) Encode(sw stream.Writer) error { 387 if err := sw.WriteStructBegin(); err != nil { 388 return err 389 } 390 391 if v.SpanContext == nil { 392 return errors.New("field SpanContext of RPC is required") 393 } 394 if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 1, Type: wire.TBinary}); err != nil { 395 return err 396 } 397 if err := sw.WriteBinary(v.SpanContext); err != nil { 398 return err 399 } 400 if err := sw.WriteFieldEnd(); err != nil { 401 return err 402 } 403 404 if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 2, Type: wire.TBinary}); err != nil { 405 return err 406 } 407 if err := sw.WriteString(v.CallerName); err != nil { 408 return err 409 } 410 if err := sw.WriteFieldEnd(); err != nil { 411 return err 412 } 413 414 if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 3, Type: wire.TBinary}); err != nil { 415 return err 416 } 417 if err := sw.WriteString(v.ServiceName); err != nil { 418 return err 419 } 420 if err := sw.WriteFieldEnd(); err != nil { 421 return err 422 } 423 424 if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 4, Type: wire.TBinary}); err != nil { 425 return err 426 } 427 if err := sw.WriteString(v.Encoding); err != nil { 428 return err 429 } 430 if err := sw.WriteFieldEnd(); err != nil { 431 return err 432 } 433 434 if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 5, Type: wire.TBinary}); err != nil { 435 return err 436 } 437 if err := sw.WriteString(v.Procedure); err != nil { 438 return err 439 } 440 if err := sw.WriteFieldEnd(); err != nil { 441 return err 442 } 443 444 if v.Headers != nil { 445 if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 6, Type: wire.TMap}); err != nil { 446 return err 447 } 448 if err := _Map_String_String_Encode(v.Headers, sw); err != nil { 449 return err 450 } 451 if err := sw.WriteFieldEnd(); err != nil { 452 return err 453 } 454 } 455 456 if v.ShardKey != nil { 457 if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 7, Type: wire.TBinary}); err != nil { 458 return err 459 } 460 if err := sw.WriteString(*(v.ShardKey)); err != nil { 461 return err 462 } 463 if err := sw.WriteFieldEnd(); err != nil { 464 return err 465 } 466 } 467 468 if v.RoutingKey != nil { 469 if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 8, Type: wire.TBinary}); err != nil { 470 return err 471 } 472 if err := sw.WriteString(*(v.RoutingKey)); err != nil { 473 return err 474 } 475 if err := sw.WriteFieldEnd(); err != nil { 476 return err 477 } 478 } 479 480 if v.RoutingDelegate != nil { 481 if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 9, Type: wire.TBinary}); err != nil { 482 return err 483 } 484 if err := sw.WriteString(*(v.RoutingDelegate)); err != nil { 485 return err 486 } 487 if err := sw.WriteFieldEnd(); err != nil { 488 return err 489 } 490 } 491 492 if v.Body != nil { 493 if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 10, Type: wire.TBinary}); err != nil { 494 return err 495 } 496 if err := sw.WriteBinary(v.Body); err != nil { 497 return err 498 } 499 if err := sw.WriteFieldEnd(); err != nil { 500 return err 501 } 502 } 503 504 return sw.WriteStructEnd() 505 } 506 507 func _Map_String_String_Decode(sr stream.Reader) (map[string]string, error) { 508 mh, err := sr.ReadMapBegin() 509 if err != nil { 510 return nil, err 511 } 512 513 if mh.KeyType != wire.TBinary || mh.ValueType != wire.TBinary { 514 for i := 0; i < mh.Length; i++ { 515 if err := sr.Skip(mh.KeyType); err != nil { 516 return nil, err 517 } 518 519 if err := sr.Skip(mh.ValueType); err != nil { 520 return nil, err 521 } 522 } 523 return nil, sr.ReadMapEnd() 524 } 525 526 o := make(map[string]string, mh.Length) 527 for i := 0; i < mh.Length; i++ { 528 k, err := sr.ReadString() 529 if err != nil { 530 return nil, err 531 } 532 533 v, err := sr.ReadString() 534 if err != nil { 535 return nil, err 536 } 537 538 o[k] = v 539 } 540 541 if err = sr.ReadMapEnd(); err != nil { 542 return nil, err 543 } 544 return o, err 545 } 546 547 // Decode deserializes a RPC struct directly from its Thrift-level 548 // representation, without going through an intemediary type. 549 // 550 // An error is returned if a RPC struct could not be generated from the wire 551 // representation. 552 func (v *RPC) Decode(sr stream.Reader) error { 553 554 spanContextIsSet := false 555 callerNameIsSet := false 556 serviceNameIsSet := false 557 encodingIsSet := false 558 procedureIsSet := false 559 560 if err := sr.ReadStructBegin(); err != nil { 561 return err 562 } 563 564 fh, ok, err := sr.ReadFieldBegin() 565 if err != nil { 566 return err 567 } 568 569 for ok { 570 switch { 571 case fh.ID == 1 && fh.Type == wire.TBinary: 572 v.SpanContext, err = sr.ReadBinary() 573 if err != nil { 574 return err 575 } 576 spanContextIsSet = true 577 case fh.ID == 2 && fh.Type == wire.TBinary: 578 v.CallerName, err = sr.ReadString() 579 if err != nil { 580 return err 581 } 582 callerNameIsSet = true 583 case fh.ID == 3 && fh.Type == wire.TBinary: 584 v.ServiceName, err = sr.ReadString() 585 if err != nil { 586 return err 587 } 588 serviceNameIsSet = true 589 case fh.ID == 4 && fh.Type == wire.TBinary: 590 v.Encoding, err = sr.ReadString() 591 if err != nil { 592 return err 593 } 594 encodingIsSet = true 595 case fh.ID == 5 && fh.Type == wire.TBinary: 596 v.Procedure, err = sr.ReadString() 597 if err != nil { 598 return err 599 } 600 procedureIsSet = true 601 case fh.ID == 6 && fh.Type == wire.TMap: 602 v.Headers, err = _Map_String_String_Decode(sr) 603 if err != nil { 604 return err 605 } 606 607 case fh.ID == 7 && fh.Type == wire.TBinary: 608 var x string 609 x, err = sr.ReadString() 610 v.ShardKey = &x 611 if err != nil { 612 return err 613 } 614 615 case fh.ID == 8 && fh.Type == wire.TBinary: 616 var x string 617 x, err = sr.ReadString() 618 v.RoutingKey = &x 619 if err != nil { 620 return err 621 } 622 623 case fh.ID == 9 && fh.Type == wire.TBinary: 624 var x string 625 x, err = sr.ReadString() 626 v.RoutingDelegate = &x 627 if err != nil { 628 return err 629 } 630 631 case fh.ID == 10 && fh.Type == wire.TBinary: 632 v.Body, err = sr.ReadBinary() 633 if err != nil { 634 return err 635 } 636 637 default: 638 if err := sr.Skip(fh.Type); err != nil { 639 return err 640 } 641 } 642 643 if err := sr.ReadFieldEnd(); err != nil { 644 return err 645 } 646 647 if fh, ok, err = sr.ReadFieldBegin(); err != nil { 648 return err 649 } 650 } 651 652 if err := sr.ReadStructEnd(); err != nil { 653 return err 654 } 655 656 if !spanContextIsSet { 657 return errors.New("field SpanContext of RPC is required") 658 } 659 660 if !callerNameIsSet { 661 return errors.New("field CallerName of RPC is required") 662 } 663 664 if !serviceNameIsSet { 665 return errors.New("field ServiceName of RPC is required") 666 } 667 668 if !encodingIsSet { 669 return errors.New("field Encoding of RPC is required") 670 } 671 672 if !procedureIsSet { 673 return errors.New("field Procedure of RPC is required") 674 } 675 676 return nil 677 } 678 679 // String returns a readable string representation of a RPC 680 // struct. 681 func (v *RPC) String() string { 682 if v == nil { 683 return "<nil>" 684 } 685 686 var fields [10]string 687 i := 0 688 fields[i] = fmt.Sprintf("SpanContext: %v", v.SpanContext) 689 i++ 690 fields[i] = fmt.Sprintf("CallerName: %v", v.CallerName) 691 i++ 692 fields[i] = fmt.Sprintf("ServiceName: %v", v.ServiceName) 693 i++ 694 fields[i] = fmt.Sprintf("Encoding: %v", v.Encoding) 695 i++ 696 fields[i] = fmt.Sprintf("Procedure: %v", v.Procedure) 697 i++ 698 if v.Headers != nil { 699 fields[i] = fmt.Sprintf("Headers: %v", v.Headers) 700 i++ 701 } 702 if v.ShardKey != nil { 703 fields[i] = fmt.Sprintf("ShardKey: %v", *(v.ShardKey)) 704 i++ 705 } 706 if v.RoutingKey != nil { 707 fields[i] = fmt.Sprintf("RoutingKey: %v", *(v.RoutingKey)) 708 i++ 709 } 710 if v.RoutingDelegate != nil { 711 fields[i] = fmt.Sprintf("RoutingDelegate: %v", *(v.RoutingDelegate)) 712 i++ 713 } 714 if v.Body != nil { 715 fields[i] = fmt.Sprintf("Body: %v", v.Body) 716 i++ 717 } 718 719 return fmt.Sprintf("RPC{%v}", strings.Join(fields[:i], ", ")) 720 } 721 722 func _Map_String_String_Equals(lhs, rhs map[string]string) bool { 723 if len(lhs) != len(rhs) { 724 return false 725 } 726 727 for lk, lv := range lhs { 728 rv, ok := rhs[lk] 729 if !ok { 730 return false 731 } 732 if !(lv == rv) { 733 return false 734 } 735 } 736 return true 737 } 738 739 func _String_EqualsPtr(lhs, rhs *string) bool { 740 if lhs != nil && rhs != nil { 741 742 x := *lhs 743 y := *rhs 744 return (x == y) 745 } 746 return lhs == nil && rhs == nil 747 } 748 749 // Equals returns true if all the fields of this RPC match the 750 // provided RPC. 751 // 752 // This function performs a deep comparison. 753 func (v *RPC) Equals(rhs *RPC) bool { 754 if v == nil { 755 return rhs == nil 756 } else if rhs == nil { 757 return false 758 } 759 if !bytes.Equal(v.SpanContext, rhs.SpanContext) { 760 return false 761 } 762 if !(v.CallerName == rhs.CallerName) { 763 return false 764 } 765 if !(v.ServiceName == rhs.ServiceName) { 766 return false 767 } 768 if !(v.Encoding == rhs.Encoding) { 769 return false 770 } 771 if !(v.Procedure == rhs.Procedure) { 772 return false 773 } 774 if !((v.Headers == nil && rhs.Headers == nil) || (v.Headers != nil && rhs.Headers != nil && _Map_String_String_Equals(v.Headers, rhs.Headers))) { 775 return false 776 } 777 if !_String_EqualsPtr(v.ShardKey, rhs.ShardKey) { 778 return false 779 } 780 if !_String_EqualsPtr(v.RoutingKey, rhs.RoutingKey) { 781 return false 782 } 783 if !_String_EqualsPtr(v.RoutingDelegate, rhs.RoutingDelegate) { 784 return false 785 } 786 if !((v.Body == nil && rhs.Body == nil) || (v.Body != nil && rhs.Body != nil && bytes.Equal(v.Body, rhs.Body))) { 787 return false 788 } 789 790 return true 791 } 792 793 type _Map_String_String_Zapper map[string]string 794 795 // MarshalLogObject implements zapcore.ObjectMarshaler, enabling 796 // fast logging of _Map_String_String_Zapper. 797 func (m _Map_String_String_Zapper) MarshalLogObject(enc zapcore.ObjectEncoder) (err error) { 798 for k, v := range m { 799 enc.AddString((string)(k), v) 800 } 801 return err 802 } 803 804 // MarshalLogObject implements zapcore.ObjectMarshaler, enabling 805 // fast logging of RPC. 806 func (v *RPC) MarshalLogObject(enc zapcore.ObjectEncoder) (err error) { 807 if v == nil { 808 return nil 809 } 810 enc.AddString("spanContext", base64.StdEncoding.EncodeToString(v.SpanContext)) 811 enc.AddString("callerName", v.CallerName) 812 enc.AddString("serviceName", v.ServiceName) 813 enc.AddString("encoding", v.Encoding) 814 enc.AddString("procedure", v.Procedure) 815 if v.Headers != nil { 816 err = multierr.Append(err, enc.AddObject("headers", (_Map_String_String_Zapper)(v.Headers))) 817 } 818 if v.ShardKey != nil { 819 enc.AddString("shardKey", *v.ShardKey) 820 } 821 if v.RoutingKey != nil { 822 enc.AddString("routingKey", *v.RoutingKey) 823 } 824 if v.RoutingDelegate != nil { 825 enc.AddString("routingDelegate", *v.RoutingDelegate) 826 } 827 if v.Body != nil { 828 enc.AddString("body", base64.StdEncoding.EncodeToString(v.Body)) 829 } 830 return err 831 } 832 833 // GetSpanContext returns the value of SpanContext if it is set or its 834 // zero value if it is unset. 835 func (v *RPC) GetSpanContext() (o []byte) { 836 if v != nil { 837 o = v.SpanContext 838 } 839 return 840 } 841 842 // IsSetSpanContext returns true if SpanContext is not nil. 843 func (v *RPC) IsSetSpanContext() bool { 844 return v != nil && v.SpanContext != nil 845 } 846 847 // GetCallerName returns the value of CallerName if it is set or its 848 // zero value if it is unset. 849 func (v *RPC) GetCallerName() (o string) { 850 if v != nil { 851 o = v.CallerName 852 } 853 return 854 } 855 856 // GetServiceName returns the value of ServiceName if it is set or its 857 // zero value if it is unset. 858 func (v *RPC) GetServiceName() (o string) { 859 if v != nil { 860 o = v.ServiceName 861 } 862 return 863 } 864 865 // GetEncoding returns the value of Encoding if it is set or its 866 // zero value if it is unset. 867 func (v *RPC) GetEncoding() (o string) { 868 if v != nil { 869 o = v.Encoding 870 } 871 return 872 } 873 874 // GetProcedure returns the value of Procedure if it is set or its 875 // zero value if it is unset. 876 func (v *RPC) GetProcedure() (o string) { 877 if v != nil { 878 o = v.Procedure 879 } 880 return 881 } 882 883 // GetHeaders returns the value of Headers if it is set or its 884 // zero value if it is unset. 885 func (v *RPC) GetHeaders() (o map[string]string) { 886 if v != nil && v.Headers != nil { 887 return v.Headers 888 } 889 890 return 891 } 892 893 // IsSetHeaders returns true if Headers is not nil. 894 func (v *RPC) IsSetHeaders() bool { 895 return v != nil && v.Headers != nil 896 } 897 898 // GetShardKey returns the value of ShardKey if it is set or its 899 // zero value if it is unset. 900 func (v *RPC) GetShardKey() (o string) { 901 if v != nil && v.ShardKey != nil { 902 return *v.ShardKey 903 } 904 905 return 906 } 907 908 // IsSetShardKey returns true if ShardKey is not nil. 909 func (v *RPC) IsSetShardKey() bool { 910 return v != nil && v.ShardKey != nil 911 } 912 913 // GetRoutingKey returns the value of RoutingKey if it is set or its 914 // zero value if it is unset. 915 func (v *RPC) GetRoutingKey() (o string) { 916 if v != nil && v.RoutingKey != nil { 917 return *v.RoutingKey 918 } 919 920 return 921 } 922 923 // IsSetRoutingKey returns true if RoutingKey is not nil. 924 func (v *RPC) IsSetRoutingKey() bool { 925 return v != nil && v.RoutingKey != nil 926 } 927 928 // GetRoutingDelegate returns the value of RoutingDelegate if it is set or its 929 // zero value if it is unset. 930 func (v *RPC) GetRoutingDelegate() (o string) { 931 if v != nil && v.RoutingDelegate != nil { 932 return *v.RoutingDelegate 933 } 934 935 return 936 } 937 938 // IsSetRoutingDelegate returns true if RoutingDelegate is not nil. 939 func (v *RPC) IsSetRoutingDelegate() bool { 940 return v != nil && v.RoutingDelegate != nil 941 } 942 943 // GetBody returns the value of Body if it is set or its 944 // zero value if it is unset. 945 func (v *RPC) GetBody() (o []byte) { 946 if v != nil && v.Body != nil { 947 return v.Body 948 } 949 950 return 951 } 952 953 // IsSetBody returns true if Body is not nil. 954 func (v *RPC) IsSetBody() bool { 955 return v != nil && v.Body != nil 956 } 957 958 // ThriftModule represents the IDL file used to generate this package. 959 var ThriftModule = &thriftreflect.ThriftModule{ 960 Name: "internal", 961 Package: "go.uber.org/yarpc/serialize/internal", 962 FilePath: "internal.thrift", 963 SHA1: "c60c5759efeaa1545aebd396d371509bc561b153", 964 Raw: rawIDL, 965 } 966 967 const rawIDL = "struct RPC {\n\t1: required binary spanContext\n\n\t2: required string callerName\n\t3: required string serviceName\n\t4: required string encoding\n\t5: required string procedure\n\n\t6: optional map<string,string> headers\n\t7: optional string shardKey\n\t8: optional string routingKey\n\t9: optional string routingDelegate\n\t10: optional binary body\n}\n"