internal

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Oct 13, 2022 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const SequenceInitValue = -1

Variables

This section is empty.

Functions

This section is empty.

Types

type BasePublishBarrier

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

func (*BasePublishBarrier) Commit

func (b *BasePublishBarrier) Commit(seq int64, entity interface{})

func (*BasePublishBarrier) Next

func (b *BasePublishBarrier) Next() int64

func (*BasePublishBarrier) NextN

func (b *BasePublishBarrier) NextN(n int64) int64

func (*BasePublishBarrier) TryNext

func (b *BasePublishBarrier) TryNext() (int64, error)

func (*BasePublishBarrier) TryNextN

func (b *BasePublishBarrier) TryNextN(n int64) (int64, error)

type IPublishBarrier

type IPublishBarrier interface {
	Next() int64
	NextN(n int64) int64
	TryNext() (int64, error)
	TryNextN(n int64) (int64, error)
	Commit(seq int64, entity interface{})
}

type IPublisherStrategy

type IPublisherStrategy interface {
	Wait()
}

type IScheduler

type IScheduler interface {
	InitConsumerSequence(initValue int64) *Sequence
	//InitConsumerSequences(sequences ...*Sequence)
	AddSequences(sequences ...*Sequence)
	GetConsumerSequences() []*Sequence
	GetMinConsumerSeq(defaultValue int64) int64
	GetMinConsumerSequence() int64
	IsAvailable(int64) bool
	SetAvailableArrayValue(int64)
	GetCursor() *Sequence
	GetBufferSize() int64
	GetIndexMask() int64
	SetEntity(index int64, entity interface{})
	GetEntity(seq int64) interface{}
}

type ISubscribeBarrier

type ISubscribeBarrier interface {
	WaitFor(sequence int64) int64
	GetEntity(sequence int64) interface{}
}

func NewSubscribeBarrier

func NewSubscribeBarrier(scheduler IScheduler, strategy ISubscriberStrategy) ISubscribeBarrier

type ISubscriberStrategy

type ISubscriberStrategy interface {
	Wait()
}

type MultiPublishBarrier

type MultiPublishBarrier struct {
	BasePublishBarrier
}

func NewMultiPublishBarrier

func NewMultiPublishBarrier(scheduler IScheduler, strategy IPublisherStrategy) *MultiPublishBarrier

func (*MultiPublishBarrier) Commit

func (b *MultiPublishBarrier) Commit(seq int64, entity interface{})

type RingBuffer

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

func NewRingBuffer

func NewRingBuffer(size int64) *RingBuffer

func (*RingBuffer) GetEntity

func (rb *RingBuffer) GetEntity(seq int64) interface{}

func (*RingBuffer) IndexMask

func (rb *RingBuffer) IndexMask() int64

func (*RingBuffer) SetEntity

func (rb *RingBuffer) SetEntity(seq int64, entity interface{})

func (*RingBuffer) Size

func (rb *RingBuffer) Size() int64

type Scheduler

type Scheduler struct {
	IScheduler
	// contains filtered or unexported fields
}

func NewScheduler

func NewScheduler(ringBuffer *RingBuffer) *Scheduler

func (*Scheduler) AddSequences

func (s *Scheduler) AddSequences(sequences ...*Sequence)

func (*Scheduler) GetBufferSize

func (s *Scheduler) GetBufferSize() int64

func (*Scheduler) GetConsumerSequences

func (s *Scheduler) GetConsumerSequences() []*Sequence

func (*Scheduler) GetCursor

func (s *Scheduler) GetCursor() *Sequence

func (*Scheduler) GetEntity

func (s *Scheduler) GetEntity(seq int64) interface{}

func (*Scheduler) GetIndexMask

func (s *Scheduler) GetIndexMask() int64

func (*Scheduler) GetMinConsumerSeq

func (s *Scheduler) GetMinConsumerSeq(defaultValue int64) int64

func (*Scheduler) GetMinConsumerSequence

func (s *Scheduler) GetMinConsumerSequence() int64

func (*Scheduler) InitConsumerSequence

func (s *Scheduler) InitConsumerSequence(initValue int64) *Sequence

func (*Scheduler) IsAvailable

func (s *Scheduler) IsAvailable(seq int64) bool

func (*Scheduler) RemainingCap

func (s *Scheduler) RemainingCap() int64

func (*Scheduler) SetAvailableArrayValue

func (s *Scheduler) SetAvailableArrayValue(seq int64)

func (*Scheduler) SetEntity

func (s *Scheduler) SetEntity(seq int64, entity interface{})

type Sequence

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

func NewSequence

func NewSequence() *Sequence

func (*Sequence) Add

func (s *Sequence) Add(value int64) int64

func (*Sequence) CompareAndSwap

func (s *Sequence) CompareAndSwap(oldValue int64, newValue int64) bool

func (*Sequence) Get

func (s *Sequence) Get() int64

func (*Sequence) IncrementAndGet

func (s *Sequence) IncrementAndGet() int64

func (*Sequence) Init

func (s *Sequence) Init(initValue int64)

func (*Sequence) Set

func (s *Sequence) Set(value int64)

func (*Sequence) String

func (s *Sequence) String() string

type SinglePublishBarrier

type SinglePublishBarrier struct {
	BasePublishBarrier
}

func NewSinglePublishBarrier

func NewSinglePublishBarrier(scheduler IScheduler, strategy IPublisherStrategy) *SinglePublishBarrier

type SubscribeBarrier

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

func (*SubscribeBarrier) GetEntity

func (b *SubscribeBarrier) GetEntity(seq int64) interface{}

func (*SubscribeBarrier) WaitFor

func (b *SubscribeBarrier) WaitFor(seq int64) int64

WaitFor waiting sequence is available

Jump to

Keyboard shortcuts

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