func (s *SSEServer) Shutdown(ctx context.Context) error {
s.mu.RLock()
srv := s.srv
s.mu.RUnlock()
if srv != nil {
s.sessions.Range(func(key, value interface{}) bool {
if session, ok := value.(*sseSession); ok {
close(session.done)
}
s.sessions.Delete(key)
return true
})
return srv.Shutdown(ctx)
}
return nil
}
Why do we need to lock?