From 3a2b19eee4299cd478e81154a99864198bbc7bf6 Mon Sep 17 00:00:00 2001 From: temur abdurahmanov Date: Fri, 10 Jan 2025 01:18:41 +0300 Subject: [PATCH 1/5] fix room data --- internal/service/dev_tools/connections.go | 10 ++++++++-- pkg/multiplayer/types/room.go | 5 +++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/internal/service/dev_tools/connections.go b/internal/service/dev_tools/connections.go index 453d686..e674319 100644 --- a/internal/service/dev_tools/connections.go +++ b/internal/service/dev_tools/connections.go @@ -51,7 +51,7 @@ func (c *connections) CreateRoom(ctx context.Context, token string, name string) GameID: info.GameID, CreatorID: info.UserID, Connections: []uuid.UUID{info.UserID}, - CreatedAt: time.Now().Unix(), + CreatedAt: time.Now(), } room.RoomCode = utills.GenerateRoomCode(room.ID) @@ -236,15 +236,21 @@ func (c *connections) GetRoomsConnectionUrls(ctx context.Context, token string) }() uniqueServerType := make(map[string]types.ConnectionServer) + uniqueServers := make(map[uuid.UUID]types.Server) uniqueAllTypes := make(map[string]struct{}) + for _, server := range servers { + uniqueServers[server.ID] = server + } + + for _, server := range uniqueServers { connNum, exists, err := server.GetConnectionsNum(ctx, token) if err != nil { c.logger.Error().Err(err).Msg("server error create room") continue } - if server.MaxConnections < connNum+len(room.Connections) && exists { + if server.MaxConnections < connNum+len(room.Connections) || !exists { continue } diff --git a/pkg/multiplayer/types/room.go b/pkg/multiplayer/types/room.go index 232009b..f2cd0e1 100644 --- a/pkg/multiplayer/types/room.go +++ b/pkg/multiplayer/types/room.go @@ -2,6 +2,7 @@ package types import ( "github.com/google/uuid" + "time" ) type Room struct { @@ -17,8 +18,8 @@ type Room struct { Servers []uuid.UUID `json:"servers" bson:"servers"` ExistsServers []uuid.UUID `json:"existsServers" bson:"existsServers"` - IsExists bool `json:"isExists" bson:"isExists"` - CreatedAt int64 `json:"createdAt" bson:"createdAt"` + IsExists bool `json:"isExists" bson:"isExists"` + CreatedAt time.Time `json:"createdAt" bson:"createdAt"` } func (r *Room) RemoveConnectionID(id uuid.UUID) { From 58a1040fb4e8a07e2db43032c0b4939cc03f5408 Mon Sep 17 00:00:00 2001 From: temur abdurahmanov Date: Fri, 10 Jan 2025 01:21:44 +0300 Subject: [PATCH 2/5] fix room data --- internal/service/dev_tools/connections.go | 4 ++++ internal/storage/servers.go | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/internal/service/dev_tools/connections.go b/internal/service/dev_tools/connections.go index e674319..b3c99a9 100644 --- a/internal/service/dev_tools/connections.go +++ b/internal/service/dev_tools/connections.go @@ -235,6 +235,10 @@ func (c *connections) GetRoomsConnectionUrls(ctx context.Context, token string) } }() + if len(room.ExistsServers) != 0 { + return nil, nil + } + uniqueServerType := make(map[string]types.ConnectionServer) uniqueServers := make(map[uuid.UUID]types.Server) uniqueAllTypes := make(map[string]struct{}) diff --git a/internal/storage/servers.go b/internal/storage/servers.go index 22af16a..8f67922 100644 --- a/internal/storage/servers.go +++ b/internal/storage/servers.go @@ -2,6 +2,7 @@ package storage import ( "context" + "github.com/ascenmmo/multiplayer-game-servers/internal/errors" defalultdata "github.com/ascenmmo/multiplayer-game-servers/internal/storage/defalult_data" "github.com/ascenmmo/multiplayer-game-servers/pkg/multiplayer/types" "github.com/google/uuid" @@ -55,6 +56,10 @@ func (d *serversStorage) FindByIDs(serversIDs []uuid.UUID) (servers []types.Serv return nil, err } + if len(servers) == 0 { + return nil, errors.ErrServerCreatingRoomAllServesOffError + } + return servers, nil } From 2a5ac2b524ffc2bcae9722139f61ea82d96e0224 Mon Sep 17 00:00:00 2001 From: temur abdurahmanov Date: Fri, 10 Jan 2025 01:56:01 +0300 Subject: [PATCH 3/5] fix room data --- internal/storage/defalult_data/servers.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/storage/defalult_data/servers.go b/internal/storage/defalult_data/servers.go index 7a2d90f..b5bdb80 100644 --- a/internal/storage/defalult_data/servers.go +++ b/internal/storage/defalult_data/servers.go @@ -16,6 +16,7 @@ var ( Region: "europe", IsActive: true, AscenmmoServer: true, + MaxConnections: 8000, } defaultServerWebsocket = types.Server{ @@ -27,6 +28,7 @@ var ( Region: "europe", IsActive: true, AscenmmoServer: true, + MaxConnections: 8000, } defaultServerTCP = types.Server{ @@ -38,6 +40,7 @@ var ( Region: "europe", IsActive: true, AscenmmoServer: true, + MaxConnections: 8000, } ) From a784d0a6a81cc1098333ed1d983583415cc45f8a Mon Sep 17 00:00:00 2001 From: temur abdurahmanov Date: Fri, 10 Jan 2025 02:03:19 +0300 Subject: [PATCH 4/5] fix server settings --- pkg/multiplayer/types/server.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/multiplayer/types/server.go b/pkg/multiplayer/types/server.go index a9f2c04..e263190 100644 --- a/pkg/multiplayer/types/server.go +++ b/pkg/multiplayer/types/server.go @@ -60,6 +60,7 @@ func (s *Server) IsExists(ctx context.Context, token string) (bool, error) { s.ServerType = settings.ServerType s.ConnectionPort = settings.ConnectionPort s.IsActive = true + s.MaxConnections = settings.MaxConnections return s.IsActive, err } From 673bd195b77226ee20cfdbd47c7a26e56b5f64e7 Mon Sep 17 00:00:00 2001 From: temur abdurahmanov Date: Fri, 10 Jan 2025 02:07:00 +0300 Subject: [PATCH 5/5] fix room sorting servers --- internal/service/dev_tools/connections.go | 8 ++++---- internal/start/multiplatform.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/service/dev_tools/connections.go b/internal/service/dev_tools/connections.go index b3c99a9..87f32e0 100644 --- a/internal/service/dev_tools/connections.go +++ b/internal/service/dev_tools/connections.go @@ -248,6 +248,10 @@ func (c *connections) GetRoomsConnectionUrls(ctx context.Context, token string) } for _, server := range uniqueServers { + if _, ok := uniqueServerType[server.ServerType]; ok { + continue + } + connNum, exists, err := server.GetConnectionsNum(ctx, token) if err != nil { c.logger.Error().Err(err).Msg("server error create room") @@ -258,10 +262,6 @@ func (c *connections) GetRoomsConnectionUrls(ctx context.Context, token string) continue } - if _, ok := uniqueServerType[server.ServerType]; ok { - continue - } - err = server.CreateRoom(ctx, token, time.Duration(time.Minute*10)) if err != nil { if err.Error() != errors.ErrRoomIsExists.Error() { diff --git a/internal/start/multiplatform.go b/internal/start/multiplatform.go index 6327bdd..80f67df 100644 --- a/internal/start/multiplatform.go +++ b/internal/start/multiplatform.go @@ -58,7 +58,7 @@ func Multiplayer(logger zerolog.Logger) { devToolsServerService := devtools.NewServerService(accessGameService, gameStorage, serverStorage, token, &logger) devToolsGameConfigs := devtools.NewGameConfigs(accessGameService, gameConfigStorage, token, &logger) - go connectionsScheduler.RoomCleaner(context.Background(), time.Minute*15, 300) + go connectionsScheduler.RoomCleaner(context.Background(), time.Minute*15, 0) services := []transport.Option{ transport.MaxBodySize(10 * 1024 * 1024),