types

package
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 28, 2020 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CREATE_TIME_LAYOUT           = "2006-01-02T15:04:05.000Z"
	TIME_LAYOUT_TIDB             = "2006-01-02 15:04:05"
	INITIALIZATION_VECTOR_LENGTH = 16 // 12 bytes is best performance for GCM, but for CTR
	ObjectNameEnding             = ":"
	ObjectNameSeparator          = "\n"
	ObjectNameSmallestStr        = " "
	ResponseNumberOfRows         = 1024
)
View Source
const (
	LcEnding  = "Ending"
	LcPending = "Pending"
)
View Source
const (
	DeadLineForStandardIa = 720 * time.Hour  // 30 days
	DeadLineForGlacier    = 1440 * time.Hour // 60 days
)
View Source
const NullVersion = "0"

Variables

View Source
var (
	//XXTEA_KEY         = []byte("hehehehe")
	SSE_S3_MASTER_KEY = []byte("hehehehehehehehehehehehehehehehe") // 32 bytes to select AES-256
)

Functions

func DecodeUint64

func DecodeUint64(bin []byte) uint64

func EncodeUint64

func EncodeUint64(i uint64) []byte

func GetInitialTimeFromUploadId

func GetInitialTimeFromUploadId(uploadId string) (uint64, error)

func GetMultipartUploadIdByDbTime

func GetMultipartUploadIdByDbTime(uploadtime uint64) string

Types

type BackendType

type BackendType uint8
const (
	BackendCeph BackendType = iota
)

type Bucket

type Bucket struct {
	Name string
	// Date and time when the bucket was created,
	// should be serialized into format "2006-01-02T15:04:05.000Z"
	CreateTime    time.Time
	OwnerId       string
	CORS          datatype.Cors
	ACL           datatype.Acl
	BucketLogging datatype.BucketLoggingStatus
	Lifecycle     lifecycle.Lifecycle
	Policy        []byte // need to MarshalJSON
	Website       datatype.WebsiteConfiguration
	Encryption    datatype.EncryptionConfiguration
	Versioning    datatype.BucketVersioningType // actually enum: Disabled/Enabled/Suspended
	Usage         int64
}

func (Bucket) GetCreateSql

func (b Bucket) GetCreateSql() (string, []interface{})

func (Bucket) GetUpdateSql

func (b Bucket) GetUpdateSql() (string, []interface{})

Tidb related function

func (*Bucket) String

func (b *Bucket) String() (s string)

type Cluster

type Cluster struct {
	Backend BackendType
	Fsid    string
	Pool    string
	Weight  int
}

type CompleteMultipartUpload

type CompleteMultipartUpload struct {
	Parts []CompletePart `xml:"Part"`
}

completeMultipartUpload - represents input fields for completing multipart upload.

type CompletePart

type CompletePart struct {
	// Part number identifying the part. This is a positive integer between 1 and
	// 10,000
	PartNumber int

	// Entity tag returned when the part was uploaded.
	ETag string
}

completePart - completed part container.

type CompletedParts

type CompletedParts []CompletePart

completedParts - is a collection satisfying sort.Interface.

func (CompletedParts) Len

func (a CompletedParts) Len() int

func (CompletedParts) Less

func (a CompletedParts) Less(i, j int) bool

func (CompletedParts) Swap

func (a CompletedParts) Swap(i, j int)

type Freezer

type Freezer struct {
	Name             string
	BucketName       string
	VersionId        string    // version cache
	Location         string    // which Ceph cluster this object locates
	Pool             string    // which Ceph pool this object locates
	Size             int64     // file size
	ObjectId         string    // object name in Ceph
	LastModifiedTime time.Time // in format "2006-01-02T15:04:05.000Z"
	Parts            map[int]*Part
	PartsIndex       *SimpleIndex
	Status           RestoreStatus
	LifeTime         int // Days to thaw
	Type             ObjectType
	CreateTime       uint64 // Timestamp(nanosecond)
}

func (*Freezer) GetCreateSql

func (o *Freezer) GetCreateSql() (string, []interface{})

func (*Freezer) GetUpdateSql

func (o *Freezer) GetUpdateSql(status RestoreStatus) (string, []interface{})

func (*Freezer) ToObject

func (f *Freezer) ToObject() (o Object)

type GarbageCollection

type GarbageCollection struct {
	Rowkey     string // rowkey cache
	BucketName string
	ObjectName string
	VersionId  string
	Location   string
	Pool       string
	ObjectId   string
	Status     string    // status of this entry, in Pending/Deleting
	MTime      time.Time // last modify time of status
	Parts      map[int]*Part
	TriedTimes int
}

func GetGcInfoFromObject

func GetGcInfoFromObject(o *Object) (gc GarbageCollection)

type LifeCycle

type LifeCycle struct {
	BucketName string
	Status     string // status of this entry, in Pending/Ending
	StartTime  uint64 // Timestamp(nanosecond)
	EndTime    uint64 // Timestamp(nanosecond)
}

func (LifeCycle) GetCreateSql

func (l LifeCycle) GetCreateSql() (string, []interface{})

func (LifeCycle) GetUpdateSql

func (l LifeCycle) GetUpdateSql() (string, []interface{})

type ListHotObjectsInfo

type ListHotObjectsInfo struct {
	// Indicates whether the returned list objects response is truncated. A
	// value of true indicates that the list was truncated. The list can be truncated
	// if the number of objects exceeds the limit allowed or specified
	// by max keys.
	IsTruncated bool

	// When response is truncated (the IsTruncated element value in the response
	// is true), you can use the key name in this field as marker in the subsequent
	// request to get next set of objects.
	//
	// NOTE: This element is returned only if you have delimiter request parameter
	// specified.
	NextMarker string

	// List of objects info for this request.
	Objects []*Object
}

ListObjectsInfo - container for list objects.

type ListObjectsInfo

type ListObjectsInfo struct {
	// Indicates whether the returned list objects response is truncated. A
	// value of true indicates that the list was truncated. The list can be truncated
	// if the number of objects exceeds the limit allowed or specified
	// by max keys.
	IsTruncated bool

	// When response is truncated (the IsTruncated element value in the response
	// is true), you can use the key name in this field as marker in the subsequent
	// request to get next set of objects.
	//
	// NOTE: This element is returned only if you have delimiter request parameter
	// specified.
	NextMarker string

	// List of objects info for this request.
	Objects []datatype.Object

	// List of prefixes for this request.
	Prefixes []string
}

ListObjectsInfo - container for list objects.

type Multipart

type Multipart struct {
	BucketName  string
	ObjectName  string
	InitialTime uint64
	UploadId    string // upload id cache
	Metadata    MultipartMetadata
	Parts       map[int]*Part
}

func (*Multipart) GenUploadId

func (m *Multipart) GenUploadId() error

type MultipartMetadata

type MultipartMetadata struct {
	InitiatorId   string
	OwnerId       string
	ContentType   string
	Location      string
	Pool          string
	Acl           datatype.Acl
	SseRequest    datatype.SseRequest
	EncryptionKey []byte
	CipherKey     []byte
	Attrs         map[string]string
	StorageClass  StorageClass
}

type Object

type Object struct {
	Rowkey           []byte // Rowkey cache
	Name             string
	BucketName       string
	Location         string // which Ceph cluster this object locates
	Pool             string // which Ceph pool this object locates
	OwnerId          string
	Size             int64     // file size
	ObjectId         string    // object name in Ceph
	LastModifiedTime time.Time // in format "2006-01-02T15:04:05.000Z"
	Etag             string
	ContentType      string
	CustomAttributes map[string]string
	Parts            map[int]*Part
	PartsIndex       *SimpleIndex
	ACL              datatype.Acl
	NullVersion      bool   // if this entry has `null` version
	DeleteMarker     bool   // if this entry is a delete marker
	VersionId        string // version cache
	// type of Server Side Encryption, could be "SSE-KMS", "SSE-S3", "SSE-C"(custom), or ""(none),
	// KMS is not implemented yet
	SseType string
	// encryption key for SSE-S3, the key itself is encrypted with SSE_S3_MASTER_KEY,
	// in AES256-GCM
	EncryptionKey        []byte
	InitializationVector []byte
	// ObjectType include `Normal`, `Appendable`, 'Multipart'
	Type         ObjectType
	StorageClass StorageClass
	CreateTime   uint64 // Timestamp(nanosecond)

	DeltaSize int64 // record delta size when update
}

func (*Object) GenVersionId

func (o *Object) GenVersionId(bucketVersionType datatype.BucketVersioningType) string

func (*Object) GetCreateHotSql

func (o *Object) GetCreateHotSql() (string, []interface{})

func (*Object) GetCreateSql

func (o *Object) GetCreateSql() (string, []interface{})

func (*Object) GetGlacierUpdateSql

func (o *Object) GetGlacierUpdateSql() (string, []interface{})

func (*Object) GetRemoveHotSql

func (o *Object) GetRemoveHotSql() (string, []interface{})

func (*Object) GetReplaceObjectMetasSql

func (o *Object) GetReplaceObjectMetasSql() (string, []interface{})

func (*Object) GetUpdateAclSql

func (o *Object) GetUpdateAclSql() (string, []interface{})

func (*Object) GetUpdateAttrsSql

func (o *Object) GetUpdateAttrsSql() (string, []interface{})

func (*Object) GetUpdateHotSql

func (o *Object) GetUpdateHotSql() (string, []interface{})

func (*Object) GetUpdateNameSql

func (o *Object) GetUpdateNameSql(sourceObject string) (string, []interface{})

func (*Object) GetUpdateObjectPartNameSql

func (o *Object) GetUpdateObjectPartNameSql(sourceObject string) (string, []interface{})

func (*Object) GetUpdateSql

func (o *Object) GetUpdateSql() (string, []interface{})

func (*Object) IsUnexpired

func (o *Object) IsUnexpired() (bool, int64)

func (*Object) ObjectTypeToString

func (o *Object) ObjectTypeToString() string

func (*Object) String

func (o *Object) String() (s string)

type ObjectType

type ObjectType int
const (
	ObjectTypeNormal     ObjectType = 0
	ObjectTypeAppendable ObjectType = 1
	ObjectTypeMultipart  ObjectType = 2
)

type Part

type Part struct {
	PartNumber int
	Size       int64
	ObjectId   string

	// offset of this part in whole object, calculated when moving parts from
	// `multiparts` table to `objects` table
	Offset               int64
	Etag                 string
	LastModified         string // time string of format "2006-01-02T15:04:05.000Z"
	InitializationVector []byte

	BucketName string
	ObjectName string
	Version    uint64
}

func (*Part) GetCreateGcSql

func (p *Part) GetCreateGcSql(bucketname, objectname string, version uint64) (string, []interface{})

func (*Part) GetCreateSql

func (p *Part) GetCreateSql(bucketname, objectname, version string) (string, []interface{})

type PartTooSmall

type PartTooSmall struct {
	PartSize   int64
	PartNumber int
	PartETag   string
}

PartTooSmall - error if part size is less than 5MB.

func (PartTooSmall) Error

func (e PartTooSmall) Error() string

type ScanLifeCycleResult

type ScanLifeCycleResult struct {
	Truncated  bool
	NextMarker string
	// List of LifeCycles info for this request.
	Lcs []LifeCycle
}

type SimpleIndex

type SimpleIndex struct {
	Index []int64
}

func (*SimpleIndex) SearchLowerBound

func (array *SimpleIndex) SearchLowerBound(key int64) int

func (*SimpleIndex) SearchUpperBound

func (array *SimpleIndex) SearchUpperBound(key int64) int

type UserQos

type UserQos struct {
	UserID    string
	ReadQps   int
	WriteQps  int
	Bandwidth int // in KiBps
}

type Users

type Users struct {
	OwnerId    string
	BucketName string
	Standard   uint64
	StandardIa uint64
	Glacier    uint64
}

type VersionedListObjectsInfo

type VersionedListObjectsInfo struct {
	IsTruncated         bool
	NextKeyMarker       string
	NextVersionIdMarker string
	Objects             []datatype.VersionedObject
	Prefixes            []string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL