MCPcopy Create free account
hub / github.com/clrxbl/blockgametracker / Write

Method Write

internal/queue/spool.go:28–45  ·  view source on GitHub ↗

Write persists a batch atomically as - .fb. The filename timestamp is used to drain oldest-first.

(payload []byte)

Source from the content-addressed store, hash-verified

26// Write persists a batch atomically as <unix_nanos>-<rand>.fb. The filename
27// timestamp is used to drain oldest-first.
28func (s *Spool) Write(payload []byte) (string, error) {
29 var randSuffix [4]byte
30 if _, err := rand.Read(randSuffix[:]); err != nil {
31 return "", err
32 }
33 name := fmt.Sprintf("%d-%s%s", time.Now().UnixNano(), hex.EncodeToString(randSuffix[:]), spoolExt)
34 final := filepath.Join(s.Dir, name)
35 tmp := final + ".tmp"
36
37 if err := os.WriteFile(tmp, payload, 0o644); err != nil {
38 return "", err
39 }
40 if err := os.Rename(tmp, final); err != nil {
41 _ = os.Remove(tmp)
42 return "", err
43 }
44 return final, nil
45}
46
47// List returns spooled file paths sorted oldest-first.
48func (s *Spool) List() ([]string, error) {

Callers 3

tickMethod · 0.80

Calls 1

ReadMethod · 0.80