util/file: allow context to be passed (#1950)
This commit is contained in:
parent
cf9bdd0f99
commit
cf084b410f
@ -28,8 +28,18 @@ type File interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewClient returns a new Client which uses a micro Client
|
// NewClient returns a new Client which uses a micro Client
|
||||||
func New(service string, c client.Client) File {
|
func New(service string, c client.Client, opts ...Option) File {
|
||||||
return &fc{proto.NewFileService(service, c)}
|
options := Options{
|
||||||
|
Context: context.TODO(),
|
||||||
|
}
|
||||||
|
for _, o := range opts {
|
||||||
|
o(&options)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &fc{
|
||||||
|
c: proto.NewFileService(service, c),
|
||||||
|
opts: options,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -38,10 +48,11 @@ const (
|
|||||||
|
|
||||||
type fc struct {
|
type fc struct {
|
||||||
c proto.FileService
|
c proto.FileService
|
||||||
|
opts Options
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *fc) Open(filename string, truncate bool) (int64, error) {
|
func (c *fc) Open(filename string, truncate bool) (int64, error) {
|
||||||
rsp, err := c.c.Open(context.TODO(), &proto.OpenRequest{
|
rsp, err := c.c.Open(c.opts.Context, &proto.OpenRequest{
|
||||||
Filename: filename,
|
Filename: filename,
|
||||||
Truncate: truncate,
|
Truncate: truncate,
|
||||||
})
|
})
|
||||||
@ -52,7 +63,7 @@ func (c *fc) Open(filename string, truncate bool) (int64, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *fc) Stat(filename string) (*proto.StatResponse, error) {
|
func (c *fc) Stat(filename string) (*proto.StatResponse, error) {
|
||||||
return c.c.Stat(context.TODO(), &proto.StatRequest{Filename: filename})
|
return c.c.Stat(c.opts.Context, &proto.StatRequest{Filename: filename})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *fc) GetBlock(sessionId, blockId int64) ([]byte, error) {
|
func (c *fc) GetBlock(sessionId, blockId int64) ([]byte, error) {
|
||||||
@ -60,7 +71,7 @@ func (c *fc) GetBlock(sessionId, blockId int64) ([]byte, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *fc) ReadAt(sessionId, offset, size int64) ([]byte, error) {
|
func (c *fc) ReadAt(sessionId, offset, size int64) ([]byte, error) {
|
||||||
rsp, err := c.c.Read(context.TODO(), &proto.ReadRequest{Id: sessionId, Size: size, Offset: offset})
|
rsp, err := c.c.Read(c.opts.Context, &proto.ReadRequest{Id: sessionId, Size: size, Offset: offset})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -90,7 +101,7 @@ func (c *fc) Read(sessionId int64, buf []byte) (int, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *fc) Write(sessionId, offset int64, data []byte) error {
|
func (c *fc) Write(sessionId, offset int64, data []byte) error {
|
||||||
_, err := c.c.Write(context.TODO(), &proto.WriteRequest{
|
_, err := c.c.Write(c.opts.Context, &proto.WriteRequest{
|
||||||
Id: sessionId,
|
Id: sessionId,
|
||||||
Offset: offset,
|
Offset: offset,
|
||||||
Data: data})
|
Data: data})
|
||||||
@ -98,7 +109,7 @@ func (c *fc) Write(sessionId, offset int64, data []byte) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *fc) Close(sessionId int64) error {
|
func (c *fc) Close(sessionId int64) error {
|
||||||
_, err := c.c.Close(context.TODO(), &proto.CloseRequest{Id: sessionId})
|
_, err := c.c.Close(c.opts.Context, &proto.CloseRequest{Id: sessionId})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
15
util/file/options.go
Normal file
15
util/file/options.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package file
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
|
type Options struct {
|
||||||
|
Context context.Context
|
||||||
|
}
|
||||||
|
|
||||||
|
type Option func(o *Options)
|
||||||
|
|
||||||
|
func WithContext(ctx context.Context) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.Context = ctx
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user