event/abstract/IEvent.go

120 lines
3.5 KiB
Go
Raw Permalink Normal View History

// Package abstract ...
//
// Description : abstract ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2024-03-11 12:02
package abstract
2024-06-25 16:03:45 +08:00
import (
"context"
"git.zhangdeman.cn/zhangdeman/event/define"
)
2024-06-26 18:15:34 +08:00
// 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
2024-06-27 11:50:13 +08:00
type SendFailCallback func(ctx context.Context, eventData *define.EventData, eventResult *define.SendResult, err error)
2024-06-26 18:15:34 +08:00
// SendSuccessCallback 发送事件成功的回调
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:32 2024/6/26
2024-06-27 11:50:13 +08:00
type SendSuccessCallback func(ctx context.Context, eventResult *define.SendResult)
2024-06-26 18:15:34 +08:00
// 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)
2024-06-27 18:52:20 +08:00
// EventParseFailCallback ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 18:48 2024/6/27
type EventParseFailCallback func(err error, eventData string)
// IEvent 事件接口定义
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 19:08 2023/8/14
type IEvent interface {
2024-06-25 16:03:45 +08:00
// SendEvent 发送事件(同步)
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:04 2024/3/11
2024-06-27 11:50:13 +08:00
SendEvent(ctx context.Context, eventData *define.EventData) (*define.SendResult, error)
2024-06-25 16:03:45 +08:00
// SendEventAsync 发送事件(异步)
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 15:58 2024/6/25
2024-06-26 18:15:34 +08:00
SendEventAsync(ctx context.Context, eventData *define.EventData, sendSuccessCallback SendSuccessCallback, sendFailCallback SendFailCallback)
// GetConsumeEventChan 或去消息消费的channel, 自行实现消费
//
// Author : go_developer@163.com<白茶清欢>
//
2024-06-26 18:15:34 +08:00
// Date : 17:11 2024/6/26
GetConsumeEventChan() (<-chan *define.EventData, error)
// ConsumeEvent 消费事件
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:05 2024/3/11
2024-06-26 18:15:34 +08:00
ConsumeEvent(handler EventHandler, successCallback ConsumeSuccessCallback, failureCallback ConsumeFailCallbackHandler) error
// Destroy 事件实例销毁时, 执行的方法
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:05 2024/3/11
Destroy()
2024-06-25 16:05:37 +08:00
// DriverType 获取驱动类型
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:06 2024/3/11
2024-06-25 16:05:37 +08:00
DriverType() string
2024-06-27 18:39:51 +08:00
// SetPanicCallback 设置失败回调的处理函数
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 18:39 2024/6/27
SetPanicCallback(panicCallback PanicCallback)
2024-06-27 18:52:20 +08:00
// SetEventParseFailCallback 设置数据解析失败的处理函数
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 18:51 2024/6/27
SetEventParseFailCallback(parseFailCallbackCallback EventParseFailCallback)
}