object

package
v0.0.0-...-4a740ba Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2022 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DomainName = "object.protocol"
)
View Source
const MetadataLength uint32 = 64

Variables

View Source
var (
	ErrDeviceProblem = er.New("urn:giti:object.protocol:error:device-problem").SetDetail(protocol.LanguageEnglish, errorEnglishDomain, "Device Problem",
		"Requested object exist on the device that had problem to access it!",
		"",
		"").Save()

	ErrExist = er.New("urn:giti:object.protocol:error:exist").SetDetail(protocol.LanguageEnglish, errorEnglishDomain, "Object Exist",
		"Request to make new object can't proccessed due to UUID already exist",
		"",
		"").Save()

	ErrNotExist = er.New("urn:giti:object.protocol:error:not-exist").SetDetail(protocol.LanguageEnglish, errorEnglishDomain, "Not Exist",
		"Requested object not exist",
		"",
		"").Save()

	ErrNotAuthorize = er.New("urn:giti:object.protocol:error:not-authorize").SetDetail(protocol.LanguageEnglish, errorEnglishDomain, "Not Authorized",
		"Requested object belong to other app owner and this app can't access to it",
		"",
		"").Save()

	ErrMisMatchedStructureID = er.New("urn:giti:object.protocol:error:mis-matched-structure-id").SetDetail(protocol.LanguageEnglish, errorEnglishDomain, "Mis Matched StructureID",
		"Can't read object data due to it StructureID not match with desire one",
		"",
		"").Save()

	ErrObjectNotFound = er.New("urn:giti:object.protocol:error:object-not-found").SetDetail(protocol.LanguageEnglish, errorEnglishDomain, "Object Not Found",
		"Can't find a object with desire data",
		"",
		"").SetDetail(protocol.LanguagePersian, errorPersianDomain, "رکود یافت نشد",
		"رکورد با مشخصات مورد نظر یافت نشد",
		"",
		"").Save()

	ErrSourceNotChangeable = er.New("urn:giti:object.protocol:error:source-not-changeable").SetDetail(protocol.LanguageEnglish, errorEnglishDomain, "Source not Changeable",
		"Can't read from other source than object source",
		"You can't set/write data in this way",
		"Use Save() method in the object directory").Save()
)

Errors

View Source
var DeleteService = deleteService{
	Service: service.New("urn:giti:object.protocol:service:delete", "", protocol.ServiceStatePreAlpha, 1587282740).
		SetDetail(protocol.LanguageEnglish, "Delete Object",
			`Delete specific object by given ID in all cluster!
We don't suggest use this service, due to we strongly suggest think about data as immutable entity(stream and time)
It won't delete object history or indexes associate to it!`,
			[]string{}).
		SetAuthorization(protocol.CRUDDelete, protocol.UserTypeApp).Expired(0, ""),
}
View Source
var GetMetadataService = getMetadataService{
	Service: service.New("urn:giti:object.protocol:service:get-metadata", "", protocol.ServiceStatePreAlpha, 1587282740).
		SetDetail(protocol.LanguageEnglish, "Get Metadata",
			`use to get an object by the objectID and structureID! It must send to proper node otherwise get not found error!`,
			[]string{}).
		SetAuthorization(protocol.CRUDRead, protocol.UserTypeApp).Expired(0, ""),
}
View Source
var GetService = getService{
	Service: service.New("urn:giti:object.protocol:service:get", "", protocol.ServiceStatePreAlpha, 1587282740).
		SetDetail(protocol.LanguageEnglish, "Get",
			`use to get an object by the objectID and structureID! In multi node application, Request must send to proper node otherwise get not found error!`,
			[]string{}).
		SetAuthorization(protocol.CRUDRead, protocol.UserTypeApp).Expired(0, ""),
}
View Source
var ReadService = readService{
	Service: service.New("urn:giti:object.protocol:service:read", "", protocol.ServiceStatePreAlpha, 1587282740).
		SetDetail(protocol.LanguageEnglish, "Read",
			`use to read some part of an object! It must send to proper node otherwise get not found error!
Mostly use to get metadata first to know about object size before get it to split to some shorter part!`,
			[]string{}).
		SetAuthorization(protocol.CRUDRead, protocol.UserTypeApp).Expired(0, ""),
}
View Source
var SaveService = saveService{
	Service: service.New("urn:giti:object.protocol:service:save", "", protocol.ServiceStatePreAlpha, 1587282740).
		SetDetail(protocol.LanguageEnglish, "Save",
			`Write the object to storage engine. To replace old one you need to delete old`,
			[]string{}).
		SetAuthorization(protocol.CRUDCreate, protocol.UserTypeApp).Expired(0, ""),
}
View Source
var WipeService = wipeService{
	Service: service.New("urn:giti:object.protocol:service:wipe", "", protocol.ServiceStatePreAlpha, 1587282740).
		SetDetail(protocol.LanguageEnglish, "Wipe Object",
			`Wipe specific object by given ID in all cluster!
We don't suggest use this service, due to we strongly suggest think about data as immutable entity(stream and time)
It won't wipe object history or indexes associate to it!`,
			[]string{}).
		SetAuthorization(protocol.CRUDDelete, protocol.UserTypeApp).Expired(0, ""),
}
View Source
var WriteService = writeService{
	Service: service.New("urn:giti:object.protocol:service:write", "", protocol.ServiceStatePreAlpha, 1587282740).
		SetDetail(protocol.LanguageEnglish, "Write",
			`write some part of a object! Don't use this service until you force to use!
Recalculate checksum do in database server that is not so efficient!`,
			[]string{}).
		SetAuthorization(protocol.CRUDUpdate, protocol.UserTypeApp).Expired(0, ""),
}

Functions

This section is empty.

Types

type DeleteRequest

type DeleteRequest struct {
	// contains filtered or unexported fields
}

DeleteRequest is request structure of Delete()

func (*DeleteRequest) CheckSyllab

func (req *DeleteRequest) CheckSyllab(payload []byte) (err protocol.Error)

methods to implements protocol.Syllab interface

func (*DeleteRequest) FromSyllab

func (req *DeleteRequest) FromSyllab(payload []byte, stackIndex uint32)

func (*DeleteRequest) LenAsSyllab

func (req *DeleteRequest) LenAsSyllab() uint64

func (*DeleteRequest) LenOfSyllabHeap

func (req *DeleteRequest) LenOfSyllabHeap() (ln uint32)

func (*DeleteRequest) LenOfSyllabStack

func (req *DeleteRequest) LenOfSyllabStack() uint32

func (*DeleteRequest) ObjectID

func (req *DeleteRequest) ObjectID() [32]byte

func (*DeleteRequest) ObjectStructureID

func (req *DeleteRequest) ObjectStructureID() uint64

func (*DeleteRequest) RequestType

func (req *DeleteRequest) RequestType() RequestType

methods to implements deleteRequest interface

func (*DeleteRequest) SetObjectID

func (req *DeleteRequest) SetObjectID(id [32]byte)

func (*DeleteRequest) SetObjectStructureID

func (req *DeleteRequest) SetObjectStructureID(sID uint64)

func (*DeleteRequest) SetRequestType

func (req *DeleteRequest) SetRequestType(rt RequestType)

func (*DeleteRequest) ToSyllab

func (req *DeleteRequest) ToSyllab(payload []byte, stackIndex, heapIndex uint32) (freeHeapIndex uint32)

type Directory

type Directory struct{}

Directory implement protocol.ObjectDirectory to be distributed object storage

func (*Directory) Delete

func (dir *Directory) Delete(uuid [32]byte, structureID uint64) (err protocol.Error)

Delete delete the object by object-UUID

func (*Directory) Get

func (dir *Directory) Get(uuid [32]byte, structureID uint64) (obj protocol.Object, err protocol.Error)

Get return the whole object as metadata and data

func (*Directory) Read

func (dir *Directory) Read(uuid [32]byte, osID uint64, offset, limit uint64) (data []byte, err protocol.Error)

Read return requested part of object data.

func (*Directory) Save

func (dir *Directory) Save(data protocol.Codec) (metadata protocol.ObjectMetadata, err protocol.Error)

func (*Directory) Wipe

func (dir *Directory) Wipe(uuid [32]byte, structureID uint64) (err protocol.Error)

Wipe make invisible by remove from primary index & write random data to object location

type GetMetadataRequest

type GetMetadataRequest struct {
	// contains filtered or unexported fields
}

GetMetadataRequest is request structure of Object()

func (*GetMetadataRequest) CheckSyllab

func (req *GetMetadataRequest) CheckSyllab(payload []byte) (err protocol.Error)

methods to implements protocol.Syllab interface

func (*GetMetadataRequest) FromSyllab

func (req *GetMetadataRequest) FromSyllab(payload []byte, stackIndex uint32)

func (*GetMetadataRequest) LenAsSyllab

func (req *GetMetadataRequest) LenAsSyllab() uint64

func (*GetMetadataRequest) LenOfSyllabHeap

func (req *GetMetadataRequest) LenOfSyllabHeap() (ln uint32)

func (*GetMetadataRequest) LenOfSyllabStack

func (req *GetMetadataRequest) LenOfSyllabStack() uint32

func (*GetMetadataRequest) ObjectID

func (req *GetMetadataRequest) ObjectID() [32]byte

methods to implements getRequest interface

func (*GetMetadataRequest) ObjectStructureID

func (req *GetMetadataRequest) ObjectStructureID() uint64

func (*GetMetadataRequest) ToSyllab

func (req *GetMetadataRequest) ToSyllab(payload []byte, stackIndex, heapIndex uint32) (freeHeapIndex uint32)

type GetRequest

type GetRequest struct {
	// contains filtered or unexported fields
}

GetRequest is request structure of Get()

func (*GetRequest) CheckSyllab

func (req *GetRequest) CheckSyllab(payload []byte) (err protocol.Error)

methods to implements protocol.Syllab interface

func (*GetRequest) FromSyllab

func (req *GetRequest) FromSyllab(payload []byte, stackIndex uint32)

func (*GetRequest) LenAsSyllab

func (req *GetRequest) LenAsSyllab() uint64

func (*GetRequest) LenOfSyllabHeap

func (req *GetRequest) LenOfSyllabHeap() (ln uint32)

func (*GetRequest) LenOfSyllabStack

func (req *GetRequest) LenOfSyllabStack() uint32

func (*GetRequest) ObjectID

func (req *GetRequest) ObjectID() [32]byte

methods to implements getRequest interface

func (*GetRequest) ObjectStructureID

func (req *GetRequest) ObjectStructureID() uint64

func (*GetRequest) SetObjectID

func (req *GetRequest) SetObjectID(oID [32]byte)

func (*GetRequest) SetObjectStructureID

func (req *GetRequest) SetObjectStructureID(osID uint64)

func (*GetRequest) ToSyllab

func (req *GetRequest) ToSyllab(payload []byte, stackIndex, heapIndex uint32) (freeHeapIndex uint32)

type Metadata

type Metadata []byte

Metadata is the header structure of an object!

func (Metadata) CheckSyllab

func (md Metadata) CheckSyllab(payload []byte) (err protocol.Error)

methods to implements protocol.Syllab interface

func (Metadata) CompressTypeID

func (md Metadata) CompressTypeID() uint64

func (Metadata) DataLength

func (md Metadata) DataLength() uint64

func (Metadata) FromSyllab

func (md Metadata) FromSyllab(payload []byte, stackIndex uint32)

func (Metadata) ID

func (md Metadata) ID() (id [32]byte)

methods to implements protocol.ObjectMetadata interface

func (Metadata) LenAsSyllab

func (md Metadata) LenAsSyllab() uint64

func (Metadata) LenOfSyllabHeap

func (md Metadata) LenOfSyllabHeap() (ln uint32)

func (Metadata) LenOfSyllabStack

func (md Metadata) LenOfSyllabStack() uint32

func (Metadata) MediaTypeID

func (md Metadata) MediaTypeID() uint64

func (Metadata) ToSyllab

func (md Metadata) ToSyllab(payload []byte, stackIndex, heapIndex uint32) (freeHeapIndex uint32)

func (Metadata) WriteTime

func (md Metadata) WriteTime() protocol.Time

type Object

type Object []byte

Object has needed methods to implements protocol.Object interface!

func NewObject

func NewObject(data protocol.Codec) Object

func (Object) CheckSyllab

func (ob Object) CheckSyllab(payload []byte) (err protocol.Error)

func (Object) CompressType

func (ob Object) CompressType() protocol.CompressType

func (Object) Data

func (ob Object) Data() protocol.Codec

func (Object) Decode

func (ob Object) Decode(reader io.Reader) (err protocol.Error)

func (Object) Encode

func (ob Object) Encode(writer io.Writer) (err error)

func (Object) FromSyllab

func (ob Object) FromSyllab(payload []byte, stackIndex uint32)

func (Object) Len

func (ob Object) Len() int

func (Object) LenAsSyllab

func (ob Object) LenAsSyllab() uint64

func (Object) LenOfSyllabHeap

func (ob Object) LenOfSyllabHeap() (ln uint32)

func (Object) LenOfSyllabStack

func (ob Object) LenOfSyllabStack() uint32

func (Object) Marshal

func (ob Object) Marshal() (data []byte)

func (Object) MarshalTo

func (ob Object) MarshalTo(data []byte) []byte

func (Object) MediaType

func (ob Object) MediaType() protocol.MediaType

func (Object) Metadata

func (ob Object) Metadata() protocol.ObjectMetadata

func (Object) ReadFrom

func (ob Object) ReadFrom(reader io.Reader) (n int64, err error)

func (Object) ToSyllab

func (ob Object) ToSyllab(payload []byte, stackIndex, heapIndex uint32) (freeHeapIndex uint32)

func (Object) Unmarshal

func (ob Object) Unmarshal(data []byte) (err protocol.Error)

func (Object) WriteTo

func (ob Object) WriteTo(writer io.Writer) (n int64, err error)

type ReadRequest

type ReadRequest struct {
	// contains filtered or unexported fields
}

ReadRequest is request structure of Read()

func (*ReadRequest) CheckSyllab

func (req *ReadRequest) CheckSyllab(payload []byte) (err protocol.Error)

methods to implements protocol.Syllab interface

func (*ReadRequest) FromSyllab

func (req *ReadRequest) FromSyllab(payload []byte, stackIndex uint32)

func (*ReadRequest) LenAsSyllab

func (req *ReadRequest) LenAsSyllab() uint64

func (*ReadRequest) LenOfSyllabHeap

func (req *ReadRequest) LenOfSyllabHeap() (ln uint32)

func (*ReadRequest) LenOfSyllabStack

func (req *ReadRequest) LenOfSyllabStack() uint32

func (*ReadRequest) Limit

func (req *ReadRequest) Limit() uint64

func (*ReadRequest) ObjectID

func (req *ReadRequest) ObjectID() [32]byte

methods to implements readRequest interface

func (*ReadRequest) ObjectStructureID

func (req *ReadRequest) ObjectStructureID() uint64

func (*ReadRequest) Offset

func (req *ReadRequest) Offset() uint64

func (*ReadRequest) SetLimit

func (req *ReadRequest) SetLimit(limit uint64)

func (*ReadRequest) SetObjectID

func (req *ReadRequest) SetObjectID(oID [32]byte)

func (*ReadRequest) SetObjectStructureID

func (req *ReadRequest) SetObjectStructureID(osID uint64)

func (*ReadRequest) SetOffset

func (req *ReadRequest) SetOffset(offset uint64)

func (*ReadRequest) ToSyllab

func (req *ReadRequest) ToSyllab(payload []byte, stackIndex, heapIndex uint32) (freeHeapIndex uint32)

type ReadResponse

type ReadResponse struct {
	// contains filtered or unexported fields
}

ReadResponse is response structure of Read Serice

func (ReadResponse) CheckSyllab

func (req ReadResponse) CheckSyllab(payload []byte) (err protocol.Error)

methods to implements protocol.Syllab interface

func (ReadResponse) Data

func (req ReadResponse) Data() []byte

methods to implements readResponse interface

func (ReadResponse) FromSyllab

func (res ReadResponse) FromSyllab(payload []byte, stackIndex uint32)

func (ReadResponse) LenAsSyllab

func (res ReadResponse) LenAsSyllab() uint64

func (ReadResponse) LenOfSyllabHeap

func (res ReadResponse) LenOfSyllabHeap() (ln uint32)

func (ReadResponse) LenOfSyllabStack

func (res ReadResponse) LenOfSyllabStack() uint32

func (ReadResponse) ToSyllab

func (res ReadResponse) ToSyllab(payload []byte, stackIndex, heapIndex uint32) (freeHeapIndex uint32)

type RequestType

type RequestType uint8

RequestType indicate request type!

const (
	RequestTypeStandalone RequestType = iota
	RequestTypeBroadcast
)

Services request types

type SaveRequest

type SaveRequest struct {
	// contains filtered or unexported fields
}

SaveRequest is request structure of Save()

func (*SaveRequest) CheckSyllab

func (req *SaveRequest) CheckSyllab(payload []byte) (err protocol.Error)

methods to implements protocol.Syllab interface

func (*SaveRequest) FromSyllab

func (req *SaveRequest) FromSyllab(payload []byte, stackIndex uint32)

func (*SaveRequest) LenAsSyllab

func (req *SaveRequest) LenAsSyllab() uint64

func (*SaveRequest) LenOfSyllabHeap

func (req *SaveRequest) LenOfSyllabHeap() (ln uint32)

func (*SaveRequest) LenOfSyllabStack

func (req *SaveRequest) LenOfSyllabStack() uint32

func (*SaveRequest) Object

func (req *SaveRequest) Object() (objectID []byte)

func (*SaveRequest) RequestType

func (req *SaveRequest) RequestType() RequestType

methods to implements saveRequest interface

func (*SaveRequest) SetRequestType

func (req *SaveRequest) SetRequestType(rt RequestType)

func (*SaveRequest) ToSyllab

func (req *SaveRequest) ToSyllab(payload []byte, stackIndex, heapIndex uint32) (freeHeapIndex uint32)

type WipeRequest

type WipeRequest struct {
	// contains filtered or unexported fields
}

WipeRequest is request structure of Wipe()

func (*WipeRequest) CheckSyllab

func (req *WipeRequest) CheckSyllab(payload []byte) (err protocol.Error)

methods to implements protocol.Syllab interface

func (*WipeRequest) FromSyllab

func (req *WipeRequest) FromSyllab(payload []byte, stackIndex uint32)

func (*WipeRequest) LenAsSyllab

func (req *WipeRequest) LenAsSyllab() uint64

func (*WipeRequest) LenOfSyllabHeap

func (req *WipeRequest) LenOfSyllabHeap() (ln uint32)

func (*WipeRequest) LenOfSyllabStack

func (req *WipeRequest) LenOfSyllabStack() uint32

func (*WipeRequest) ObjectID

func (req *WipeRequest) ObjectID() [32]byte

func (*WipeRequest) ObjectStructureID

func (req *WipeRequest) ObjectStructureID() uint64

func (*WipeRequest) RequestType

func (req *WipeRequest) RequestType() RequestType

methods to implements wipeRequest interface

func (*WipeRequest) SetObjectID

func (req *WipeRequest) SetObjectID(id [32]byte)

func (*WipeRequest) SetObjectStructureID

func (req *WipeRequest) SetObjectStructureID(sID uint64)

func (*WipeRequest) SetRequestType

func (req *WipeRequest) SetRequestType(rt RequestType)

func (*WipeRequest) ToSyllab

func (req *WipeRequest) ToSyllab(payload []byte, stackIndex, heapIndex uint32) (freeHeapIndex uint32)

type WriteReq

type WriteReq struct {
	// contains filtered or unexported fields
}

WriteReq is request structure of Write()

func (*WriteReq) CheckSyllab

func (req *WriteReq) CheckSyllab(payload []byte) (err protocol.Error)

methods to implements protocol.Syllab interface

func (*WriteReq) Data

func (req *WriteReq) Data() (data []byte)

func (*WriteReq) FromSyllab

func (req *WriteReq) FromSyllab(payload []byte, stackIndex uint32)

func (*WriteReq) LenAsSyllab

func (req *WriteReq) LenAsSyllab() uint64

func (*WriteReq) LenOfSyllabHeap

func (req *WriteReq) LenOfSyllabHeap() (ln uint32)

func (*WriteReq) LenOfSyllabStack

func (req *WriteReq) LenOfSyllabStack() uint32

func (*WriteReq) ObjectID

func (req *WriteReq) ObjectID() [32]byte

func (*WriteReq) ObjectStructureID

func (req *WriteReq) ObjectStructureID() uint64

func (*WriteReq) Offset

func (req *WriteReq) Offset() uint64

func (*WriteReq) RequestType

func (req *WriteReq) RequestType() RequestType

methods to implements writeRequest interface

func (*WriteReq) SetRequestType

func (req *WriteReq) SetRequestType(rt RequestType)

func (*WriteReq) ToSyllab

func (req *WriteReq) ToSyllab(payload []byte, stackIndex, heapIndex uint32) (freeHeapIndex uint32)

Jump to

Keyboard shortcuts

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