From 34831bbc59b0cb62ec837e1791457cf3bd4574ce Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Mon, 4 Nov 2024 10:34:37 -0500 Subject: server: humidity record for each room --- record.go | 60 ------------------------------------------------------------ 1 file changed, 60 deletions(-) delete mode 100644 record.go (limited to 'record.go') diff --git a/record.go b/record.go deleted file mode 100644 index 9051146..0000000 --- a/record.go +++ /dev/null @@ -1,60 +0,0 @@ -package main - -import ( - "time" -) - -type Record[T any] struct { - put chan<- T - get chan<- chan T - getRecent chan<- chan T -} - -type entry[T any] struct { - t time.Time - v T -} - -func newRecord[T any]() Record[T] { - put := make(chan T) - get := make(chan chan T) - getRecent := make(chan chan T) - - go func() { - var entries []entry[T] - - for { - select { - case v, ok := <-put: - if !ok { - return - } - entries = append(entries, entry[T]{time.Now(), v}) - case c, ok := <-get: - if !ok { - return - } - for _, e := range entries { - c <- e.v - } - close(c) - case c, ok := <-getRecent: - if !ok { - return - } - if len(entries) > 0 { - c <- entries[len(entries)-1].v - } - close(c) - } - } - }() - - return Record[T]{put, get, getRecent} -} - -func (l Record[T]) Close() { - close(l.put) - close(l.get) - close(l.getRecent) -} -- cgit v1.2.3