func C(name string, m Matcher, h Handler) *Callback {
	// panic if matcher or handler is not set
	if m == nil || h == nil {
		panic("fire: missing matcher or handler")
	}

	return &Callback{
		Matcher: m,
		Handler: func(ctx *Context) error {
			// begin trace
			ctx.Tracer.Push(name)

			// call handler
			err := h(ctx)
			if err != nil {
				return err
			}

			// finish trace
			ctx.Tracer.Pop()

			return nil
		},
	}
}
func C(name string, m Matcher, h Handler) *Callback {
	
	if m == nil || h == nil {
		panic("fire: missing matcher or handler")
	}

	return &Callback{
		Matcher: m,
		Handler: func(ctx *Context) error {
			
			ctx.Tracer.Push(name)

			
			err := h(ctx)
			if err != nil {
				return err
			}

			
			ctx.Tracer.Pop()

			return nil
		},
	}
}
func C ( name string , m Matcher , h Handler ) * Callback { // panic if matcher or handler is not set if m == nil || h == nil { panic ( " " ) } return & Callback { Matcher : m , Handler : func ( ctx * Context ) error { // begin trace ctx . Tracer . Push ( name ) // call handler err := h ( ctx ) if err != nil { return err } // finish trace ctx . Tracer . Pop ( ) return nil } , } }
// C is a short-hand function to construct a callback. It will also add tracing
// code around the execution of the callback.
C is a short - hand function to construct a callback . It will also add tracing code around the execution of the callback .