mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 13:10:26 +08:00 
			
		
		
		
	
		
			
	
	
		
			28 lines
		
	
	
		
			498 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			28 lines
		
	
	
		
			498 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package events
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import "sync"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var eventsMap = map[string][]func(){} // event => []callbacks
							 | 
						||
| 
								 | 
							
								var locker = sync.Mutex{}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 增加事件回调
							 | 
						||
| 
								 | 
							
								func On(event string, callback func()) {
							 | 
						||
| 
								 | 
							
									locker.Lock()
							 | 
						||
| 
								 | 
							
									defer locker.Unlock()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									callbacks, _ := eventsMap[event]
							 | 
						||
| 
								 | 
							
									callbacks = append(callbacks, callback)
							 | 
						||
| 
								 | 
							
									eventsMap[event] = callbacks
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 通知事件
							 | 
						||
| 
								 | 
							
								func Notify(event string) {
							 | 
						||
| 
								 | 
							
									locker.Lock()
							 | 
						||
| 
								 | 
							
									callbacks, _ := eventsMap[event]
							 | 
						||
| 
								 | 
							
									locker.Unlock()
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									for _, callback := range callbacks {
							 | 
						||
| 
								 | 
							
										callback()
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |