ensure 64 bit alignment for 64 bit struct fields access atomically

This commit is contained in:
Nicola Murino 2020-12-14 14:52:36 +01:00
parent 14d1b82f6b
commit ea0bf5e4c8
No known key found for this signature in database
GPG key ID: 2F1FB59433D5A8CB
2 changed files with 8 additions and 7 deletions

View file

@ -20,6 +20,9 @@ import (
// BaseConnection defines common fields for a connection using any supported protocol
type BaseConnection struct {
// last activity for this connection.
// Since this is accessed atomically we put as first element of the struct achieve 64 bit alignment
lastActivity int64
// Unique identifier for the connection
ID string
// user associated with this connection if any
@ -29,8 +32,6 @@ type BaseConnection struct {
protocol string
Fs vfs.Fs
sync.RWMutex
// last activity for this connection
lastActivity int64
transferID uint64
activeTransfers []ActiveTransfer
}

View file

@ -21,20 +21,20 @@ var (
// BaseTransfer contains protocols common transfer details for an upload or a download.
type BaseTransfer struct { //nolint:maligned
ID uint64
BytesSent int64
BytesReceived int64
Fs vfs.Fs
File vfs.File
Connection *BaseConnection
cancelFn func()
fsPath string
requestPath string
start time.Time
transferType int
MaxWriteSize int64
MinWriteOffset int64
InitialSize int64
isNewFile bool
requestPath string
BytesSent int64
BytesReceived int64
MaxWriteSize int64
transferType int
AbortTransfer int32
sync.Mutex
ErrTransfer error