优化结构
This commit is contained in:
+10
-20
@@ -176,36 +176,26 @@ func (s *Server) OnDisconnect(handler func(*melody.Session)) {
|
||||
s.mu.Unlock()
|
||||
}
|
||||
|
||||
func snapshotHandlers[T any](mu *sync.RWMutex, handlers []T) []T {
|
||||
mu.RLock()
|
||||
defer mu.RUnlock()
|
||||
return append([]T(nil), handlers...)
|
||||
}
|
||||
|
||||
func (s *Server) messageHandlerSnapshot() []func(*melody.Session, []byte) {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
handlers := make([]func(*melody.Session, []byte), len(s.messageHandlers))
|
||||
copy(handlers, s.messageHandlers)
|
||||
return handlers
|
||||
return snapshotHandlers(&s.mu, s.messageHandlers)
|
||||
}
|
||||
|
||||
func (s *Server) binaryHandlerSnapshot() []func(*melody.Session, []byte) {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
handlers := make([]func(*melody.Session, []byte), len(s.binaryHandlers))
|
||||
copy(handlers, s.binaryHandlers)
|
||||
return handlers
|
||||
return snapshotHandlers(&s.mu, s.binaryHandlers)
|
||||
}
|
||||
|
||||
func (s *Server) connectHandlerSnapshot() []func(*melody.Session) {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
handlers := make([]func(*melody.Session), len(s.connectHandlers))
|
||||
copy(handlers, s.connectHandlers)
|
||||
return handlers
|
||||
return snapshotHandlers(&s.mu, s.connectHandlers)
|
||||
}
|
||||
|
||||
func (s *Server) disconnectHandlerSnapshot() []func(*melody.Session) {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
handlers := make([]func(*melody.Session), len(s.disconnectHandlers))
|
||||
copy(handlers, s.disconnectHandlers)
|
||||
return handlers
|
||||
return snapshotHandlers(&s.mu, s.disconnectHandlers)
|
||||
}
|
||||
func (s *Server) Send(session *melody.Session, message []byte) error {
|
||||
if session == nil {
|
||||
|
||||
Reference in New Issue
Block a user