forked from TrueCloudLab/frostfs-node
Add Inner Ring code
This commit is contained in:
parent
dadfd90dcd
commit
b7b5079934
400 changed files with 11420 additions and 8690 deletions
94
pkg/core/object/extended.go
Normal file
94
pkg/core/object/extended.go
Normal file
|
@ -0,0 +1,94 @@
|
|||
package object
|
||||
|
||||
// ExtendedHeaderType represents the enumeration
|
||||
// of extended header types of the NeoFS object.
|
||||
type ExtendedHeaderType uint32
|
||||
|
||||
// ExtendedHeader represents the extended
|
||||
// header of NeoFS object.
|
||||
type ExtendedHeader struct {
|
||||
typ ExtendedHeaderType
|
||||
|
||||
val interface{}
|
||||
}
|
||||
|
||||
// Type returns the extended header type.
|
||||
func (h ExtendedHeader) Type() ExtendedHeaderType {
|
||||
return h.typ
|
||||
}
|
||||
|
||||
// SetType sets the extended header type.
|
||||
func (h *ExtendedHeader) SetType(v ExtendedHeaderType) {
|
||||
h.typ = v
|
||||
}
|
||||
|
||||
// Value returns the extended header value.
|
||||
//
|
||||
// In the case of a reference type, the value is
|
||||
// returned by reference, so value mutations affect
|
||||
// header state. Therefore, callers must first copy
|
||||
// the value before changing manipulations.
|
||||
func (h ExtendedHeader) Value() interface{} {
|
||||
return h.val
|
||||
}
|
||||
|
||||
// SetValue sets the extended header value.
|
||||
//
|
||||
// Caller must take into account that each type of
|
||||
// header usually has a limited set of expected
|
||||
// value types.
|
||||
//
|
||||
// In the case of a reference type, the value is set
|
||||
// by reference, so source value mutations affect
|
||||
// header state. Therefore, callers must first copy
|
||||
// the source value before changing manipulations.
|
||||
func (h *ExtendedHeader) SetValue(v interface{}) {
|
||||
h.val = v
|
||||
}
|
||||
|
||||
// TypeFromUint32 converts builtin
|
||||
// uint32 value to Epoch.
|
||||
//
|
||||
// Try to avoid direct cast for
|
||||
// better portability.
|
||||
func TypeFromUint32(v uint32) ExtendedHeaderType {
|
||||
return ExtendedHeaderType(v)
|
||||
}
|
||||
|
||||
// TypeToUint32 converts Epoch value
|
||||
// to builtin uint32.
|
||||
//
|
||||
// Try to avoid direct cast for
|
||||
// better portability.
|
||||
func TypeToUint32(v ExtendedHeaderType) uint32 {
|
||||
return uint32(v)
|
||||
}
|
||||
|
||||
// TypesEQ reports whether t1 and t2 are the same ExtendedHeaderType.
|
||||
//
|
||||
// Function defines the relation of equality
|
||||
// between two ExtendedHeaderType. Try to avoid comparison through
|
||||
// "==" operator for better portability.
|
||||
func TypesEQ(t1, t2 ExtendedHeaderType) bool {
|
||||
return TypeToUint32(t1) == TypeToUint32(t2)
|
||||
}
|
||||
|
||||
// TypesLT reports whether t1 ExtendedHeaderType
|
||||
// is less than t2.
|
||||
//
|
||||
// Function defines the "less than" relation
|
||||
// between two ExtendedHeaderType. Try to avoid
|
||||
// comparison through "<" operator for better portability.
|
||||
func TypesLT(t1, t2 ExtendedHeaderType) bool {
|
||||
return TypeToUint32(t1) < TypeToUint32(t2)
|
||||
}
|
||||
|
||||
// TypesGT reports whether t1 ExtendedHeaderType
|
||||
// is greater than t2.
|
||||
//
|
||||
// Function defines the "greater than" relation
|
||||
// between two ExtendedHeaderType. Try to avoid
|
||||
// comparison through ">" operator for better portability.
|
||||
func TypesGT(t1, t2 ExtendedHeaderType) bool {
|
||||
return TypeToUint32(t1) > TypeToUint32(t2)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue