pcloud: openwriterat: set default hints
This commit is contained in:
parent
d1c054906c
commit
1aede367d1
1 changed files with 12 additions and 6 deletions
|
@ -385,22 +385,28 @@ func NewFs(ctx context.Context, name, root string, m configmap.Mapper) (fs.Fs, e
|
||||||
// Pass in the remote desired and the size if known.
|
// Pass in the remote desired and the size if known.
|
||||||
//
|
//
|
||||||
// It truncates any existing object
|
// It truncates any existing object
|
||||||
func (f *Fs) OpenWriterAt(ctx context.Context, remote string, size int64) (fs.WriterAtCloser, error) {
|
func (f *Fs) OpenWriterAt(ctx context.Context, remote string, size int64) (fs.OpenWriterAtInfo, fs.WriterAtCloser, error) {
|
||||||
|
info := fs.OpenWriterAtInfo{
|
||||||
|
BufferSize: int64(16 * 1024 * 1024),
|
||||||
|
ChunkSize: int64(16 * 1024 * 1024),
|
||||||
|
LeavePartsOnError: true,
|
||||||
|
}
|
||||||
|
|
||||||
client, err := f.newSingleConnClient(ctx)
|
client, err := f.newSingleConnClient(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("create client: %w", err)
|
return info, nil, fmt.Errorf("create client: %w", err)
|
||||||
}
|
}
|
||||||
// init an empty file
|
// init an empty file
|
||||||
leaf, directoryID, err := f.dirCache.FindPath(ctx, remote, true)
|
leaf, directoryID, err := f.dirCache.FindPath(ctx, remote, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("resolve src: %w", err)
|
return info, nil, fmt.Errorf("resolve src: %w", err)
|
||||||
}
|
}
|
||||||
openResult, err := fileOpenNew(ctx, client, f, directoryID, leaf)
|
openResult, err := fileOpenNew(ctx, client, f, directoryID, leaf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("open file: %w", err)
|
return info, nil, fmt.Errorf("open file: %w", err)
|
||||||
}
|
}
|
||||||
if _, err := fileClose(ctx, client, f.pacer, openResult.FileDescriptor); err != nil {
|
if _, err := fileClose(ctx, client, f.pacer, openResult.FileDescriptor); err != nil {
|
||||||
return nil, fmt.Errorf("close file: %w", err)
|
return info, nil, fmt.Errorf("close file: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
writer := &writerAt{
|
writer := &writerAt{
|
||||||
|
@ -411,7 +417,7 @@ func (f *Fs) OpenWriterAt(ctx context.Context, remote string, size int64) (fs.Wr
|
||||||
fileID: openResult.Fileid,
|
fileID: openResult.Fileid,
|
||||||
}
|
}
|
||||||
|
|
||||||
return writer, nil
|
return info, writer, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a new http client, accepting keep-alive headers, limited to single connection.
|
// Create a new http client, accepting keep-alive headers, limited to single connection.
|
||||||
|
|
Loading…
Reference in a new issue