auth.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package servers
  2. import "sync"
  3. var listenServersLock sync.Mutex
  4. var connectServersLock sync.Mutex
  5. var listenServers []*Server
  6. var connectServers []*Server
  7. //AddWaitAuthServer 添加认证服务器
  8. func AddWaitAuthServer(server *Server, IsListenServer bool) {
  9. if server.Agent == nil {
  10. return
  11. }
  12. if IsListenServer {
  13. func(server *Server) {
  14. listenServersLock.Lock()
  15. defer listenServersLock.Unlock()
  16. listenServers = append(listenServers, server)
  17. }(server)
  18. } else {
  19. func(server *Server) {
  20. connectServersLock.Lock()
  21. defer connectServersLock.Unlock()
  22. connectServers = append(connectServers, server)
  23. }(server)
  24. }
  25. }
  26. func removeListenServer(server *Server) {
  27. listenServersLock.Lock()
  28. defer listenServersLock.Unlock()
  29. for k, v := range listenServers {
  30. if v == server {
  31. listenServers[k] = listenServers[len(listenServers)-1]
  32. listenServers = listenServers[:len(listenServers)-1]
  33. return
  34. }
  35. }
  36. }
  37. func removeConnectServer(server *Server) {
  38. connectServersLock.Lock()
  39. defer connectServersLock.Unlock()
  40. for k, v := range connectServers {
  41. if v == server {
  42. connectServers[k] = connectServers[len(connectServers)-1]
  43. connectServers = connectServers[:len(connectServers)-1]
  44. return
  45. }
  46. }
  47. }
  48. //RemoveAuthServer 删除服务器
  49. func RemoveAuthServer(server *Server) {
  50. removeListenServer(server)
  51. removeConnectServer(server)
  52. }
  53. //RangeListenServer 遍历服务器
  54. func RangeListenServer(f func(*Server)) {
  55. listenServersLock.Lock()
  56. defer listenServersLock.Unlock()
  57. for _, v := range listenServers {
  58. f(v)
  59. }
  60. }
  61. func MoveToServers(server *Server) {
  62. RemoveAuthServer(server)
  63. AddServer(server)
  64. }