From 66796316890c6e2cfcdda4261ec0c170f647213e Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Fri, 1 May 2015 12:21:06 +1000 Subject: [PATCH] Refactored how op descriptions work. --- fuseops/common_op.go | 23 ++++++++++++++--------- fuseops/convert.go | 3 +-- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/fuseops/common_op.go b/fuseops/common_op.go index b25a5c0..9ae47a1 100644 --- a/fuseops/common_op.go +++ b/fuseops/common_op.go @@ -38,7 +38,11 @@ var fTraceByPID = flag.Bool( // A helper for embedding common behavior. type commonOp struct { - opType string + // The op in which this struct is embedded, and a short description of it. + op Op + opDesc string + + // The underlying bazilfuse request for this op. bazilReq bazilfuse.Request // Dependencies. @@ -50,8 +54,8 @@ type commonOp struct { report reqtrace.ReportFunc } -func describeOpType(t reflect.Type) (desc string) { - name := t.String() +func describeOp(op Op) (desc string) { + name := reflect.TypeOf(op).String() // The usual case: a string that looks like "*fuseops.GetInodeAttributesOp". const prefix = "*fuseops." @@ -62,7 +66,7 @@ func describeOpType(t reflect.Type) (desc string) { } // Otherwise, it's not clear what to do. - desc = t.String() + desc = name return } @@ -147,7 +151,7 @@ func (o *commonOp) maybeTraceByPID( func (o *commonOp) init( ctx context.Context, - opType reflect.Type, + op Op, bazilReq bazilfuse.Request, log func(int, string, ...interface{}), opsInFlight *sync.WaitGroup) { @@ -155,13 +159,14 @@ func (o *commonOp) init( ctx = o.maybeTraceByPID(ctx, int(bazilReq.Hdr().Pid)) // Initialize basic fields. - o.opType = describeOpType(opType) + o.op = op + o.opDesc = describeOp(op) o.bazilReq = bazilReq o.log = log o.opsInFlight = opsInFlight // Set up a trace span for this op. - o.ctx, o.report = reqtrace.StartSpan(ctx, o.opType) + o.ctx, o.report = reqtrace.StartSpan(ctx, o.opDesc) } func (o *commonOp) Header() OpHeader { @@ -190,7 +195,7 @@ func (o *commonOp) respondErr(err error) { o.Logf( "-> (%s) error: %v", - o.opType, + o.opDesc, err) o.bazilReq.RespondError(err) @@ -210,7 +215,7 @@ func (o *commonOp) respond(resp interface{}) { // Special case: handle successful ops with no response struct. if resp == nil { - o.Logf("-> (%s) OK", o.opType) + o.Logf("-> (%s) OK", o.opDesc) respond.Call([]reflect.Value{}) return } diff --git a/fuseops/convert.go b/fuseops/convert.go index ef4a297..5a477f7 100644 --- a/fuseops/convert.go +++ b/fuseops/convert.go @@ -15,7 +15,6 @@ package fuseops import ( - "reflect" "sync" "time" @@ -216,7 +215,7 @@ func Convert( return } - co.init(parentCtx, reflect.TypeOf(o), r, logForOp, opsInFlight) + co.init(parentCtx, o, r, logForOp, opsInFlight) return }