event/abstract/IEvent.go

107 lines
3.1 KiB
Go

// Package abstract ...
//
// Description : abstract ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2024-03-11 12:02
package abstract
import (
"context"
"git.zhangdeman.cn/zhangdeman/event/define"
)
// EventHandler 事件数据处理函数
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:08 2024/6/26
type EventHandler func(eventData *define.EventData) (map[string]any, error)
// SendFailCallback 发送事件失败的回调
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:31 2024/6/26
type SendFailCallback func(ctx context.Context, eventData *define.EventData, eventResult *define.SendResult, err error)
// SendSuccessCallback 发送事件成功的回调
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:32 2024/6/26
type SendSuccessCallback func(ctx context.Context, eventResult *define.SendResult)
// ConsumeFailCallbackHandler 时间处理成功回调
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:18 2024/6/26
type ConsumeFailCallbackHandler func(eventData *define.EventData, handleResult map[string]any, err error)
// ConsumeSuccessCallback 时间处理失败回调
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:20 2024/6/26
type ConsumeSuccessCallback func(eventData *define.EventData, handleResult map[string]any)
// PanicCallback panic回调, 根据不同异常类型, eventData / handleResult 均可能为nil
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 18:07 2024/6/26
type PanicCallback func(err any, eventData *define.EventData, handleResult map[string]any)
// IEvent 事件接口定义
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 19:08 2023/8/14
type IEvent interface {
// SendEvent 发送事件(同步)
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:04 2024/3/11
SendEvent(ctx context.Context, eventData *define.EventData) (*define.SendResult, error)
// SendEventAsync 发送事件(异步)
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 15:58 2024/6/25
SendEventAsync(ctx context.Context, eventData *define.EventData, sendSuccessCallback SendSuccessCallback, sendFailCallback SendFailCallback)
// GetConsumeEventChan 或去消息消费的channel, 自行实现消费
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:11 2024/6/26
GetConsumeEventChan() (<-chan *define.EventData, error)
// ConsumeEvent 消费事件
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:05 2024/3/11
ConsumeEvent(handler EventHandler, successCallback ConsumeSuccessCallback, failureCallback ConsumeFailCallbackHandler) error
// Destroy 事件实例销毁时, 执行的方法
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:05 2024/3/11
Destroy()
// DriverType 获取驱动类型
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:06 2024/3/11
DriverType() string
// SetPanicCallback 设置失败回调的处理函数
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 18:39 2024/6/27
SetPanicCallback(panicCallback PanicCallback)
}