Split up convert.go a bit.

geesefs-0-30-9
Aaron Jacobs 2015-05-01 10:49:14 +10:00
parent 83f6f835b8
commit d599dcd23a
3 changed files with 91 additions and 55 deletions

73
fuseops/common_op.go Normal file
View File

@ -0,0 +1,73 @@
// Copyright 2015 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package fuseops
import (
"sync"
"github.com/jacobsa/bazilfuse"
"golang.org/x/net/context"
)
// A helper for embedding common behavior.
type commonOp struct {
opType string
ctx context.Context
r bazilfuse.Request
log func(int, string, ...interface{})
opsInFlight *sync.WaitGroup
}
func (o *commonOp) init(
opType string,
r bazilfuse.Request,
log func(int, string, ...interface{}),
opsInFlight *sync.WaitGroup) {
o.opType = opType
o.ctx = context.Background()
o.r = r
o.log = log
o.opsInFlight = opsInFlight
}
func (o *commonOp) Header() OpHeader {
bh := o.r.Hdr()
return OpHeader{
Uid: bh.Uid,
Gid: bh.Gid,
}
}
func (o *commonOp) Context() context.Context {
return o.ctx
}
func (o *commonOp) Logf(format string, v ...interface{}) {
const calldepth = 2
o.log(calldepth, format, v...)
}
func (o *commonOp) respondErr(err error) {
if err == nil {
panic("Expect non-nil here.")
}
o.Logf(
"-> (%s) error: %v",
o.opType,
err)
o.r.RespondError(err)
}

View File

@ -12,9 +12,6 @@
// See the License for the specific language governing permissions and
// limitations under the License.
// Package fuseops contains implementations of the fuse.Op interface that may
// be returned by fuse.Connection.ReadOp. See documentation in that package for
// more.
package fuseops
import (
@ -23,7 +20,6 @@ import (
"time"
"github.com/jacobsa/bazilfuse"
"golang.org/x/net/context"
)
// Convert the supplied bazilfuse request struct to an Op, returning nil if it
@ -264,54 +260,3 @@ func convertChildInodeEntry(
out.AttrValid = convertExpirationTime(in.AttributesExpiration)
out.EntryValid = convertExpirationTime(in.EntryExpiration)
}
// A helper for embedding common behavior.
type commonOp struct {
opType string
ctx context.Context
r bazilfuse.Request
log func(int, string, ...interface{})
opsInFlight *sync.WaitGroup
}
func (o *commonOp) init(
opType string,
r bazilfuse.Request,
log func(int, string, ...interface{}),
opsInFlight *sync.WaitGroup) {
o.opType = opType
o.ctx = context.Background()
o.r = r
o.log = log
o.opsInFlight = opsInFlight
}
func (o *commonOp) Header() OpHeader {
bh := o.r.Hdr()
return OpHeader{
Uid: bh.Uid,
Gid: bh.Gid,
}
}
func (o *commonOp) Context() context.Context {
return o.ctx
}
func (o *commonOp) Logf(format string, v ...interface{}) {
const calldepth = 2
o.log(calldepth, format, v...)
}
func (o *commonOp) respondErr(err error) {
if err == nil {
panic("Expect non-nil here.")
}
o.Logf(
"-> (%s) error: %v",
o.opType,
err)
o.r.RespondError(err)
}

18
fuseops/doc.go Normal file
View File

@ -0,0 +1,18 @@
// Copyright 2015 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Package fuseops contains implementations of the fuse.Op interface that may
// be returned by fuse.Connection.ReadOp. See documentation in that package for
// more.
package fuseops