time

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Sep 5, 2024 License: Apache-2.0 Imports: 7 Imported by: 1

Documentation

Overview

Package time provides logical clock and ticket for document.

Index

Constants

View Source
const (
	// MaxLamport is the maximum value stored in lamport.
	MaxLamport = math.MaxInt64

	// MaxDelimiter is the maximum value stored in delimiter.
	MaxDelimiter = math.MaxUint32
)

Variables

View Source
var (
	// InitialActorID represents the initial value of ActorID.
	InitialActorID = &ActorID{}

	// MaxActorID represents the maximum value of ActorID.
	MaxActorID = &ActorID{
		bytes: [actorIDSize]byte{
			math.MaxUint8,
			math.MaxUint8,
			math.MaxUint8,
			math.MaxUint8,
			math.MaxUint8,
			math.MaxUint8,
			math.MaxUint8,
			math.MaxUint8,
			math.MaxUint8,
			math.MaxUint8,
			math.MaxUint8,
			math.MaxUint8,
		},
	}

	// ErrInvalidHexString is returned when the given string is not valid hex.
	ErrInvalidHexString = errors.New("invalid hex string")

	// ErrInvalidActorID is returned when the given ID is not valid.
	ErrInvalidActorID = errors.New("invalid actor id")
)
View Source
var (
	// InitialTicket is the initial value of Ticket.
	InitialTicket = NewTicket(
		0,
		0,
		InitialActorID,
	)

	// MaxTicket is the maximum value of Ticket.
	MaxTicket = NewTicket(
		MaxLamport,
		MaxDelimiter,
		MaxActorID,
	)
)

Functions

This section is empty.

Types

type ActorID

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

ActorID represents the unique ID of the client. It is composed of 12 bytes. It caches the string representation of ActorID to reduce the number of calls to hex.EncodeToString. This causes a multi-routine problem, so it is recommended to use it in a single routine or to use it after locking.

func ActorIDFromBytes added in v0.1.2

func ActorIDFromBytes(bytes []byte) (*ActorID, error)

ActorIDFromBytes returns the bytes represented by the bytes of decoded hexadecimal string itself.

func ActorIDFromHex

func ActorIDFromHex(str string) (*ActorID, error)

ActorIDFromHex returns the bytes represented by the hexadecimal string str.

func (*ActorID) Bytes added in v0.1.2

func (id *ActorID) Bytes() []byte

Bytes returns the bytes of ActorID itself. If the receiver is nil, it would return empty array of byte.

func (*ActorID) Compare

func (id *ActorID) Compare(other *ActorID) int

Compare returns an integer comparing two ActorID lexicographically. The result will be 0 if id==other, -1 if id < other, and +1 if id > other. If the receiver or argument is nil, it would panic at runtime.

func (*ActorID) MarshalJSON added in v0.2.4

func (id *ActorID) MarshalJSON() ([]byte, error)

MarshalJSON ensures that when calling json.Marshal(), it is marshaled including private field.

func (*ActorID) String

func (id *ActorID) String() string

String returns the hexadecimal encoding of ActorID. If the receiver is nil, it would return empty string.

func (*ActorID) UnmarshalJSON added in v0.2.4

func (id *ActorID) UnmarshalJSON(bytes []byte) error

UnmarshalJSON ensures that when calling json.Unmarshal(), it is unmarshalled including private field.

type Ticket

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

Ticket is a timestamp of the logical clock. Ticket is immutable. It is created by change.ID.

func NewTicket

func NewTicket(
	lamport int64,
	delimiter uint32,
	actorID *ActorID,
) *Ticket

NewTicket creates an instance of Ticket.

func (*Ticket) ActorID

func (t *Ticket) ActorID() *ActorID

ActorID returns the actorID value.

func (*Ticket) ActorIDBytes added in v0.1.2

func (t *Ticket) ActorIDBytes() []byte

ActorIDBytes returns the actorID's bytes value.

func (*Ticket) ActorIDHex

func (t *Ticket) ActorIDHex() string

ActorIDHex returns the actorID's hex value.

func (*Ticket) After

func (t *Ticket) After(other *Ticket) bool

After returns whether the given ticket was created later.

func (*Ticket) Compare

func (t *Ticket) Compare(other *Ticket) int

Compare returns an integer comparing two Ticket. The result will be 0 if id==other, -1 if id < other, and +1 if id > other. If the receiver or argument is nil, it would panic at runtime.

func (*Ticket) Delimiter

func (t *Ticket) Delimiter() uint32

Delimiter returns the delimiter value.

func (*Ticket) Key

func (t *Ticket) Key() string

Key returns the key string for this Ticket.

func (*Ticket) Lamport

func (t *Ticket) Lamport() int64

Lamport returns the lamport value.

func (*Ticket) SetActorID

func (t *Ticket) SetActorID(actorID *ActorID) *Ticket

SetActorID creates a new instance of Ticket with the given actorID.

func (*Ticket) ToTestString added in v0.4.8

func (t *Ticket) ToTestString() string

ToTestString returns a string containing the metadata of the ticket for debugging purpose.

Jump to

Keyboard shortcuts

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