Help us shape the future of Go! Take the 2026 Go Developer Survey

zobserver

package module
v0.0.0-...-7df00e7 Latest Latest
Warning

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

Go to latest
Published: Dec 20, 2019 License: Apache-2.0 Imports: 2 Imported by: 0

README

zobserver

观察者模块

获得zobserver

go get -u github.com/zlyuancn/zobserver

使用zobserver

package main

import (
    "fmt"
    "github.com/zlyuancn/zobserver"
)

func main() {
    // 创建一个通告者
    n, _ := zobserver.NewNotifier("notifier")

    // 创建一个观察者
    o := zobserver.NewObserver(func(notifyName string, msg zobserver.IMessage) {
        fmt.Println(notifyName, msg.Body())
    })

    // 注册观察者
    n.Register(o)

    // 通告信息
    n.NotifyMessage("hello")
}

Documentation

Index

Constants

View Source
const (
	CreateNotifierIsExistsErr = "创建的观察者名已存在"
)
View Source
const InitNotifierCapacity = 10
View Source
const InitObserverCapacity = 10

Variables

This section is empty.

Functions

func DelNotifier

func DelNotifier(name string)

删除通告者

func NewObserverAndReg

func NewObserverAndReg(notifyName string, fn ActionFunc) (INotifier, IObserver)

创建一个观察者并注册到通告者

func NewObserverAndRegWithType

func NewObserverAndRegWithType(notifyName string, fn ActionFunc, msgtypes ...string) (INotifier, IObserver)

创建一个观察者并指定监听的消息类型然后注册到通告者

Types

type ActionFunc

type ActionFunc func(notifyName string, msg IMessage)

type IMessage

type IMessage interface {
	// 获取通告消息类型
	Type() string
	// 获取通告主要内容
	Body() interface{}
	// 获取通告附加数据
	Meta() interface{}
}

通告消息

func NewMessage

func NewMessage(body interface{}) IMessage

创建一条消息

func NewMessageWithMeta

func NewMessageWithMeta(msg_type string, body interface{}, meta interface{}) IMessage

创建一条包含附加数据的消息

func NewMessageWithType

func NewMessageWithType(msg_type string, body interface{}) IMessage

创建一条指定类型的消息

type INotifier

type INotifier interface {
	// 注册观察者
	Register(IObserver)
	// 注册观察函数
	RegisterObserverFunc(fn ActionFunc) IObserver
	// 取消注册观察者
	Deregister(IObserver)
	// 通告观察者
	Notify(IMessage)
	// 通告
	NotifyMessage(body interface{})
	// 销毁
	Distroy()
}

func CreateOrGerNotifier

func CreateOrGerNotifier(name string) INotifier

创建一个通告者, 如果通告者已存在则获取它

func GetNotifier

func GetNotifier(name string) INotifier

获取通告者, 如果没有返回nil

func NewNotifier

func NewNotifier(name string) (INotifier, error)

创建一个通告者

type IObserver

type IObserver interface {
	// 触发事件
	OnNotify(notifyName string, msg IMessage)
}

func NewObserver

func NewObserver(fn ActionFunc) IObserver

创建一个观察者

func NewObserverWithType

func NewObserverWithType(fn ActionFunc, msgtypes ...string) IObserver

创建一个观察者并指定监听的消息类型

type NotifierStorage

type NotifierStorage map[string]INotifier

通告者储存区类型

type ObserverStorage

type ObserverStorage map[IObserver]struct{}

观察者储存区类型

Jump to

Keyboard shortcuts

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