mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-03 22:45:13 +08:00
优化代码规范
This commit is contained in:
@@ -7,7 +7,7 @@ import (
|
||||
"sync"
|
||||
)
|
||||
|
||||
//事件接受器
|
||||
// EventCallBack 事件接受器
|
||||
type EventCallBack func(event IEvent)
|
||||
|
||||
type IEvent interface {
|
||||
@@ -17,10 +17,11 @@ type IEvent interface {
|
||||
type Event struct {
|
||||
Type EventType
|
||||
Data interface{}
|
||||
ref bool
|
||||
ref bool
|
||||
}
|
||||
|
||||
var emptyEvent Event
|
||||
|
||||
func (e *Event) Reset() {
|
||||
*e = emptyEvent
|
||||
}
|
||||
@@ -37,18 +38,18 @@ func (e *Event) UnRef() {
|
||||
e.ref = false
|
||||
}
|
||||
|
||||
func (e *Event) GetEventType() EventType{
|
||||
func (e *Event) GetEventType() EventType {
|
||||
return e.Type
|
||||
}
|
||||
|
||||
type IEventHandler interface {
|
||||
Init(processor IEventProcessor)
|
||||
GetEventProcessor() IEventProcessor //获得事件
|
||||
GetEventProcessor() IEventProcessor //获得事件
|
||||
NotifyEvent(IEvent)
|
||||
Destroy()
|
||||
//注册了事件
|
||||
addRegInfo(eventType EventType,eventProcessor IEventProcessor)
|
||||
removeRegInfo(eventType EventType,eventProcessor IEventProcessor)
|
||||
addRegInfo(eventType EventType, eventProcessor IEventProcessor)
|
||||
removeRegInfo(eventType EventType, eventProcessor IEventProcessor)
|
||||
}
|
||||
|
||||
type IEventChannel interface {
|
||||
@@ -60,11 +61,11 @@ type IEventProcessor interface {
|
||||
|
||||
Init(eventChannel IEventChannel)
|
||||
EventHandler(ev IEvent)
|
||||
RegEventReceiverFunc(eventType EventType, receiver IEventHandler,callback EventCallBack)
|
||||
RegEventReceiverFunc(eventType EventType, receiver IEventHandler, callback EventCallBack)
|
||||
UnRegEventReceiverFun(eventType EventType, receiver IEventHandler)
|
||||
|
||||
castEvent(event IEvent) //广播事件
|
||||
addBindEvent(eventType EventType, receiver IEventHandler,callback EventCallBack)
|
||||
addBindEvent(eventType EventType, receiver IEventHandler, callback EventCallBack)
|
||||
addListen(eventType EventType, receiver IEventHandler)
|
||||
removeBindEvent(eventType EventType, receiver IEventHandler)
|
||||
removeListen(eventType EventType, receiver IEventHandler)
|
||||
@@ -75,116 +76,115 @@ type EventHandler struct {
|
||||
eventProcessor IEventProcessor
|
||||
|
||||
//已经注册的事件
|
||||
locker sync.RWMutex
|
||||
mapRegEvent map[EventType]map[IEventProcessor]interface{} //向其他事件处理器监听的事件类型
|
||||
locker sync.RWMutex
|
||||
mapRegEvent map[EventType]map[IEventProcessor]interface{} //向其他事件处理器监听的事件类型
|
||||
}
|
||||
|
||||
type EventProcessor struct {
|
||||
IEventChannel
|
||||
|
||||
locker sync.RWMutex
|
||||
mapListenerEvent map[EventType]map[IEventProcessor]int //监听者信息
|
||||
mapBindHandlerEvent map[EventType]map[IEventHandler]EventCallBack//收到事件处理
|
||||
locker sync.RWMutex
|
||||
mapListenerEvent map[EventType]map[IEventProcessor]int //监听者信息
|
||||
mapBindHandlerEvent map[EventType]map[IEventHandler]EventCallBack //收到事件处理
|
||||
}
|
||||
|
||||
func NewEventHandler() IEventHandler{
|
||||
func NewEventHandler() IEventHandler {
|
||||
eh := EventHandler{}
|
||||
eh.mapRegEvent = map[EventType]map[IEventProcessor]interface{}{}
|
||||
|
||||
return &eh
|
||||
}
|
||||
|
||||
func NewEventProcessor() IEventProcessor{
|
||||
func NewEventProcessor() IEventProcessor {
|
||||
ep := EventProcessor{}
|
||||
ep.mapListenerEvent = map[EventType]map[IEventProcessor]int{}
|
||||
ep.mapListenerEvent = map[EventType]map[IEventProcessor]int{}
|
||||
ep.mapBindHandlerEvent = map[EventType]map[IEventHandler]EventCallBack{}
|
||||
|
||||
return &ep
|
||||
}
|
||||
|
||||
func (handler *EventHandler) addRegInfo(eventType EventType,eventProcessor IEventProcessor){
|
||||
func (handler *EventHandler) addRegInfo(eventType EventType, eventProcessor IEventProcessor) {
|
||||
handler.locker.Lock()
|
||||
defer handler.locker.Unlock()
|
||||
if handler.mapRegEvent == nil {
|
||||
handler.mapRegEvent = map[EventType]map[IEventProcessor]interface{}{}
|
||||
}
|
||||
|
||||
if _,ok := handler.mapRegEvent[eventType] ;ok == false{
|
||||
if _, ok := handler.mapRegEvent[eventType]; ok == false {
|
||||
handler.mapRegEvent[eventType] = map[IEventProcessor]interface{}{}
|
||||
}
|
||||
handler.mapRegEvent[eventType][eventProcessor] = nil
|
||||
}
|
||||
|
||||
func (handler *EventHandler) removeRegInfo(eventType EventType,eventProcessor IEventProcessor){
|
||||
if _,ok := handler.mapRegEvent[eventType];ok == true {
|
||||
delete(handler.mapRegEvent[eventType],eventProcessor)
|
||||
func (handler *EventHandler) removeRegInfo(eventType EventType, eventProcessor IEventProcessor) {
|
||||
if _, ok := handler.mapRegEvent[eventType]; ok == true {
|
||||
delete(handler.mapRegEvent[eventType], eventProcessor)
|
||||
}
|
||||
}
|
||||
|
||||
func (handler *EventHandler) GetEventProcessor() IEventProcessor{
|
||||
func (handler *EventHandler) GetEventProcessor() IEventProcessor {
|
||||
return handler.eventProcessor
|
||||
}
|
||||
|
||||
func (handler *EventHandler) NotifyEvent(ev IEvent){
|
||||
func (handler *EventHandler) NotifyEvent(ev IEvent) {
|
||||
handler.GetEventProcessor().castEvent(ev)
|
||||
}
|
||||
|
||||
func (handler *EventHandler) Init(processor IEventProcessor){
|
||||
func (handler *EventHandler) Init(processor IEventProcessor) {
|
||||
handler.eventProcessor = processor
|
||||
handler.mapRegEvent =map[EventType]map[IEventProcessor]interface{}{}
|
||||
handler.mapRegEvent = map[EventType]map[IEventProcessor]interface{}{}
|
||||
}
|
||||
|
||||
|
||||
func (processor *EventProcessor) Init(eventChannel IEventChannel){
|
||||
func (processor *EventProcessor) Init(eventChannel IEventChannel) {
|
||||
processor.IEventChannel = eventChannel
|
||||
}
|
||||
|
||||
func (processor *EventProcessor) addBindEvent(eventType EventType, receiver IEventHandler,callback EventCallBack){
|
||||
func (processor *EventProcessor) addBindEvent(eventType EventType, receiver IEventHandler, callback EventCallBack) {
|
||||
processor.locker.Lock()
|
||||
defer processor.locker.Unlock()
|
||||
|
||||
if _,ok := processor.mapBindHandlerEvent[eventType]; ok == false {
|
||||
if _, ok := processor.mapBindHandlerEvent[eventType]; ok == false {
|
||||
processor.mapBindHandlerEvent[eventType] = map[IEventHandler]EventCallBack{}
|
||||
}
|
||||
|
||||
processor.mapBindHandlerEvent[eventType][receiver] = callback
|
||||
}
|
||||
|
||||
func (processor *EventProcessor) addListen(eventType EventType, receiver IEventHandler){
|
||||
func (processor *EventProcessor) addListen(eventType EventType, receiver IEventHandler) {
|
||||
processor.locker.Lock()
|
||||
defer processor.locker.Unlock()
|
||||
|
||||
if _,ok := processor.mapListenerEvent[eventType];ok == false{
|
||||
if _, ok := processor.mapListenerEvent[eventType]; ok == false {
|
||||
processor.mapListenerEvent[eventType] = map[IEventProcessor]int{}
|
||||
}
|
||||
|
||||
processor.mapListenerEvent[eventType][receiver.GetEventProcessor()] += 1
|
||||
}
|
||||
|
||||
func (processor *EventProcessor) removeBindEvent(eventType EventType, receiver IEventHandler){
|
||||
func (processor *EventProcessor) removeBindEvent(eventType EventType, receiver IEventHandler) {
|
||||
processor.locker.Lock()
|
||||
defer processor.locker.Unlock()
|
||||
if _,ok := processor.mapBindHandlerEvent[eventType];ok == true{
|
||||
if _, ok := processor.mapBindHandlerEvent[eventType]; ok == true {
|
||||
delete(processor.mapBindHandlerEvent[eventType], receiver)
|
||||
}
|
||||
}
|
||||
|
||||
func (processor *EventProcessor) removeListen(eventType EventType, receiver IEventHandler){
|
||||
func (processor *EventProcessor) removeListen(eventType EventType, receiver IEventHandler) {
|
||||
processor.locker.Lock()
|
||||
defer processor.locker.Unlock()
|
||||
if _,ok := processor.mapListenerEvent[eventType];ok == true{
|
||||
processor.mapListenerEvent[eventType][receiver.GetEventProcessor()]-=1
|
||||
if _, ok := processor.mapListenerEvent[eventType]; ok == true {
|
||||
processor.mapListenerEvent[eventType][receiver.GetEventProcessor()] -= 1
|
||||
if processor.mapListenerEvent[eventType][receiver.GetEventProcessor()] <= 0 {
|
||||
delete(processor.mapListenerEvent[eventType], receiver.GetEventProcessor())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (processor *EventProcessor) RegEventReceiverFunc(eventType EventType, receiver IEventHandler,callback EventCallBack){
|
||||
func (processor *EventProcessor) RegEventReceiverFunc(eventType EventType, receiver IEventHandler, callback EventCallBack) {
|
||||
//记录receiver自己注册过的事件
|
||||
receiver.addRegInfo(eventType, processor)
|
||||
//记录当前所属IEventProcessor注册的回调
|
||||
receiver.GetEventProcessor().addBindEvent(eventType, receiver,callback)
|
||||
receiver.GetEventProcessor().addBindEvent(eventType, receiver, callback)
|
||||
//将注册加入到监听中
|
||||
processor.addListen(eventType, receiver)
|
||||
}
|
||||
@@ -195,10 +195,10 @@ func (processor *EventProcessor) UnRegEventReceiverFun(eventType EventType, rece
|
||||
receiver.removeRegInfo(eventType, processor)
|
||||
}
|
||||
|
||||
func (handler *EventHandler) Destroy(){
|
||||
func (handler *EventHandler) Destroy() {
|
||||
handler.locker.Lock()
|
||||
defer handler.locker.Unlock()
|
||||
for eventTyp,mapEventProcess := range handler.mapRegEvent {
|
||||
for eventTyp, mapEventProcess := range handler.mapRegEvent {
|
||||
if mapEventProcess == nil {
|
||||
continue
|
||||
}
|
||||
@@ -215,27 +215,27 @@ func (processor *EventProcessor) EventHandler(ev IEvent) {
|
||||
buf := make([]byte, 4096)
|
||||
l := runtime.Stack(buf, false)
|
||||
errString := fmt.Sprint(r)
|
||||
log.Dump(string(buf[:l]),log.String("error",errString))
|
||||
log.Dump(string(buf[:l]), log.String("error", errString))
|
||||
}
|
||||
}()
|
||||
|
||||
mapCallBack,ok := processor.mapBindHandlerEvent[ev.GetEventType()]
|
||||
mapCallBack, ok := processor.mapBindHandlerEvent[ev.GetEventType()]
|
||||
if ok == false {
|
||||
return
|
||||
}
|
||||
for _,callback := range mapCallBack {
|
||||
for _, callback := range mapCallBack {
|
||||
callback(ev)
|
||||
}
|
||||
}
|
||||
|
||||
func (processor *EventProcessor) castEvent(event IEvent){
|
||||
func (processor *EventProcessor) castEvent(event IEvent) {
|
||||
if processor.mapListenerEvent == nil {
|
||||
log.Error("mapListenerEvent not init!")
|
||||
return
|
||||
}
|
||||
|
||||
eventProcessor,ok := processor.mapListenerEvent[event.GetEventType()]
|
||||
if ok == false || processor == nil{
|
||||
eventProcessor, ok := processor.mapListenerEvent[event.GetEventType()]
|
||||
if ok == false || processor == nil {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -243,4 +243,3 @@ func (processor *EventProcessor) castEvent(event IEvent){
|
||||
proc.PushEvent(event)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,24 +2,21 @@ package event
|
||||
|
||||
type EventType int
|
||||
|
||||
//大于Sys_Event_User_Define给用户定义
|
||||
// 大于Sys_Event_User_Define给用户定义
|
||||
const (
|
||||
ServiceRpcRequestEvent EventType = -1
|
||||
ServiceRpcResponseEvent EventType = -2
|
||||
ServiceRpcRequestEvent EventType = -1
|
||||
ServiceRpcResponseEvent EventType = -2
|
||||
|
||||
Sys_Event_Tcp EventType = -3
|
||||
Sys_Event_Http_Event EventType = -4
|
||||
Sys_Event_WebSocket EventType = -5
|
||||
Sys_Event_Node_Conn_Event EventType = -6
|
||||
Sys_Event_Nats_Conn_Event EventType = -7
|
||||
Sys_Event_DiscoverService EventType = -8
|
||||
Sys_Event_DiscardGoroutine EventType = -9
|
||||
Sys_Event_QueueTaskFinish EventType = -10
|
||||
Sys_Event_Retire EventType = -11
|
||||
Sys_Event_EtcdDiscovery EventType = -12
|
||||
Sys_Event_Gin_Event EventType = -13
|
||||
Sys_Event_FrameTick EventType = -14
|
||||
|
||||
Sys_Event_User_Define EventType = 1
|
||||
Sys_Event_Tcp EventType = -3
|
||||
Sys_Event_Http_Event EventType = -4
|
||||
Sys_Event_WebSocket EventType = -5
|
||||
Sys_Event_Node_Conn_Event EventType = -6
|
||||
Sys_Event_Nats_Conn_Event EventType = -7
|
||||
Sys_Event_DiscoverService EventType = -8
|
||||
Sys_Event_Retire EventType = -9
|
||||
Sys_Event_EtcdDiscovery EventType = -10
|
||||
Sys_Event_Gin_Event EventType = -11
|
||||
Sys_Event_FrameTick EventType = -12
|
||||
|
||||
Sys_Event_User_Define EventType = 1
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user