1// Code generated by Thrift Compiler (0.14.1). DO NOT EDIT.
2
3package zipkincore
4
5import(
6	"bytes"
7	"context"
8	"database/sql/driver"
9	"errors"
10	"fmt"
11	"time"
12	"github.com/uber/jaeger-client-go/thrift"
13)
14
15// (needed to ensure safety because of naive import list construction.)
16var _ = thrift.ZERO
17var _ = fmt.Printf
18var _ = context.Background
19var _ = time.Now
20var _ = bytes.Equal
21
22type AnnotationType int64
23const (
24  AnnotationType_BOOL AnnotationType = 0
25  AnnotationType_BYTES AnnotationType = 1
26  AnnotationType_I16 AnnotationType = 2
27  AnnotationType_I32 AnnotationType = 3
28  AnnotationType_I64 AnnotationType = 4
29  AnnotationType_DOUBLE AnnotationType = 5
30  AnnotationType_STRING AnnotationType = 6
31)
32
33func (p AnnotationType) String() string {
34  switch p {
35  case AnnotationType_BOOL: return "BOOL"
36  case AnnotationType_BYTES: return "BYTES"
37  case AnnotationType_I16: return "I16"
38  case AnnotationType_I32: return "I32"
39  case AnnotationType_I64: return "I64"
40  case AnnotationType_DOUBLE: return "DOUBLE"
41  case AnnotationType_STRING: return "STRING"
42  }
43  return "<UNSET>"
44}
45
46func AnnotationTypeFromString(s string) (AnnotationType, error) {
47  switch s {
48  case "BOOL": return AnnotationType_BOOL, nil
49  case "BYTES": return AnnotationType_BYTES, nil
50  case "I16": return AnnotationType_I16, nil
51  case "I32": return AnnotationType_I32, nil
52  case "I64": return AnnotationType_I64, nil
53  case "DOUBLE": return AnnotationType_DOUBLE, nil
54  case "STRING": return AnnotationType_STRING, nil
55  }
56  return AnnotationType(0), fmt.Errorf("not a valid AnnotationType string")
57}
58
59
60func AnnotationTypePtr(v AnnotationType) *AnnotationType { return &v }
61
62func (p AnnotationType) MarshalText() ([]byte, error) {
63return []byte(p.String()), nil
64}
65
66func (p *AnnotationType) UnmarshalText(text []byte) error {
67q, err := AnnotationTypeFromString(string(text))
68if (err != nil) {
69return err
70}
71*p = q
72return nil
73}
74
75func (p *AnnotationType) Scan(value interface{}) error {
76v, ok := value.(int64)
77if !ok {
78return errors.New("Scan value is not int64")
79}
80*p = AnnotationType(v)
81return nil
82}
83
84func (p * AnnotationType) Value() (driver.Value, error) {
85  if p == nil {
86    return nil, nil
87  }
88return int64(*p), nil
89}
90// Indicates the network context of a service recording an annotation with two
91// exceptions.
92//
93// When a BinaryAnnotation, and key is CLIENT_ADDR or SERVER_ADDR,
94// the endpoint indicates the source or destination of an RPC. This exception
95// allows zipkin to display network context of uninstrumented services, or
96// clients such as web browsers.
97//
98// Attributes:
99//  - Ipv4: IPv4 host address packed into 4 bytes.
100//
101// Ex for the ip 1.2.3.4, it would be (1 << 24) | (2 << 16) | (3 << 8) | 4
102//  - Port: IPv4 port
103//
104// Note: this is to be treated as an unsigned integer, so watch for negatives.
105//
106// Conventionally, when the port isn't known, port = 0.
107//  - ServiceName: Service name in lowercase, such as "memcache" or "zipkin-web"
108//
109// Conventionally, when the service name isn't known, service_name = "unknown".
110//  - Ipv6: IPv6 host address packed into 16 bytes. Ex Inet6Address.getBytes()
111type Endpoint struct {
112  Ipv4 int32 `thrift:"ipv4,1" db:"ipv4" json:"ipv4"`
113  Port int16 `thrift:"port,2" db:"port" json:"port"`
114  ServiceName string `thrift:"service_name,3" db:"service_name" json:"service_name"`
115  Ipv6 []byte `thrift:"ipv6,4" db:"ipv6" json:"ipv6,omitempty"`
116}
117
118func NewEndpoint() *Endpoint {
119  return &Endpoint{}
120}
121
122
123func (p *Endpoint) GetIpv4() int32 {
124  return p.Ipv4
125}
126
127func (p *Endpoint) GetPort() int16 {
128  return p.Port
129}
130
131func (p *Endpoint) GetServiceName() string {
132  return p.ServiceName
133}
134var Endpoint_Ipv6_DEFAULT []byte
135
136func (p *Endpoint) GetIpv6() []byte {
137  return p.Ipv6
138}
139func (p *Endpoint) IsSetIpv6() bool {
140  return p.Ipv6 != nil
141}
142
143func (p *Endpoint) Read(ctx context.Context, iprot thrift.TProtocol) error {
144  if _, err := iprot.ReadStructBegin(ctx); err != nil {
145    return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
146  }
147
148
149  for {
150    _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin(ctx)
151    if err != nil {
152      return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
153    }
154    if fieldTypeId == thrift.STOP { break; }
155    switch fieldId {
156    case 1:
157      if fieldTypeId == thrift.I32 {
158        if err := p.ReadField1(ctx, iprot); err != nil {
159          return err
160        }
161      } else {
162        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
163          return err
164        }
165      }
166    case 2:
167      if fieldTypeId == thrift.I16 {
168        if err := p.ReadField2(ctx, iprot); err != nil {
169          return err
170        }
171      } else {
172        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
173          return err
174        }
175      }
176    case 3:
177      if fieldTypeId == thrift.STRING {
178        if err := p.ReadField3(ctx, iprot); err != nil {
179          return err
180        }
181      } else {
182        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
183          return err
184        }
185      }
186    case 4:
187      if fieldTypeId == thrift.STRING {
188        if err := p.ReadField4(ctx, iprot); err != nil {
189          return err
190        }
191      } else {
192        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
193          return err
194        }
195      }
196    default:
197      if err := iprot.Skip(ctx, fieldTypeId); err != nil {
198        return err
199      }
200    }
201    if err := iprot.ReadFieldEnd(ctx); err != nil {
202      return err
203    }
204  }
205  if err := iprot.ReadStructEnd(ctx); err != nil {
206    return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
207  }
208  return nil
209}
210
211func (p *Endpoint)  ReadField1(ctx context.Context, iprot thrift.TProtocol) error {
212  if v, err := iprot.ReadI32(ctx); err != nil {
213  return thrift.PrependError("error reading field 1: ", err)
214} else {
215  p.Ipv4 = v
216}
217  return nil
218}
219
220func (p *Endpoint)  ReadField2(ctx context.Context, iprot thrift.TProtocol) error {
221  if v, err := iprot.ReadI16(ctx); err != nil {
222  return thrift.PrependError("error reading field 2: ", err)
223} else {
224  p.Port = v
225}
226  return nil
227}
228
229func (p *Endpoint)  ReadField3(ctx context.Context, iprot thrift.TProtocol) error {
230  if v, err := iprot.ReadString(ctx); err != nil {
231  return thrift.PrependError("error reading field 3: ", err)
232} else {
233  p.ServiceName = v
234}
235  return nil
236}
237
238func (p *Endpoint)  ReadField4(ctx context.Context, iprot thrift.TProtocol) error {
239  if v, err := iprot.ReadBinary(ctx); err != nil {
240  return thrift.PrependError("error reading field 4: ", err)
241} else {
242  p.Ipv6 = v
243}
244  return nil
245}
246
247func (p *Endpoint) Write(ctx context.Context, oprot thrift.TProtocol) error {
248  if err := oprot.WriteStructBegin(ctx, "Endpoint"); err != nil {
249    return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) }
250  if p != nil {
251    if err := p.writeField1(ctx, oprot); err != nil { return err }
252    if err := p.writeField2(ctx, oprot); err != nil { return err }
253    if err := p.writeField3(ctx, oprot); err != nil { return err }
254    if err := p.writeField4(ctx, oprot); err != nil { return err }
255  }
256  if err := oprot.WriteFieldStop(ctx); err != nil {
257    return thrift.PrependError("write field stop error: ", err) }
258  if err := oprot.WriteStructEnd(ctx); err != nil {
259    return thrift.PrependError("write struct stop error: ", err) }
260  return nil
261}
262
263func (p *Endpoint) writeField1(ctx context.Context, oprot thrift.TProtocol) (err error) {
264  if err := oprot.WriteFieldBegin(ctx, "ipv4", thrift.I32, 1); err != nil {
265    return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:ipv4: ", p), err) }
266  if err := oprot.WriteI32(ctx, int32(p.Ipv4)); err != nil {
267  return thrift.PrependError(fmt.Sprintf("%T.ipv4 (1) field write error: ", p), err) }
268  if err := oprot.WriteFieldEnd(ctx); err != nil {
269    return thrift.PrependError(fmt.Sprintf("%T write field end error 1:ipv4: ", p), err) }
270  return err
271}
272
273func (p *Endpoint) writeField2(ctx context.Context, oprot thrift.TProtocol) (err error) {
274  if err := oprot.WriteFieldBegin(ctx, "port", thrift.I16, 2); err != nil {
275    return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:port: ", p), err) }
276  if err := oprot.WriteI16(ctx, int16(p.Port)); err != nil {
277  return thrift.PrependError(fmt.Sprintf("%T.port (2) field write error: ", p), err) }
278  if err := oprot.WriteFieldEnd(ctx); err != nil {
279    return thrift.PrependError(fmt.Sprintf("%T write field end error 2:port: ", p), err) }
280  return err
281}
282
283func (p *Endpoint) writeField3(ctx context.Context, oprot thrift.TProtocol) (err error) {
284  if err := oprot.WriteFieldBegin(ctx, "service_name", thrift.STRING, 3); err != nil {
285    return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:service_name: ", p), err) }
286  if err := oprot.WriteString(ctx, string(p.ServiceName)); err != nil {
287  return thrift.PrependError(fmt.Sprintf("%T.service_name (3) field write error: ", p), err) }
288  if err := oprot.WriteFieldEnd(ctx); err != nil {
289    return thrift.PrependError(fmt.Sprintf("%T write field end error 3:service_name: ", p), err) }
290  return err
291}
292
293func (p *Endpoint) writeField4(ctx context.Context, oprot thrift.TProtocol) (err error) {
294  if p.IsSetIpv6() {
295    if err := oprot.WriteFieldBegin(ctx, "ipv6", thrift.STRING, 4); err != nil {
296      return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:ipv6: ", p), err) }
297    if err := oprot.WriteBinary(ctx, p.Ipv6); err != nil {
298    return thrift.PrependError(fmt.Sprintf("%T.ipv6 (4) field write error: ", p), err) }
299    if err := oprot.WriteFieldEnd(ctx); err != nil {
300      return thrift.PrependError(fmt.Sprintf("%T write field end error 4:ipv6: ", p), err) }
301  }
302  return err
303}
304
305func (p *Endpoint) Equals(other *Endpoint) bool {
306  if p == other {
307    return true
308  } else if p == nil || other == nil {
309    return false
310  }
311  if p.Ipv4 != other.Ipv4 { return false }
312  if p.Port != other.Port { return false }
313  if p.ServiceName != other.ServiceName { return false }
314  if bytes.Compare(p.Ipv6, other.Ipv6) != 0 { return false }
315  return true
316}
317
318func (p *Endpoint) String() string {
319  if p == nil {
320    return "<nil>"
321  }
322  return fmt.Sprintf("Endpoint(%+v)", *p)
323}
324
325// An annotation is similar to a log statement. It includes a host field which
326// allows these events to be attributed properly, and also aggregatable.
327//
328// Attributes:
329//  - Timestamp: Microseconds from epoch.
330//
331// This value should use the most precise value possible. For example,
332// gettimeofday or syncing nanoTime against a tick of currentTimeMillis.
333//  - Value
334//  - Host: Always the host that recorded the event. By specifying the host you allow
335// rollup of all events (such as client requests to a service) by IP address.
336type Annotation struct {
337  Timestamp int64 `thrift:"timestamp,1" db:"timestamp" json:"timestamp"`
338  Value string `thrift:"value,2" db:"value" json:"value"`
339  Host *Endpoint `thrift:"host,3" db:"host" json:"host,omitempty"`
340}
341
342func NewAnnotation() *Annotation {
343  return &Annotation{}
344}
345
346
347func (p *Annotation) GetTimestamp() int64 {
348  return p.Timestamp
349}
350
351func (p *Annotation) GetValue() string {
352  return p.Value
353}
354var Annotation_Host_DEFAULT *Endpoint
355func (p *Annotation) GetHost() *Endpoint {
356  if !p.IsSetHost() {
357    return Annotation_Host_DEFAULT
358  }
359return p.Host
360}
361func (p *Annotation) IsSetHost() bool {
362  return p.Host != nil
363}
364
365func (p *Annotation) Read(ctx context.Context, iprot thrift.TProtocol) error {
366  if _, err := iprot.ReadStructBegin(ctx); err != nil {
367    return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
368  }
369
370
371  for {
372    _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin(ctx)
373    if err != nil {
374      return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
375    }
376    if fieldTypeId == thrift.STOP { break; }
377    switch fieldId {
378    case 1:
379      if fieldTypeId == thrift.I64 {
380        if err := p.ReadField1(ctx, iprot); err != nil {
381          return err
382        }
383      } else {
384        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
385          return err
386        }
387      }
388    case 2:
389      if fieldTypeId == thrift.STRING {
390        if err := p.ReadField2(ctx, iprot); err != nil {
391          return err
392        }
393      } else {
394        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
395          return err
396        }
397      }
398    case 3:
399      if fieldTypeId == thrift.STRUCT {
400        if err := p.ReadField3(ctx, iprot); err != nil {
401          return err
402        }
403      } else {
404        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
405          return err
406        }
407      }
408    default:
409      if err := iprot.Skip(ctx, fieldTypeId); err != nil {
410        return err
411      }
412    }
413    if err := iprot.ReadFieldEnd(ctx); err != nil {
414      return err
415    }
416  }
417  if err := iprot.ReadStructEnd(ctx); err != nil {
418    return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
419  }
420  return nil
421}
422
423func (p *Annotation)  ReadField1(ctx context.Context, iprot thrift.TProtocol) error {
424  if v, err := iprot.ReadI64(ctx); err != nil {
425  return thrift.PrependError("error reading field 1: ", err)
426} else {
427  p.Timestamp = v
428}
429  return nil
430}
431
432func (p *Annotation)  ReadField2(ctx context.Context, iprot thrift.TProtocol) error {
433  if v, err := iprot.ReadString(ctx); err != nil {
434  return thrift.PrependError("error reading field 2: ", err)
435} else {
436  p.Value = v
437}
438  return nil
439}
440
441func (p *Annotation)  ReadField3(ctx context.Context, iprot thrift.TProtocol) error {
442  p.Host = &Endpoint{}
443  if err := p.Host.Read(ctx, iprot); err != nil {
444    return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Host), err)
445  }
446  return nil
447}
448
449func (p *Annotation) Write(ctx context.Context, oprot thrift.TProtocol) error {
450  if err := oprot.WriteStructBegin(ctx, "Annotation"); err != nil {
451    return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) }
452  if p != nil {
453    if err := p.writeField1(ctx, oprot); err != nil { return err }
454    if err := p.writeField2(ctx, oprot); err != nil { return err }
455    if err := p.writeField3(ctx, oprot); err != nil { return err }
456  }
457  if err := oprot.WriteFieldStop(ctx); err != nil {
458    return thrift.PrependError("write field stop error: ", err) }
459  if err := oprot.WriteStructEnd(ctx); err != nil {
460    return thrift.PrependError("write struct stop error: ", err) }
461  return nil
462}
463
464func (p *Annotation) writeField1(ctx context.Context, oprot thrift.TProtocol) (err error) {
465  if err := oprot.WriteFieldBegin(ctx, "timestamp", thrift.I64, 1); err != nil {
466    return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:timestamp: ", p), err) }
467  if err := oprot.WriteI64(ctx, int64(p.Timestamp)); err != nil {
468  return thrift.PrependError(fmt.Sprintf("%T.timestamp (1) field write error: ", p), err) }
469  if err := oprot.WriteFieldEnd(ctx); err != nil {
470    return thrift.PrependError(fmt.Sprintf("%T write field end error 1:timestamp: ", p), err) }
471  return err
472}
473
474func (p *Annotation) writeField2(ctx context.Context, oprot thrift.TProtocol) (err error) {
475  if err := oprot.WriteFieldBegin(ctx, "value", thrift.STRING, 2); err != nil {
476    return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:value: ", p), err) }
477  if err := oprot.WriteString(ctx, string(p.Value)); err != nil {
478  return thrift.PrependError(fmt.Sprintf("%T.value (2) field write error: ", p), err) }
479  if err := oprot.WriteFieldEnd(ctx); err != nil {
480    return thrift.PrependError(fmt.Sprintf("%T write field end error 2:value: ", p), err) }
481  return err
482}
483
484func (p *Annotation) writeField3(ctx context.Context, oprot thrift.TProtocol) (err error) {
485  if p.IsSetHost() {
486    if err := oprot.WriteFieldBegin(ctx, "host", thrift.STRUCT, 3); err != nil {
487      return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:host: ", p), err) }
488    if err := p.Host.Write(ctx, oprot); err != nil {
489      return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Host), err)
490    }
491    if err := oprot.WriteFieldEnd(ctx); err != nil {
492      return thrift.PrependError(fmt.Sprintf("%T write field end error 3:host: ", p), err) }
493  }
494  return err
495}
496
497func (p *Annotation) Equals(other *Annotation) bool {
498  if p == other {
499    return true
500  } else if p == nil || other == nil {
501    return false
502  }
503  if p.Timestamp != other.Timestamp { return false }
504  if p.Value != other.Value { return false }
505  if !p.Host.Equals(other.Host) { return false }
506  return true
507}
508
509func (p *Annotation) String() string {
510  if p == nil {
511    return "<nil>"
512  }
513  return fmt.Sprintf("Annotation(%+v)", *p)
514}
515
516// Binary annotations are tags applied to a Span to give it context. For
517// example, a binary annotation of "http.uri" could the path to a resource in a
518// RPC call.
519//
520// Binary annotations of type STRING are always queryable, though more a
521// historical implementation detail than a structural concern.
522//
523// Binary annotations can repeat, and vary on the host. Similar to Annotation,
524// the host indicates who logged the event. This allows you to tell the
525// difference between the client and server side of the same key. For example,
526// the key "http.uri" might be different on the client and server side due to
527// rewriting, like "/api/v1/myresource" vs "/myresource. Via the host field,
528// you can see the different points of view, which often help in debugging.
529//
530// Attributes:
531//  - Key
532//  - Value
533//  - AnnotationType
534//  - Host: The host that recorded tag, which allows you to differentiate between
535// multiple tags with the same key. There are two exceptions to this.
536//
537// When the key is CLIENT_ADDR or SERVER_ADDR, host indicates the source or
538// destination of an RPC. This exception allows zipkin to display network
539// context of uninstrumented services, or clients such as web browsers.
540type BinaryAnnotation struct {
541  Key string `thrift:"key,1" db:"key" json:"key"`
542  Value []byte `thrift:"value,2" db:"value" json:"value"`
543  AnnotationType AnnotationType `thrift:"annotation_type,3" db:"annotation_type" json:"annotation_type"`
544  Host *Endpoint `thrift:"host,4" db:"host" json:"host,omitempty"`
545}
546
547func NewBinaryAnnotation() *BinaryAnnotation {
548  return &BinaryAnnotation{}
549}
550
551
552func (p *BinaryAnnotation) GetKey() string {
553  return p.Key
554}
555
556func (p *BinaryAnnotation) GetValue() []byte {
557  return p.Value
558}
559
560func (p *BinaryAnnotation) GetAnnotationType() AnnotationType {
561  return p.AnnotationType
562}
563var BinaryAnnotation_Host_DEFAULT *Endpoint
564func (p *BinaryAnnotation) GetHost() *Endpoint {
565  if !p.IsSetHost() {
566    return BinaryAnnotation_Host_DEFAULT
567  }
568return p.Host
569}
570func (p *BinaryAnnotation) IsSetHost() bool {
571  return p.Host != nil
572}
573
574func (p *BinaryAnnotation) Read(ctx context.Context, iprot thrift.TProtocol) error {
575  if _, err := iprot.ReadStructBegin(ctx); err != nil {
576    return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
577  }
578
579
580  for {
581    _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin(ctx)
582    if err != nil {
583      return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
584    }
585    if fieldTypeId == thrift.STOP { break; }
586    switch fieldId {
587    case 1:
588      if fieldTypeId == thrift.STRING {
589        if err := p.ReadField1(ctx, iprot); err != nil {
590          return err
591        }
592      } else {
593        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
594          return err
595        }
596      }
597    case 2:
598      if fieldTypeId == thrift.STRING {
599        if err := p.ReadField2(ctx, iprot); err != nil {
600          return err
601        }
602      } else {
603        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
604          return err
605        }
606      }
607    case 3:
608      if fieldTypeId == thrift.I32 {
609        if err := p.ReadField3(ctx, iprot); err != nil {
610          return err
611        }
612      } else {
613        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
614          return err
615        }
616      }
617    case 4:
618      if fieldTypeId == thrift.STRUCT {
619        if err := p.ReadField4(ctx, iprot); err != nil {
620          return err
621        }
622      } else {
623        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
624          return err
625        }
626      }
627    default:
628      if err := iprot.Skip(ctx, fieldTypeId); err != nil {
629        return err
630      }
631    }
632    if err := iprot.ReadFieldEnd(ctx); err != nil {
633      return err
634    }
635  }
636  if err := iprot.ReadStructEnd(ctx); err != nil {
637    return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
638  }
639  return nil
640}
641
642func (p *BinaryAnnotation)  ReadField1(ctx context.Context, iprot thrift.TProtocol) error {
643  if v, err := iprot.ReadString(ctx); err != nil {
644  return thrift.PrependError("error reading field 1: ", err)
645} else {
646  p.Key = v
647}
648  return nil
649}
650
651func (p *BinaryAnnotation)  ReadField2(ctx context.Context, iprot thrift.TProtocol) error {
652  if v, err := iprot.ReadBinary(ctx); err != nil {
653  return thrift.PrependError("error reading field 2: ", err)
654} else {
655  p.Value = v
656}
657  return nil
658}
659
660func (p *BinaryAnnotation)  ReadField3(ctx context.Context, iprot thrift.TProtocol) error {
661  if v, err := iprot.ReadI32(ctx); err != nil {
662  return thrift.PrependError("error reading field 3: ", err)
663} else {
664  temp := AnnotationType(v)
665  p.AnnotationType = temp
666}
667  return nil
668}
669
670func (p *BinaryAnnotation)  ReadField4(ctx context.Context, iprot thrift.TProtocol) error {
671  p.Host = &Endpoint{}
672  if err := p.Host.Read(ctx, iprot); err != nil {
673    return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Host), err)
674  }
675  return nil
676}
677
678func (p *BinaryAnnotation) Write(ctx context.Context, oprot thrift.TProtocol) error {
679  if err := oprot.WriteStructBegin(ctx, "BinaryAnnotation"); err != nil {
680    return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) }
681  if p != nil {
682    if err := p.writeField1(ctx, oprot); err != nil { return err }
683    if err := p.writeField2(ctx, oprot); err != nil { return err }
684    if err := p.writeField3(ctx, oprot); err != nil { return err }
685    if err := p.writeField4(ctx, oprot); err != nil { return err }
686  }
687  if err := oprot.WriteFieldStop(ctx); err != nil {
688    return thrift.PrependError("write field stop error: ", err) }
689  if err := oprot.WriteStructEnd(ctx); err != nil {
690    return thrift.PrependError("write struct stop error: ", err) }
691  return nil
692}
693
694func (p *BinaryAnnotation) writeField1(ctx context.Context, oprot thrift.TProtocol) (err error) {
695  if err := oprot.WriteFieldBegin(ctx, "key", thrift.STRING, 1); err != nil {
696    return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:key: ", p), err) }
697  if err := oprot.WriteString(ctx, string(p.Key)); err != nil {
698  return thrift.PrependError(fmt.Sprintf("%T.key (1) field write error: ", p), err) }
699  if err := oprot.WriteFieldEnd(ctx); err != nil {
700    return thrift.PrependError(fmt.Sprintf("%T write field end error 1:key: ", p), err) }
701  return err
702}
703
704func (p *BinaryAnnotation) writeField2(ctx context.Context, oprot thrift.TProtocol) (err error) {
705  if err := oprot.WriteFieldBegin(ctx, "value", thrift.STRING, 2); err != nil {
706    return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:value: ", p), err) }
707  if err := oprot.WriteBinary(ctx, p.Value); err != nil {
708  return thrift.PrependError(fmt.Sprintf("%T.value (2) field write error: ", p), err) }
709  if err := oprot.WriteFieldEnd(ctx); err != nil {
710    return thrift.PrependError(fmt.Sprintf("%T write field end error 2:value: ", p), err) }
711  return err
712}
713
714func (p *BinaryAnnotation) writeField3(ctx context.Context, oprot thrift.TProtocol) (err error) {
715  if err := oprot.WriteFieldBegin(ctx, "annotation_type", thrift.I32, 3); err != nil {
716    return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:annotation_type: ", p), err) }
717  if err := oprot.WriteI32(ctx, int32(p.AnnotationType)); err != nil {
718  return thrift.PrependError(fmt.Sprintf("%T.annotation_type (3) field write error: ", p), err) }
719  if err := oprot.WriteFieldEnd(ctx); err != nil {
720    return thrift.PrependError(fmt.Sprintf("%T write field end error 3:annotation_type: ", p), err) }
721  return err
722}
723
724func (p *BinaryAnnotation) writeField4(ctx context.Context, oprot thrift.TProtocol) (err error) {
725  if p.IsSetHost() {
726    if err := oprot.WriteFieldBegin(ctx, "host", thrift.STRUCT, 4); err != nil {
727      return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:host: ", p), err) }
728    if err := p.Host.Write(ctx, oprot); err != nil {
729      return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Host), err)
730    }
731    if err := oprot.WriteFieldEnd(ctx); err != nil {
732      return thrift.PrependError(fmt.Sprintf("%T write field end error 4:host: ", p), err) }
733  }
734  return err
735}
736
737func (p *BinaryAnnotation) Equals(other *BinaryAnnotation) bool {
738  if p == other {
739    return true
740  } else if p == nil || other == nil {
741    return false
742  }
743  if p.Key != other.Key { return false }
744  if bytes.Compare(p.Value, other.Value) != 0 { return false }
745  if p.AnnotationType != other.AnnotationType { return false }
746  if !p.Host.Equals(other.Host) { return false }
747  return true
748}
749
750func (p *BinaryAnnotation) String() string {
751  if p == nil {
752    return "<nil>"
753  }
754  return fmt.Sprintf("BinaryAnnotation(%+v)", *p)
755}
756
757// A trace is a series of spans (often RPC calls) which form a latency tree.
758//
759// The root span is where trace_id = id and parent_id = Nil. The root span is
760// usually the longest interval in the trace, starting with a SERVER_RECV
761// annotation and ending with a SERVER_SEND.
762//
763// Attributes:
764//  - TraceID
765//  - Name: Span name in lowercase, rpc method for example
766//
767// Conventionally, when the span name isn't known, name = "unknown".
768//  - ID
769//  - ParentID
770//  - Annotations
771//  - BinaryAnnotations
772//  - Debug
773//  - Timestamp: Microseconds from epoch of the creation of this span.
774//
775// This value should be set directly by instrumentation, using the most
776// precise value possible. For example, gettimeofday or syncing nanoTime
777// against a tick of currentTimeMillis.
778//
779// For compatibility with instrumentation that precede this field, collectors
780// or span stores can derive this via Annotation.timestamp.
781// For example, SERVER_RECV.timestamp or CLIENT_SEND.timestamp.
782//
783// This field is optional for compatibility with old data: first-party span
784// stores are expected to support this at time of introduction.
785//  - Duration: Measurement of duration in microseconds, used to support queries.
786//
787// This value should be set directly, where possible. Doing so encourages
788// precise measurement decoupled from problems of clocks, such as skew or NTP
789// updates causing time to move backwards.
790//
791// For compatibility with instrumentation that precede this field, collectors
792// or span stores can derive this by subtracting Annotation.timestamp.
793// For example, SERVER_SEND.timestamp - SERVER_RECV.timestamp.
794//
795// If this field is persisted as unset, zipkin will continue to work, except
796// duration query support will be implementation-specific. Similarly, setting
797// this field non-atomically is implementation-specific.
798//
799// This field is i64 vs i32 to support spans longer than 35 minutes.
800//  - TraceIDHigh: Optional unique 8-byte additional identifier for a trace. If non zero, this
801// means the trace uses 128 bit traceIds instead of 64 bit.
802type Span struct {
803  TraceID int64 `thrift:"trace_id,1" db:"trace_id" json:"trace_id"`
804  // unused field # 2
805  Name string `thrift:"name,3" db:"name" json:"name"`
806  ID int64 `thrift:"id,4" db:"id" json:"id"`
807  ParentID *int64 `thrift:"parent_id,5" db:"parent_id" json:"parent_id,omitempty"`
808  Annotations []*Annotation `thrift:"annotations,6" db:"annotations" json:"annotations"`
809  // unused field # 7
810  BinaryAnnotations []*BinaryAnnotation `thrift:"binary_annotations,8" db:"binary_annotations" json:"binary_annotations"`
811  Debug bool `thrift:"debug,9" db:"debug" json:"debug"`
812  Timestamp *int64 `thrift:"timestamp,10" db:"timestamp" json:"timestamp,omitempty"`
813  Duration *int64 `thrift:"duration,11" db:"duration" json:"duration,omitempty"`
814  TraceIDHigh *int64 `thrift:"trace_id_high,12" db:"trace_id_high" json:"trace_id_high,omitempty"`
815}
816
817func NewSpan() *Span {
818  return &Span{}
819}
820
821
822func (p *Span) GetTraceID() int64 {
823  return p.TraceID
824}
825
826func (p *Span) GetName() string {
827  return p.Name
828}
829
830func (p *Span) GetID() int64 {
831  return p.ID
832}
833var Span_ParentID_DEFAULT int64
834func (p *Span) GetParentID() int64 {
835  if !p.IsSetParentID() {
836    return Span_ParentID_DEFAULT
837  }
838return *p.ParentID
839}
840
841func (p *Span) GetAnnotations() []*Annotation {
842  return p.Annotations
843}
844
845func (p *Span) GetBinaryAnnotations() []*BinaryAnnotation {
846  return p.BinaryAnnotations
847}
848var Span_Debug_DEFAULT bool = false
849
850func (p *Span) GetDebug() bool {
851  return p.Debug
852}
853var Span_Timestamp_DEFAULT int64
854func (p *Span) GetTimestamp() int64 {
855  if !p.IsSetTimestamp() {
856    return Span_Timestamp_DEFAULT
857  }
858return *p.Timestamp
859}
860var Span_Duration_DEFAULT int64
861func (p *Span) GetDuration() int64 {
862  if !p.IsSetDuration() {
863    return Span_Duration_DEFAULT
864  }
865return *p.Duration
866}
867var Span_TraceIDHigh_DEFAULT int64
868func (p *Span) GetTraceIDHigh() int64 {
869  if !p.IsSetTraceIDHigh() {
870    return Span_TraceIDHigh_DEFAULT
871  }
872return *p.TraceIDHigh
873}
874func (p *Span) IsSetParentID() bool {
875  return p.ParentID != nil
876}
877
878func (p *Span) IsSetDebug() bool {
879  return p.Debug != Span_Debug_DEFAULT
880}
881
882func (p *Span) IsSetTimestamp() bool {
883  return p.Timestamp != nil
884}
885
886func (p *Span) IsSetDuration() bool {
887  return p.Duration != nil
888}
889
890func (p *Span) IsSetTraceIDHigh() bool {
891  return p.TraceIDHigh != nil
892}
893
894func (p *Span) Read(ctx context.Context, iprot thrift.TProtocol) error {
895  if _, err := iprot.ReadStructBegin(ctx); err != nil {
896    return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
897  }
898
899
900  for {
901    _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin(ctx)
902    if err != nil {
903      return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
904    }
905    if fieldTypeId == thrift.STOP { break; }
906    switch fieldId {
907    case 1:
908      if fieldTypeId == thrift.I64 {
909        if err := p.ReadField1(ctx, iprot); err != nil {
910          return err
911        }
912      } else {
913        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
914          return err
915        }
916      }
917    case 3:
918      if fieldTypeId == thrift.STRING {
919        if err := p.ReadField3(ctx, iprot); err != nil {
920          return err
921        }
922      } else {
923        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
924          return err
925        }
926      }
927    case 4:
928      if fieldTypeId == thrift.I64 {
929        if err := p.ReadField4(ctx, iprot); err != nil {
930          return err
931        }
932      } else {
933        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
934          return err
935        }
936      }
937    case 5:
938      if fieldTypeId == thrift.I64 {
939        if err := p.ReadField5(ctx, iprot); err != nil {
940          return err
941        }
942      } else {
943        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
944          return err
945        }
946      }
947    case 6:
948      if fieldTypeId == thrift.LIST {
949        if err := p.ReadField6(ctx, iprot); err != nil {
950          return err
951        }
952      } else {
953        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
954          return err
955        }
956      }
957    case 8:
958      if fieldTypeId == thrift.LIST {
959        if err := p.ReadField8(ctx, iprot); err != nil {
960          return err
961        }
962      } else {
963        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
964          return err
965        }
966      }
967    case 9:
968      if fieldTypeId == thrift.BOOL {
969        if err := p.ReadField9(ctx, iprot); err != nil {
970          return err
971        }
972      } else {
973        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
974          return err
975        }
976      }
977    case 10:
978      if fieldTypeId == thrift.I64 {
979        if err := p.ReadField10(ctx, iprot); err != nil {
980          return err
981        }
982      } else {
983        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
984          return err
985        }
986      }
987    case 11:
988      if fieldTypeId == thrift.I64 {
989        if err := p.ReadField11(ctx, iprot); err != nil {
990          return err
991        }
992      } else {
993        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
994          return err
995        }
996      }
997    case 12:
998      if fieldTypeId == thrift.I64 {
999        if err := p.ReadField12(ctx, iprot); err != nil {
1000          return err
1001        }
1002      } else {
1003        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
1004          return err
1005        }
1006      }
1007    default:
1008      if err := iprot.Skip(ctx, fieldTypeId); err != nil {
1009        return err
1010      }
1011    }
1012    if err := iprot.ReadFieldEnd(ctx); err != nil {
1013      return err
1014    }
1015  }
1016  if err := iprot.ReadStructEnd(ctx); err != nil {
1017    return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
1018  }
1019  return nil
1020}
1021
1022func (p *Span)  ReadField1(ctx context.Context, iprot thrift.TProtocol) error {
1023  if v, err := iprot.ReadI64(ctx); err != nil {
1024  return thrift.PrependError("error reading field 1: ", err)
1025} else {
1026  p.TraceID = v
1027}
1028  return nil
1029}
1030
1031func (p *Span)  ReadField3(ctx context.Context, iprot thrift.TProtocol) error {
1032  if v, err := iprot.ReadString(ctx); err != nil {
1033  return thrift.PrependError("error reading field 3: ", err)
1034} else {
1035  p.Name = v
1036}
1037  return nil
1038}
1039
1040func (p *Span)  ReadField4(ctx context.Context, iprot thrift.TProtocol) error {
1041  if v, err := iprot.ReadI64(ctx); err != nil {
1042  return thrift.PrependError("error reading field 4: ", err)
1043} else {
1044  p.ID = v
1045}
1046  return nil
1047}
1048
1049func (p *Span)  ReadField5(ctx context.Context, iprot thrift.TProtocol) error {
1050  if v, err := iprot.ReadI64(ctx); err != nil {
1051  return thrift.PrependError("error reading field 5: ", err)
1052} else {
1053  p.ParentID = &v
1054}
1055  return nil
1056}
1057
1058func (p *Span)  ReadField6(ctx context.Context, iprot thrift.TProtocol) error {
1059  _, size, err := iprot.ReadListBegin(ctx)
1060  if err != nil {
1061    return thrift.PrependError("error reading list begin: ", err)
1062  }
1063  tSlice := make([]*Annotation, 0, size)
1064  p.Annotations =  tSlice
1065  for i := 0; i < size; i ++ {
1066    _elem0 := &Annotation{}
1067    if err := _elem0.Read(ctx, iprot); err != nil {
1068      return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem0), err)
1069    }
1070    p.Annotations = append(p.Annotations, _elem0)
1071  }
1072  if err := iprot.ReadListEnd(ctx); err != nil {
1073    return thrift.PrependError("error reading list end: ", err)
1074  }
1075  return nil
1076}
1077
1078func (p *Span)  ReadField8(ctx context.Context, iprot thrift.TProtocol) error {
1079  _, size, err := iprot.ReadListBegin(ctx)
1080  if err != nil {
1081    return thrift.PrependError("error reading list begin: ", err)
1082  }
1083  tSlice := make([]*BinaryAnnotation, 0, size)
1084  p.BinaryAnnotations =  tSlice
1085  for i := 0; i < size; i ++ {
1086    _elem1 := &BinaryAnnotation{}
1087    if err := _elem1.Read(ctx, iprot); err != nil {
1088      return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem1), err)
1089    }
1090    p.BinaryAnnotations = append(p.BinaryAnnotations, _elem1)
1091  }
1092  if err := iprot.ReadListEnd(ctx); err != nil {
1093    return thrift.PrependError("error reading list end: ", err)
1094  }
1095  return nil
1096}
1097
1098func (p *Span)  ReadField9(ctx context.Context, iprot thrift.TProtocol) error {
1099  if v, err := iprot.ReadBool(ctx); err != nil {
1100  return thrift.PrependError("error reading field 9: ", err)
1101} else {
1102  p.Debug = v
1103}
1104  return nil
1105}
1106
1107func (p *Span)  ReadField10(ctx context.Context, iprot thrift.TProtocol) error {
1108  if v, err := iprot.ReadI64(ctx); err != nil {
1109  return thrift.PrependError("error reading field 10: ", err)
1110} else {
1111  p.Timestamp = &v
1112}
1113  return nil
1114}
1115
1116func (p *Span)  ReadField11(ctx context.Context, iprot thrift.TProtocol) error {
1117  if v, err := iprot.ReadI64(ctx); err != nil {
1118  return thrift.PrependError("error reading field 11: ", err)
1119} else {
1120  p.Duration = &v
1121}
1122  return nil
1123}
1124
1125func (p *Span)  ReadField12(ctx context.Context, iprot thrift.TProtocol) error {
1126  if v, err := iprot.ReadI64(ctx); err != nil {
1127  return thrift.PrependError("error reading field 12: ", err)
1128} else {
1129  p.TraceIDHigh = &v
1130}
1131  return nil
1132}
1133
1134func (p *Span) Write(ctx context.Context, oprot thrift.TProtocol) error {
1135  if err := oprot.WriteStructBegin(ctx, "Span"); err != nil {
1136    return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) }
1137  if p != nil {
1138    if err := p.writeField1(ctx, oprot); err != nil { return err }
1139    if err := p.writeField3(ctx, oprot); err != nil { return err }
1140    if err := p.writeField4(ctx, oprot); err != nil { return err }
1141    if err := p.writeField5(ctx, oprot); err != nil { return err }
1142    if err := p.writeField6(ctx, oprot); err != nil { return err }
1143    if err := p.writeField8(ctx, oprot); err != nil { return err }
1144    if err := p.writeField9(ctx, oprot); err != nil { return err }
1145    if err := p.writeField10(ctx, oprot); err != nil { return err }
1146    if err := p.writeField11(ctx, oprot); err != nil { return err }
1147    if err := p.writeField12(ctx, oprot); err != nil { return err }
1148  }
1149  if err := oprot.WriteFieldStop(ctx); err != nil {
1150    return thrift.PrependError("write field stop error: ", err) }
1151  if err := oprot.WriteStructEnd(ctx); err != nil {
1152    return thrift.PrependError("write struct stop error: ", err) }
1153  return nil
1154}
1155
1156func (p *Span) writeField1(ctx context.Context, oprot thrift.TProtocol) (err error) {
1157  if err := oprot.WriteFieldBegin(ctx, "trace_id", thrift.I64, 1); err != nil {
1158    return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:trace_id: ", p), err) }
1159  if err := oprot.WriteI64(ctx, int64(p.TraceID)); err != nil {
1160  return thrift.PrependError(fmt.Sprintf("%T.trace_id (1) field write error: ", p), err) }
1161  if err := oprot.WriteFieldEnd(ctx); err != nil {
1162    return thrift.PrependError(fmt.Sprintf("%T write field end error 1:trace_id: ", p), err) }
1163  return err
1164}
1165
1166func (p *Span) writeField3(ctx context.Context, oprot thrift.TProtocol) (err error) {
1167  if err := oprot.WriteFieldBegin(ctx, "name", thrift.STRING, 3); err != nil {
1168    return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:name: ", p), err) }
1169  if err := oprot.WriteString(ctx, string(p.Name)); err != nil {
1170  return thrift.PrependError(fmt.Sprintf("%T.name (3) field write error: ", p), err) }
1171  if err := oprot.WriteFieldEnd(ctx); err != nil {
1172    return thrift.PrependError(fmt.Sprintf("%T write field end error 3:name: ", p), err) }
1173  return err
1174}
1175
1176func (p *Span) writeField4(ctx context.Context, oprot thrift.TProtocol) (err error) {
1177  if err := oprot.WriteFieldBegin(ctx, "id", thrift.I64, 4); err != nil {
1178    return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:id: ", p), err) }
1179  if err := oprot.WriteI64(ctx, int64(p.ID)); err != nil {
1180  return thrift.PrependError(fmt.Sprintf("%T.id (4) field write error: ", p), err) }
1181  if err := oprot.WriteFieldEnd(ctx); err != nil {
1182    return thrift.PrependError(fmt.Sprintf("%T write field end error 4:id: ", p), err) }
1183  return err
1184}
1185
1186func (p *Span) writeField5(ctx context.Context, oprot thrift.TProtocol) (err error) {
1187  if p.IsSetParentID() {
1188    if err := oprot.WriteFieldBegin(ctx, "parent_id", thrift.I64, 5); err != nil {
1189      return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:parent_id: ", p), err) }
1190    if err := oprot.WriteI64(ctx, int64(*p.ParentID)); err != nil {
1191    return thrift.PrependError(fmt.Sprintf("%T.parent_id (5) field write error: ", p), err) }
1192    if err := oprot.WriteFieldEnd(ctx); err != nil {
1193      return thrift.PrependError(fmt.Sprintf("%T write field end error 5:parent_id: ", p), err) }
1194  }
1195  return err
1196}
1197
1198func (p *Span) writeField6(ctx context.Context, oprot thrift.TProtocol) (err error) {
1199  if err := oprot.WriteFieldBegin(ctx, "annotations", thrift.LIST, 6); err != nil {
1200    return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:annotations: ", p), err) }
1201  if err := oprot.WriteListBegin(ctx, thrift.STRUCT, len(p.Annotations)); err != nil {
1202    return thrift.PrependError("error writing list begin: ", err)
1203  }
1204  for _, v := range p.Annotations {
1205    if err := v.Write(ctx, oprot); err != nil {
1206      return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
1207    }
1208  }
1209  if err := oprot.WriteListEnd(ctx); err != nil {
1210    return thrift.PrependError("error writing list end: ", err)
1211  }
1212  if err := oprot.WriteFieldEnd(ctx); err != nil {
1213    return thrift.PrependError(fmt.Sprintf("%T write field end error 6:annotations: ", p), err) }
1214  return err
1215}
1216
1217func (p *Span) writeField8(ctx context.Context, oprot thrift.TProtocol) (err error) {
1218  if err := oprot.WriteFieldBegin(ctx, "binary_annotations", thrift.LIST, 8); err != nil {
1219    return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:binary_annotations: ", p), err) }
1220  if err := oprot.WriteListBegin(ctx, thrift.STRUCT, len(p.BinaryAnnotations)); err != nil {
1221    return thrift.PrependError("error writing list begin: ", err)
1222  }
1223  for _, v := range p.BinaryAnnotations {
1224    if err := v.Write(ctx, oprot); err != nil {
1225      return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
1226    }
1227  }
1228  if err := oprot.WriteListEnd(ctx); err != nil {
1229    return thrift.PrependError("error writing list end: ", err)
1230  }
1231  if err := oprot.WriteFieldEnd(ctx); err != nil {
1232    return thrift.PrependError(fmt.Sprintf("%T write field end error 8:binary_annotations: ", p), err) }
1233  return err
1234}
1235
1236func (p *Span) writeField9(ctx context.Context, oprot thrift.TProtocol) (err error) {
1237  if p.IsSetDebug() {
1238    if err := oprot.WriteFieldBegin(ctx, "debug", thrift.BOOL, 9); err != nil {
1239      return thrift.PrependError(fmt.Sprintf("%T write field begin error 9:debug: ", p), err) }
1240    if err := oprot.WriteBool(ctx, bool(p.Debug)); err != nil {
1241    return thrift.PrependError(fmt.Sprintf("%T.debug (9) field write error: ", p), err) }
1242    if err := oprot.WriteFieldEnd(ctx); err != nil {
1243      return thrift.PrependError(fmt.Sprintf("%T write field end error 9:debug: ", p), err) }
1244  }
1245  return err
1246}
1247
1248func (p *Span) writeField10(ctx context.Context, oprot thrift.TProtocol) (err error) {
1249  if p.IsSetTimestamp() {
1250    if err := oprot.WriteFieldBegin(ctx, "timestamp", thrift.I64, 10); err != nil {
1251      return thrift.PrependError(fmt.Sprintf("%T write field begin error 10:timestamp: ", p), err) }
1252    if err := oprot.WriteI64(ctx, int64(*p.Timestamp)); err != nil {
1253    return thrift.PrependError(fmt.Sprintf("%T.timestamp (10) field write error: ", p), err) }
1254    if err := oprot.WriteFieldEnd(ctx); err != nil {
1255      return thrift.PrependError(fmt.Sprintf("%T write field end error 10:timestamp: ", p), err) }
1256  }
1257  return err
1258}
1259
1260func (p *Span) writeField11(ctx context.Context, oprot thrift.TProtocol) (err error) {
1261  if p.IsSetDuration() {
1262    if err := oprot.WriteFieldBegin(ctx, "duration", thrift.I64, 11); err != nil {
1263      return thrift.PrependError(fmt.Sprintf("%T write field begin error 11:duration: ", p), err) }
1264    if err := oprot.WriteI64(ctx, int64(*p.Duration)); err != nil {
1265    return thrift.PrependError(fmt.Sprintf("%T.duration (11) field write error: ", p), err) }
1266    if err := oprot.WriteFieldEnd(ctx); err != nil {
1267      return thrift.PrependError(fmt.Sprintf("%T write field end error 11:duration: ", p), err) }
1268  }
1269  return err
1270}
1271
1272func (p *Span) writeField12(ctx context.Context, oprot thrift.TProtocol) (err error) {
1273  if p.IsSetTraceIDHigh() {
1274    if err := oprot.WriteFieldBegin(ctx, "trace_id_high", thrift.I64, 12); err != nil {
1275      return thrift.PrependError(fmt.Sprintf("%T write field begin error 12:trace_id_high: ", p), err) }
1276    if err := oprot.WriteI64(ctx, int64(*p.TraceIDHigh)); err != nil {
1277    return thrift.PrependError(fmt.Sprintf("%T.trace_id_high (12) field write error: ", p), err) }
1278    if err := oprot.WriteFieldEnd(ctx); err != nil {
1279      return thrift.PrependError(fmt.Sprintf("%T write field end error 12:trace_id_high: ", p), err) }
1280  }
1281  return err
1282}
1283
1284func (p *Span) Equals(other *Span) bool {
1285  if p == other {
1286    return true
1287  } else if p == nil || other == nil {
1288    return false
1289  }
1290  if p.TraceID != other.TraceID { return false }
1291  if p.Name != other.Name { return false }
1292  if p.ID != other.ID { return false }
1293  if p.ParentID != other.ParentID {
1294    if p.ParentID == nil || other.ParentID == nil {
1295      return false
1296    }
1297    if (*p.ParentID) != (*other.ParentID) { return false }
1298  }
1299  if len(p.Annotations) != len(other.Annotations) { return false }
1300  for i, _tgt := range p.Annotations {
1301    _src2 := other.Annotations[i]
1302    if !_tgt.Equals(_src2) { return false }
1303  }
1304  if len(p.BinaryAnnotations) != len(other.BinaryAnnotations) { return false }
1305  for i, _tgt := range p.BinaryAnnotations {
1306    _src3 := other.BinaryAnnotations[i]
1307    if !_tgt.Equals(_src3) { return false }
1308  }
1309  if p.Debug != other.Debug { return false }
1310  if p.Timestamp != other.Timestamp {
1311    if p.Timestamp == nil || other.Timestamp == nil {
1312      return false
1313    }
1314    if (*p.Timestamp) != (*other.Timestamp) { return false }
1315  }
1316  if p.Duration != other.Duration {
1317    if p.Duration == nil || other.Duration == nil {
1318      return false
1319    }
1320    if (*p.Duration) != (*other.Duration) { return false }
1321  }
1322  if p.TraceIDHigh != other.TraceIDHigh {
1323    if p.TraceIDHigh == nil || other.TraceIDHigh == nil {
1324      return false
1325    }
1326    if (*p.TraceIDHigh) != (*other.TraceIDHigh) { return false }
1327  }
1328  return true
1329}
1330
1331func (p *Span) String() string {
1332  if p == nil {
1333    return "<nil>"
1334  }
1335  return fmt.Sprintf("Span(%+v)", *p)
1336}
1337
1338// Attributes:
1339//  - Ok
1340type Response struct {
1341  Ok bool `thrift:"ok,1,required" db:"ok" json:"ok"`
1342}
1343
1344func NewResponse() *Response {
1345  return &Response{}
1346}
1347
1348
1349func (p *Response) GetOk() bool {
1350  return p.Ok
1351}
1352func (p *Response) Read(ctx context.Context, iprot thrift.TProtocol) error {
1353  if _, err := iprot.ReadStructBegin(ctx); err != nil {
1354    return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
1355  }
1356
1357  var issetOk bool = false;
1358
1359  for {
1360    _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin(ctx)
1361    if err != nil {
1362      return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
1363    }
1364    if fieldTypeId == thrift.STOP { break; }
1365    switch fieldId {
1366    case 1:
1367      if fieldTypeId == thrift.BOOL {
1368        if err := p.ReadField1(ctx, iprot); err != nil {
1369          return err
1370        }
1371        issetOk = true
1372      } else {
1373        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
1374          return err
1375        }
1376      }
1377    default:
1378      if err := iprot.Skip(ctx, fieldTypeId); err != nil {
1379        return err
1380      }
1381    }
1382    if err := iprot.ReadFieldEnd(ctx); err != nil {
1383      return err
1384    }
1385  }
1386  if err := iprot.ReadStructEnd(ctx); err != nil {
1387    return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
1388  }
1389  if !issetOk{
1390    return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Ok is not set"));
1391  }
1392  return nil
1393}
1394
1395func (p *Response)  ReadField1(ctx context.Context, iprot thrift.TProtocol) error {
1396  if v, err := iprot.ReadBool(ctx); err != nil {
1397  return thrift.PrependError("error reading field 1: ", err)
1398} else {
1399  p.Ok = v
1400}
1401  return nil
1402}
1403
1404func (p *Response) Write(ctx context.Context, oprot thrift.TProtocol) error {
1405  if err := oprot.WriteStructBegin(ctx, "Response"); err != nil {
1406    return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) }
1407  if p != nil {
1408    if err := p.writeField1(ctx, oprot); err != nil { return err }
1409  }
1410  if err := oprot.WriteFieldStop(ctx); err != nil {
1411    return thrift.PrependError("write field stop error: ", err) }
1412  if err := oprot.WriteStructEnd(ctx); err != nil {
1413    return thrift.PrependError("write struct stop error: ", err) }
1414  return nil
1415}
1416
1417func (p *Response) writeField1(ctx context.Context, oprot thrift.TProtocol) (err error) {
1418  if err := oprot.WriteFieldBegin(ctx, "ok", thrift.BOOL, 1); err != nil {
1419    return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:ok: ", p), err) }
1420  if err := oprot.WriteBool(ctx, bool(p.Ok)); err != nil {
1421  return thrift.PrependError(fmt.Sprintf("%T.ok (1) field write error: ", p), err) }
1422  if err := oprot.WriteFieldEnd(ctx); err != nil {
1423    return thrift.PrependError(fmt.Sprintf("%T write field end error 1:ok: ", p), err) }
1424  return err
1425}
1426
1427func (p *Response) Equals(other *Response) bool {
1428  if p == other {
1429    return true
1430  } else if p == nil || other == nil {
1431    return false
1432  }
1433  if p.Ok != other.Ok { return false }
1434  return true
1435}
1436
1437func (p *Response) String() string {
1438  if p == nil {
1439    return "<nil>"
1440  }
1441  return fmt.Sprintf("Response(%+v)", *p)
1442}
1443
1444type ZipkinCollector interface {
1445  // Parameters:
1446  //  - Spans
1447  SubmitZipkinBatch(ctx context.Context, spans []*Span) (_r []*Response, _err error)
1448}
1449
1450type ZipkinCollectorClient struct {
1451  c thrift.TClient
1452  meta thrift.ResponseMeta
1453}
1454
1455func NewZipkinCollectorClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *ZipkinCollectorClient {
1456  return &ZipkinCollectorClient{
1457    c: thrift.NewTStandardClient(f.GetProtocol(t), f.GetProtocol(t)),
1458  }
1459}
1460
1461func NewZipkinCollectorClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *ZipkinCollectorClient {
1462  return &ZipkinCollectorClient{
1463    c: thrift.NewTStandardClient(iprot, oprot),
1464  }
1465}
1466
1467func NewZipkinCollectorClient(c thrift.TClient) *ZipkinCollectorClient {
1468  return &ZipkinCollectorClient{
1469    c: c,
1470  }
1471}
1472
1473func (p *ZipkinCollectorClient) Client_() thrift.TClient {
1474  return p.c
1475}
1476
1477func (p *ZipkinCollectorClient) LastResponseMeta_() thrift.ResponseMeta {
1478  return p.meta
1479}
1480
1481func (p *ZipkinCollectorClient) SetLastResponseMeta_(meta thrift.ResponseMeta) {
1482  p.meta = meta
1483}
1484
1485// Parameters:
1486//  - Spans
1487func (p *ZipkinCollectorClient) SubmitZipkinBatch(ctx context.Context, spans []*Span) (_r []*Response, _err error) {
1488  var _args4 ZipkinCollectorSubmitZipkinBatchArgs
1489  _args4.Spans = spans
1490  var _result6 ZipkinCollectorSubmitZipkinBatchResult
1491  var _meta5 thrift.ResponseMeta
1492  _meta5, _err = p.Client_().Call(ctx, "submitZipkinBatch", &_args4, &_result6)
1493  p.SetLastResponseMeta_(_meta5)
1494  if _err != nil {
1495    return
1496  }
1497  return _result6.GetSuccess(), nil
1498}
1499
1500type ZipkinCollectorProcessor struct {
1501  processorMap map[string]thrift.TProcessorFunction
1502  handler ZipkinCollector
1503}
1504
1505func (p *ZipkinCollectorProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) {
1506  p.processorMap[key] = processor
1507}
1508
1509func (p *ZipkinCollectorProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) {
1510  processor, ok = p.processorMap[key]
1511  return processor, ok
1512}
1513
1514func (p *ZipkinCollectorProcessor) ProcessorMap() map[string]thrift.TProcessorFunction {
1515  return p.processorMap
1516}
1517
1518func NewZipkinCollectorProcessor(handler ZipkinCollector) *ZipkinCollectorProcessor {
1519
1520  self7 := &ZipkinCollectorProcessor{handler:handler, processorMap:make(map[string]thrift.TProcessorFunction)}
1521  self7.processorMap["submitZipkinBatch"] = &zipkinCollectorProcessorSubmitZipkinBatch{handler:handler}
1522return self7
1523}
1524
1525func (p *ZipkinCollectorProcessor) Process(ctx context.Context, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
1526  name, _, seqId, err2 := iprot.ReadMessageBegin(ctx)
1527  if err2 != nil { return false, thrift.WrapTException(err2) }
1528  if processor, ok := p.GetProcessorFunction(name); ok {
1529    return processor.Process(ctx, seqId, iprot, oprot)
1530  }
1531  iprot.Skip(ctx, thrift.STRUCT)
1532  iprot.ReadMessageEnd(ctx)
1533  x8 := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function " + name)
1534  oprot.WriteMessageBegin(ctx, name, thrift.EXCEPTION, seqId)
1535  x8.Write(ctx, oprot)
1536  oprot.WriteMessageEnd(ctx)
1537  oprot.Flush(ctx)
1538  return false, x8
1539
1540}
1541
1542type zipkinCollectorProcessorSubmitZipkinBatch struct {
1543  handler ZipkinCollector
1544}
1545
1546func (p *zipkinCollectorProcessorSubmitZipkinBatch) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
1547  args := ZipkinCollectorSubmitZipkinBatchArgs{}
1548  var err2 error
1549  if err2 = args.Read(ctx, iprot); err2 != nil {
1550    iprot.ReadMessageEnd(ctx)
1551    x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err2.Error())
1552    oprot.WriteMessageBegin(ctx, "submitZipkinBatch", thrift.EXCEPTION, seqId)
1553    x.Write(ctx, oprot)
1554    oprot.WriteMessageEnd(ctx)
1555    oprot.Flush(ctx)
1556    return false, thrift.WrapTException(err2)
1557  }
1558  iprot.ReadMessageEnd(ctx)
1559
1560  tickerCancel := func() {}
1561  // Start a goroutine to do server side connectivity check.
1562  if thrift.ServerConnectivityCheckInterval > 0 {
1563    var cancel context.CancelFunc
1564    ctx, cancel = context.WithCancel(ctx)
1565    defer cancel()
1566    var tickerCtx context.Context
1567    tickerCtx, tickerCancel = context.WithCancel(context.Background())
1568    defer tickerCancel()
1569    go func(ctx context.Context, cancel context.CancelFunc) {
1570      ticker := time.NewTicker(thrift.ServerConnectivityCheckInterval)
1571      defer ticker.Stop()
1572      for {
1573        select {
1574        case <-ctx.Done():
1575          return
1576        case <-ticker.C:
1577          if !iprot.Transport().IsOpen() {
1578            cancel()
1579            return
1580          }
1581        }
1582      }
1583    }(tickerCtx, cancel)
1584  }
1585
1586  result := ZipkinCollectorSubmitZipkinBatchResult{}
1587  var retval []*Response
1588  if retval, err2 = p.handler.SubmitZipkinBatch(ctx, args.Spans); err2 != nil {
1589    tickerCancel()
1590    if err2 == thrift.ErrAbandonRequest {
1591      return false, thrift.WrapTException(err2)
1592    }
1593    x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing submitZipkinBatch: " + err2.Error())
1594    oprot.WriteMessageBegin(ctx, "submitZipkinBatch", thrift.EXCEPTION, seqId)
1595    x.Write(ctx, oprot)
1596    oprot.WriteMessageEnd(ctx)
1597    oprot.Flush(ctx)
1598    return true, thrift.WrapTException(err2)
1599  } else {
1600    result.Success = retval
1601  }
1602  tickerCancel()
1603  if err2 = oprot.WriteMessageBegin(ctx, "submitZipkinBatch", thrift.REPLY, seqId); err2 != nil {
1604    err = thrift.WrapTException(err2)
1605  }
1606  if err2 = result.Write(ctx, oprot); err == nil && err2 != nil {
1607    err = thrift.WrapTException(err2)
1608  }
1609  if err2 = oprot.WriteMessageEnd(ctx); err == nil && err2 != nil {
1610    err = thrift.WrapTException(err2)
1611  }
1612  if err2 = oprot.Flush(ctx); err == nil && err2 != nil {
1613    err = thrift.WrapTException(err2)
1614  }
1615  if err != nil {
1616    return
1617  }
1618  return true, err
1619}
1620
1621
1622// HELPER FUNCTIONS AND STRUCTURES
1623
1624// Attributes:
1625//  - Spans
1626type ZipkinCollectorSubmitZipkinBatchArgs struct {
1627  Spans []*Span `thrift:"spans,1" db:"spans" json:"spans"`
1628}
1629
1630func NewZipkinCollectorSubmitZipkinBatchArgs() *ZipkinCollectorSubmitZipkinBatchArgs {
1631  return &ZipkinCollectorSubmitZipkinBatchArgs{}
1632}
1633
1634
1635func (p *ZipkinCollectorSubmitZipkinBatchArgs) GetSpans() []*Span {
1636  return p.Spans
1637}
1638func (p *ZipkinCollectorSubmitZipkinBatchArgs) Read(ctx context.Context, iprot thrift.TProtocol) error {
1639  if _, err := iprot.ReadStructBegin(ctx); err != nil {
1640    return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
1641  }
1642
1643
1644  for {
1645    _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin(ctx)
1646    if err != nil {
1647      return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
1648    }
1649    if fieldTypeId == thrift.STOP { break; }
1650    switch fieldId {
1651    case 1:
1652      if fieldTypeId == thrift.LIST {
1653        if err := p.ReadField1(ctx, iprot); err != nil {
1654          return err
1655        }
1656      } else {
1657        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
1658          return err
1659        }
1660      }
1661    default:
1662      if err := iprot.Skip(ctx, fieldTypeId); err != nil {
1663        return err
1664      }
1665    }
1666    if err := iprot.ReadFieldEnd(ctx); err != nil {
1667      return err
1668    }
1669  }
1670  if err := iprot.ReadStructEnd(ctx); err != nil {
1671    return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
1672  }
1673  return nil
1674}
1675
1676func (p *ZipkinCollectorSubmitZipkinBatchArgs)  ReadField1(ctx context.Context, iprot thrift.TProtocol) error {
1677  _, size, err := iprot.ReadListBegin(ctx)
1678  if err != nil {
1679    return thrift.PrependError("error reading list begin: ", err)
1680  }
1681  tSlice := make([]*Span, 0, size)
1682  p.Spans =  tSlice
1683  for i := 0; i < size; i ++ {
1684    _elem9 := &Span{}
1685    if err := _elem9.Read(ctx, iprot); err != nil {
1686      return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem9), err)
1687    }
1688    p.Spans = append(p.Spans, _elem9)
1689  }
1690  if err := iprot.ReadListEnd(ctx); err != nil {
1691    return thrift.PrependError("error reading list end: ", err)
1692  }
1693  return nil
1694}
1695
1696func (p *ZipkinCollectorSubmitZipkinBatchArgs) Write(ctx context.Context, oprot thrift.TProtocol) error {
1697  if err := oprot.WriteStructBegin(ctx, "submitZipkinBatch_args"); err != nil {
1698    return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) }
1699  if p != nil {
1700    if err := p.writeField1(ctx, oprot); err != nil { return err }
1701  }
1702  if err := oprot.WriteFieldStop(ctx); err != nil {
1703    return thrift.PrependError("write field stop error: ", err) }
1704  if err := oprot.WriteStructEnd(ctx); err != nil {
1705    return thrift.PrependError("write struct stop error: ", err) }
1706  return nil
1707}
1708
1709func (p *ZipkinCollectorSubmitZipkinBatchArgs) writeField1(ctx context.Context, oprot thrift.TProtocol) (err error) {
1710  if err := oprot.WriteFieldBegin(ctx, "spans", thrift.LIST, 1); err != nil {
1711    return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:spans: ", p), err) }
1712  if err := oprot.WriteListBegin(ctx, thrift.STRUCT, len(p.Spans)); err != nil {
1713    return thrift.PrependError("error writing list begin: ", err)
1714  }
1715  for _, v := range p.Spans {
1716    if err := v.Write(ctx, oprot); err != nil {
1717      return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
1718    }
1719  }
1720  if err := oprot.WriteListEnd(ctx); err != nil {
1721    return thrift.PrependError("error writing list end: ", err)
1722  }
1723  if err := oprot.WriteFieldEnd(ctx); err != nil {
1724    return thrift.PrependError(fmt.Sprintf("%T write field end error 1:spans: ", p), err) }
1725  return err
1726}
1727
1728func (p *ZipkinCollectorSubmitZipkinBatchArgs) String() string {
1729  if p == nil {
1730    return "<nil>"
1731  }
1732  return fmt.Sprintf("ZipkinCollectorSubmitZipkinBatchArgs(%+v)", *p)
1733}
1734
1735// Attributes:
1736//  - Success
1737type ZipkinCollectorSubmitZipkinBatchResult struct {
1738  Success []*Response `thrift:"success,0" db:"success" json:"success,omitempty"`
1739}
1740
1741func NewZipkinCollectorSubmitZipkinBatchResult() *ZipkinCollectorSubmitZipkinBatchResult {
1742  return &ZipkinCollectorSubmitZipkinBatchResult{}
1743}
1744
1745var ZipkinCollectorSubmitZipkinBatchResult_Success_DEFAULT []*Response
1746
1747func (p *ZipkinCollectorSubmitZipkinBatchResult) GetSuccess() []*Response {
1748  return p.Success
1749}
1750func (p *ZipkinCollectorSubmitZipkinBatchResult) IsSetSuccess() bool {
1751  return p.Success != nil
1752}
1753
1754func (p *ZipkinCollectorSubmitZipkinBatchResult) Read(ctx context.Context, iprot thrift.TProtocol) error {
1755  if _, err := iprot.ReadStructBegin(ctx); err != nil {
1756    return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
1757  }
1758
1759
1760  for {
1761    _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin(ctx)
1762    if err != nil {
1763      return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
1764    }
1765    if fieldTypeId == thrift.STOP { break; }
1766    switch fieldId {
1767    case 0:
1768      if fieldTypeId == thrift.LIST {
1769        if err := p.ReadField0(ctx, iprot); err != nil {
1770          return err
1771        }
1772      } else {
1773        if err := iprot.Skip(ctx, fieldTypeId); err != nil {
1774          return err
1775        }
1776      }
1777    default:
1778      if err := iprot.Skip(ctx, fieldTypeId); err != nil {
1779        return err
1780      }
1781    }
1782    if err := iprot.ReadFieldEnd(ctx); err != nil {
1783      return err
1784    }
1785  }
1786  if err := iprot.ReadStructEnd(ctx); err != nil {
1787    return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
1788  }
1789  return nil
1790}
1791
1792func (p *ZipkinCollectorSubmitZipkinBatchResult)  ReadField0(ctx context.Context, iprot thrift.TProtocol) error {
1793  _, size, err := iprot.ReadListBegin(ctx)
1794  if err != nil {
1795    return thrift.PrependError("error reading list begin: ", err)
1796  }
1797  tSlice := make([]*Response, 0, size)
1798  p.Success =  tSlice
1799  for i := 0; i < size; i ++ {
1800    _elem10 := &Response{}
1801    if err := _elem10.Read(ctx, iprot); err != nil {
1802      return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem10), err)
1803    }
1804    p.Success = append(p.Success, _elem10)
1805  }
1806  if err := iprot.ReadListEnd(ctx); err != nil {
1807    return thrift.PrependError("error reading list end: ", err)
1808  }
1809  return nil
1810}
1811
1812func (p *ZipkinCollectorSubmitZipkinBatchResult) Write(ctx context.Context, oprot thrift.TProtocol) error {
1813  if err := oprot.WriteStructBegin(ctx, "submitZipkinBatch_result"); err != nil {
1814    return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) }
1815  if p != nil {
1816    if err := p.writeField0(ctx, oprot); err != nil { return err }
1817  }
1818  if err := oprot.WriteFieldStop(ctx); err != nil {
1819    return thrift.PrependError("write field stop error: ", err) }
1820  if err := oprot.WriteStructEnd(ctx); err != nil {
1821    return thrift.PrependError("write struct stop error: ", err) }
1822  return nil
1823}
1824
1825func (p *ZipkinCollectorSubmitZipkinBatchResult) writeField0(ctx context.Context, oprot thrift.TProtocol) (err error) {
1826  if p.IsSetSuccess() {
1827    if err := oprot.WriteFieldBegin(ctx, "success", thrift.LIST, 0); err != nil {
1828      return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err) }
1829    if err := oprot.WriteListBegin(ctx, thrift.STRUCT, len(p.Success)); err != nil {
1830      return thrift.PrependError("error writing list begin: ", err)
1831    }
1832    for _, v := range p.Success {
1833      if err := v.Write(ctx, oprot); err != nil {
1834        return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
1835      }
1836    }
1837    if err := oprot.WriteListEnd(ctx); err != nil {
1838      return thrift.PrependError("error writing list end: ", err)
1839    }
1840    if err := oprot.WriteFieldEnd(ctx); err != nil {
1841      return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err) }
1842  }
1843  return err
1844}
1845
1846func (p *ZipkinCollectorSubmitZipkinBatchResult) String() string {
1847  if p == nil {
1848    return "<nil>"
1849  }
1850  return fmt.Sprintf("ZipkinCollectorSubmitZipkinBatchResult(%+v)", *p)
1851}
1852
1853
1854