From f158a54e86099d56933691bc71f875542225abb5 Mon Sep 17 00:00:00 2001 From: matst80 Date: Mon, 11 Nov 2024 18:00:33 +0100 Subject: [PATCH] less save --- cart-grain.go | 3 +-- main.go | 5 ++++- packet.go | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/cart-grain.go b/cart-grain.go index 447f032..2f71789 100644 --- a/cart-grain.go +++ b/cart-grain.go @@ -113,8 +113,7 @@ func (c *CartGrain) AddItem(sku string, qty int) ([]byte, error) { func (c *CartGrain) GetStorageMessage(since int64) []StorableMessage { ret := make([]StorableMessage, 0) - c.mu.RLock() - defer c.mu.RUnlock() + for _, message := range c.storageMessages { if *message.TimeStamp > since { ret = append(ret, message) diff --git a/main.go b/main.go index 234a1b5..95bd398 100644 --- a/main.go +++ b/main.go @@ -58,6 +58,8 @@ type App struct { func (a *App) Save() error { hasChanges := false + a.pool.mu.RLock() + defer a.pool.mu.RUnlock() for id, grain := range a.pool.GetGrains() { if grain == nil { continue @@ -70,6 +72,7 @@ func (a *App) Save() error { } } } + if !hasChanges { return nil } @@ -128,7 +131,7 @@ func main() { } go func() { - for range time.Tick(time.Minute) { + for range time.Tick(time.Minute * 10) { err := app.Save() if err != nil { diff --git a/packet.go b/packet.go index b860db2..9a4b194 100644 --- a/packet.go +++ b/packet.go @@ -35,6 +35,9 @@ func ReadCartPacket(conn io.Reader, packet *CartPacket) error { } func GetPacketData(conn io.Reader, len uint64) ([]byte, error) { + if len == 0 { + return []byte{}, nil + } data := make([]byte, len) _, err := conn.Read(data) return data, err