Slide 8
Slide 8 text
// instrumentedHandler wraps the handler providing instrumentation
func (ep *Endpoint) instrumentedHandler(req *Request)
(proto.Message, errors.Error) {
!
start := time.Now()
var err errors.Error
var msg proto.Message
!
// Defer panic handling
defer func() {
stats.Record(ep, err, time.Since(start))
// oh crap i hope this never happens
}()
!
// Execute handler
go traceIn(req)
msg, err = ep.Handler(req)
go traceOut(req, msg, err, time.Since(start))
return msg, err
}