forked from TrueCloudLab/xk6-frostfs
54 lines
1.4 KiB
Go
54 lines
1.4 KiB
Go
|
package registry
|
||
|
|
||
|
import (
|
||
|
"github.com/nspcc-dev/neo-go/pkg/io"
|
||
|
)
|
||
|
|
||
|
// ObjectInfo represents information about FrostFS object that has been created
|
||
|
// via gRPC/HTTP/S3 API.
|
||
|
type ObjectInfo struct {
|
||
|
Id uint64 // Identifier in bolt DB
|
||
|
CreatedAt int64 // UTC seconds from epoch when the object was created
|
||
|
CID string // Container ID in gRPC/HTTP
|
||
|
OID string // Object ID in gRPC/HTTP
|
||
|
S3Bucket string // Bucket name in S3
|
||
|
S3Key string // Object key in S3
|
||
|
Status string // Status of the object
|
||
|
PayloadHash string // SHA256 hash of object payload that can be used for verification
|
||
|
}
|
||
|
|
||
|
func (o ObjectInfo) EncodeBinary(w *io.BinWriter) {
|
||
|
w.WriteU64LE(o.Id)
|
||
|
w.WriteU64LE(uint64(o.CreatedAt))
|
||
|
w.WriteString(o.CID)
|
||
|
w.WriteString(o.OID)
|
||
|
w.WriteString(o.S3Bucket)
|
||
|
w.WriteString(o.S3Key)
|
||
|
w.WriteString(o.Status)
|
||
|
w.WriteString(o.PayloadHash)
|
||
|
}
|
||
|
|
||
|
func (o *ObjectInfo) DecodeBinary(r *io.BinReader) {
|
||
|
o.Id = r.ReadU64LE()
|
||
|
o.CreatedAt = int64(r.ReadU64LE())
|
||
|
o.CID = r.ReadString()
|
||
|
o.OID = r.ReadString()
|
||
|
o.S3Bucket = r.ReadString()
|
||
|
o.S3Key = r.ReadString()
|
||
|
o.Status = r.ReadString()
|
||
|
o.PayloadHash = r.ReadString()
|
||
|
}
|
||
|
|
||
|
func (o ObjectInfo) Marshal() ([]byte, error) {
|
||
|
w := io.NewBufBinWriter()
|
||
|
o.EncodeBinary(w.BinWriter)
|
||
|
err := w.Err // Bytes() sets Err to ErrDrained
|
||
|
return w.Bytes(), err
|
||
|
}
|
||
|
|
||
|
func (o *ObjectInfo) Unmarshal(data []byte) error {
|
||
|
r := io.NewBinReaderFromBuf(data)
|
||
|
o.DecodeBinary(r)
|
||
|
return r.Err
|
||
|
}
|