echo

package module
v0.2.6 Latest Latest
Warning

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

Go to latest
Published: Sep 30, 2022 License: MIT Imports: 8 Imported by: 1

README

echo

echo is a golang event message tool support pub/sub, time job and trigger

Install

go get github.com/johnhaha/echo@v0.2.6

Usage

set up handler
echo.SetEventHandler(CHANNEL,HANDLER)
Pub
echo.PubEvent(CHANNEL,CONTENT)
Pub Json
echo.PubEventJson(CHANNEL,JSON)
Listen to event
echo.StartEventListener(CONTEXT)
use pubsub to make multi sub
suber := echo.NewPubSub()
suber.Pub(DATA)
suber.Sub(ctx,GROUP,CONSUMER)
set up timer event storage
echo.SetStorage(storage)

the timer event will be load if you load timer event after you set storage

echo.LoadTimerEvent()

Documentation

Index

Constants

View Source
const (
	BoolTrue  = "True"
	BoolFalse = "False"
)

Variables

This section is empty.

Functions

func AddJsonDataToTimerEvent added in v0.1.8

func AddJsonDataToTimerEvent(channel string, data any, time time.Time) error

add json data to timer heap

func AddLoopTimerEvent added in v0.1.8

func AddLoopTimerEvent(channel string, data string, time time.Time, loop int64)

add loop timer event, loop in second

func AddManyTimerEvent added in v0.1.8

func AddManyTimerEvent(event []TimerEvent) error

add many event to timer heap, can be used in initializing heap data

func AddTimerEvent added in v0.1.8

func AddTimerEvent(channel string, data string, time time.Time)

add channel and data to timer heap

func FireTrigger added in v0.1.5

func FireTrigger(key string, data string)

func GetBoolValue added in v0.0.11

func GetBoolValue(k string) (bool, error)

func GetData added in v0.2.2

func GetData[T any](ctx SubCtx) (T, error)

func GetJsonValue added in v0.0.11

func GetJsonValue(k string, data any) error

func GetValue added in v0.0.11

func GetValue(k string) (string, error)

func LoadTimerEvent added in v0.2.6

func LoadTimerEvent() error

func PubEvent added in v0.1.8

func PubEvent(channel string, data string)

pub string data to queue

func PubEventJson added in v0.1.8

func PubEventJson(channel string, data any) error

pub json data to queue

func RemValue added in v0.0.11

func RemValue(k string)

func SetBoolValue added in v0.0.11

func SetBoolValue(k string, v bool)

func SetEventBuffer added in v0.1.8

func SetEventBuffer(b int)

🔥 this should be set before any queue usage

func SetEventHandler added in v0.0.19

func SetEventHandler(channel string, handler JobHandler)

func SetJsonValue added in v0.0.11

func SetJsonValue(k string, data any) error

func SetStorage added in v0.2.6

func SetStorage(s Storage)

func SetTrigger added in v0.1.5

func SetTrigger(key string, handler JobHandler)

echo just one router

func SetTriggerBuffer added in v0.1.5

func SetTriggerBuffer(buffer int)

🔥 this should be set before any trigger usage

func SetValue added in v0.0.11

func SetValue(k string, v string)

func StartEventListener added in v0.1.8

func StartEventListener(ctx context.Context)

func StartTimerEventListener added in v0.1.8

func StartTimerEventListener(ctx context.Context, maxSleep int)

run timer heap, this will block, sleep step is 5 second, max sleep (in second) should be bigger than 5 second

func TriggerStart added in v0.1.5

func TriggerStart(ctx context.Context)

Types

type ChannelData added in v0.0.17

type ChannelData struct {
	Value
	Channel string
}

func GetChannelDataFromJson added in v0.0.17

func GetChannelDataFromJson(j string) (*ChannelData, error)

type ChannelQueue added in v0.0.17

type ChannelQueue struct {
	// JobRouter
	DataChannel chan ChannelData
}

func NewChannelQueue added in v0.0.17

func NewChannelQueue(buffer int) *ChannelQueue

new channel queue

func (*ChannelQueue) Consume added in v0.0.17

func (queue *ChannelQueue) Consume(ctx context.Context, router *JobRouter)

consume

func (*ChannelQueue) Pub added in v0.0.17

func (queue *ChannelQueue) Pub(channelData ChannelData)

insert data

type GChannelData added in v0.2.1

type GChannelData[T any] struct {
	Value   T
	Channel string
}

func NewGChannelData added in v0.2.1

func NewGChannelData[T any](channel string, data T) GChannelData[T]

type JobHandler added in v0.0.11

type JobHandler func(*SubCtx)

type JobRouter added in v0.0.13

type JobRouter struct {
	Handlers map[string]JobHandler
	// contains filtered or unexported fields
}

func (*JobRouter) Handle added in v0.0.13

func (r *JobRouter) Handle(channel string, ctx *SubCtx) error

func (*JobRouter) Set added in v0.0.13

func (r *JobRouter) Set(channel string, handler JobHandler)

type PubSub added in v0.2.0

type PubSub[T any] struct {
	//use map chan to support multiple subscription
	Pools map[string]chan T
	Rmt   sync.RWMutex
}

pub sub stateless single block

func NewPubSub added in v0.2.0

func NewPubSub[T any]() *PubSub[T]

func (*PubSub[T]) Pub added in v0.2.2

func (pb *PubSub[T]) Pub(data T) error

publish data

func (*PubSub[T]) Sub added in v0.2.2

func (pb *PubSub[T]) Sub(ctx context.Context, group string, buffer int, consumer func(T))

register subscriber with id and sub

type Sleeper added in v0.0.13

type Sleeper struct {
	Duration time.Duration
	Step     time.Duration
	Max      time.Duration
}

func NewSleeper added in v0.0.13

func NewSleeper(step time.Duration, max time.Duration) *Sleeper

func (*Sleeper) Reset added in v0.0.13

func (sleeper *Sleeper) Reset()

func (*Sleeper) Sleep added in v0.0.13

func (sleeper *Sleeper) Sleep()

type Storage added in v0.2.6

type Storage interface {
	Save(key string, val string) (err error)
	ListAppend(key string, data string) (err error)
	ListRem(key string, data string) (err error)
	Find(key string) ([]string, error)
	Rem(key string) error
	Get(key string) (string, error)
	UUID() string
	AppName() string
}

type SubCtx

type SubCtx struct {
	Value
}

func (*SubCtx) Parser

func (c *SubCtx) Parser(data any) error

type TimerEvent added in v0.0.13

type TimerEvent struct {
	Value
	EventType string
	Ts        int64
	Loop      int64
}

type TimerEventHandler added in v0.0.13

type TimerEventHandler func(TimerEvent) error

type TimerEventHeap added in v0.0.13

type TimerEventHeap struct {
	Event  []TimerEvent
	Recent int64
	Remain int
}

func NewTimerHeap added in v0.0.13

func NewTimerHeap() *TimerEventHeap

func (*TimerEventHeap) Extract added in v0.0.13

func (h *TimerEventHeap) Extract() (TimerEvent, error)

func (*TimerEventHeap) InitEvent added in v0.0.13

func (h *TimerEventHeap) InitEvent(event []TimerEvent)

func (*TimerEventHeap) Insert added in v0.0.13

func (h *TimerEventHeap) Insert(event TimerEvent)

func (TimerEventHeap) Len added in v0.0.13

func (h TimerEventHeap) Len() int

func (TimerEventHeap) Less added in v0.0.13

func (h TimerEventHeap) Less(i, j int) bool

func (*TimerEventHeap) LoadMoreEvent added in v0.0.13

func (h *TimerEventHeap) LoadMoreEvent(event []TimerEvent)

func (*TimerEventHeap) Pop added in v0.0.13

func (h *TimerEventHeap) Pop() interface{}

func (*TimerEventHeap) Push added in v0.0.13

func (h *TimerEventHeap) Push(x interface{})

func (TimerEventHeap) Swap added in v0.0.13

func (h TimerEventHeap) Swap(i, j int)

func (*TimerEventHeap) Update added in v0.0.13

func (h *TimerEventHeap) Update()

type Trigger added in v0.1.5

type Trigger struct {
	JobRouter
	Data chan ChannelData
	Mtx  sync.RWMutex
}

func NewTrigger added in v0.1.5

func NewTrigger(buffer int) *Trigger

func (*Trigger) Done added in v0.1.5

func (trigger *Trigger) Done(key string)

func (*Trigger) Fire added in v0.1.5

func (trigger *Trigger) Fire(data ChannelData)

func (*Trigger) Listen added in v0.1.5

func (trigger *Trigger) Listen(ctx context.Context)

func (*Trigger) Register added in v0.1.5

func (trigger *Trigger) Register(key string, handler JobHandler)

type Value added in v0.0.11

type Value struct {
	ID   string
	Data string
	//created at timestamp
	Ts int64
}

func NewValue added in v0.1.7

func NewValue() *Value

func (*Value) GetBool added in v0.0.11

func (v *Value) GetBool() bool

func (*Value) GetData added in v0.0.11

func (v *Value) GetData() string

func (*Value) GetJsonData added in v0.0.11

func (v *Value) GetJsonData(data any) error

func (*Value) SetBool added in v0.0.11

func (v *Value) SetBool(data bool) *Value

func (*Value) SetJson added in v0.0.11

func (v *Value) SetJson(data any) error

func (*Value) SetTime added in v0.2.4

func (v *Value) SetTime(ts int64)

func (*Value) SetValue added in v0.0.11

func (v *Value) SetValue(data string) *Value

Jump to

Keyboard shortcuts

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