trace Read endpoint
This commit is contained in:
		| @@ -16,7 +16,25 @@ type trace struct { | ||||
| } | ||||
|  | ||||
| func (t *trace) Read(opts ...ReadOption) ([]*Span, error) { | ||||
| 	return []*Span{}, nil | ||||
| 	var options ReadOptions | ||||
| 	for _, o := range opts { | ||||
| 		o(&options) | ||||
| 	} | ||||
|  | ||||
| 	sp := t.buffer.Get(t.buffer.Size()) | ||||
|  | ||||
| 	var spans []*Span | ||||
|  | ||||
| 	for _, span := range sp { | ||||
| 		val := span.Value.(*Span) | ||||
| 		// skip if trace id is specified and doesn't match | ||||
| 		if len(options.Trace) > 0 && val.Trace != options.Trace { | ||||
| 			continue | ||||
| 		} | ||||
| 		spans = append(spans, val) | ||||
| 	} | ||||
|  | ||||
| 	return spans, nil | ||||
| } | ||||
|  | ||||
| func (t *trace) Start(ctx context.Context, name string) *Span { | ||||
| @@ -49,7 +67,7 @@ func (t *trace) Start(ctx context.Context, name string) *Span { | ||||
|  | ||||
| func (t *trace) Finish(s *Span) error { | ||||
| 	// set finished time | ||||
| 	s.Finished = time.Now() | ||||
| 	s.Duration = time.Since(s.Started) | ||||
|  | ||||
| 	// save the span | ||||
| 	t.buffer.Put(s) | ||||
|   | ||||
| @@ -10,3 +10,10 @@ type ReadOptions struct { | ||||
| } | ||||
|  | ||||
| type ReadOption func(o *ReadOptions) | ||||
|  | ||||
| // Read the given trace | ||||
| func ReadTrace(t string) ReadOption { | ||||
| 	return func(o *ReadOptions) { | ||||
| 		o.Trace = t | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -28,8 +28,8 @@ type Span struct { | ||||
| 	Parent string | ||||
| 	// Start time | ||||
| 	Started time.Time | ||||
| 	// Finish time | ||||
| 	Finished time.Time | ||||
| 	// Duration in nano seconds | ||||
| 	Duration time.Duration | ||||
| 	// associated data | ||||
| 	Metadata map[string]string | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user