Documentation ¶
Index ¶
- Constants
- type BasePublishBarrier
- type IPublishBarrier
- type IPublisherStrategy
- type IScheduler
- type ISubscribeBarrier
- type ISubscriberStrategy
- type MultiPublishBarrier
- type RingBuffer
- type Scheduler
- func (s *Scheduler) AddSequences(sequences ...*Sequence)
- func (s *Scheduler) GetBufferSize() int64
- func (s *Scheduler) GetConsumerSequences() []*Sequence
- func (s *Scheduler) GetCursor() *Sequence
- func (s *Scheduler) GetEntity(seq int64) interface{}
- func (s *Scheduler) GetIndexMask() int64
- func (s *Scheduler) GetMinConsumerSeq(defaultValue int64) int64
- func (s *Scheduler) GetMinConsumerSequence() int64
- func (s *Scheduler) InitConsumerSequence(initValue int64) *Sequence
- func (s *Scheduler) IsAvailable(seq int64) bool
- func (s *Scheduler) RemainingCap() int64
- func (s *Scheduler) SetAvailableArrayValue(seq int64)
- func (s *Scheduler) SetEntity(seq int64, entity interface{})
- type Sequence
- type SinglePublishBarrier
- type SubscribeBarrier
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)
type IPublishBarrier ¶
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 (*Scheduler) GetBufferSize ¶
func (*Scheduler) GetConsumerSequences ¶
func (*Scheduler) GetIndexMask ¶
func (*Scheduler) GetMinConsumerSeq ¶
func (*Scheduler) GetMinConsumerSequence ¶
func (*Scheduler) InitConsumerSequence ¶
func (*Scheduler) IsAvailable ¶
func (*Scheduler) RemainingCap ¶
func (*Scheduler) SetAvailableArrayValue ¶
type Sequence ¶
type Sequence struct {
// contains filtered or unexported fields
}
func NewSequence ¶
func NewSequence() *Sequence
func (*Sequence) CompareAndSwap ¶
func (*Sequence) IncrementAndGet ¶
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
Click to show internal directories.
Click to hide internal directories.