diff --git a/pkg/lib/id.go b/pkg/lib/id.go index d1b85ec..7ba0a29 100644 --- a/pkg/lib/id.go +++ b/pkg/lib/id.go @@ -3,6 +3,7 @@ package lib import ( "github.com/anandvarma/namegen" "github.com/google/uuid" + "github.com/lithammer/shortuuid" ) // IdGenerator generates unique ids @@ -19,6 +20,14 @@ func (g *UUIDGenerator) GetId() (string, error) { return id.String(), nil } +type ShortIDGenerator struct { +} + +func (g *ShortIDGenerator) GetId() (string, error) { + id := shortuuid.New() + return id, nil +} + type IDNameGenerator struct { } diff --git a/pkg/sync/syncer.go b/pkg/sync/syncer.go index 71704c5..a052bd4 100644 --- a/pkg/sync/syncer.go +++ b/pkg/sync/syncer.go @@ -4,6 +4,7 @@ import ( "fmt" "io" "math/rand" + "sync" "time" "github.com/tim-beatham/wgmesh/pkg/conf" @@ -169,12 +170,22 @@ func (s *SyncerImpl) Pull(self mesh.MeshNode, mesh mesh.MeshProvider) error { // SyncMeshes: Sync all meshes func (s *SyncerImpl) SyncMeshes() error { - for _, mesh := range s.manager.GetMeshes() { - err := s.Sync(mesh) + var wg sync.WaitGroup - if err != nil { - logging.Log.WriteErrorf(err.Error()) + for _, mesh := range s.manager.GetMeshes() { + wg.Add(1) + + sync := func() { + defer wg.Done() + + err := s.Sync(mesh) + + if err != nil { + logging.Log.WriteErrorf(err.Error()) + } } + + go sync() } logging.Log.WriteInfof("updating the WireGuard configuration")