| 28 | } |
| 29 | |
| 30 | func (b *Buffer) AddEntry(lvl runtimev1.LogLevel, t time.Time, msg, payload string) error { |
| 31 | message := &runtimev1.Log{ |
| 32 | Level: lvl, |
| 33 | Time: timestamppb.New(t), |
| 34 | Message: msg, |
| 35 | JsonPayload: payload, |
| 36 | } |
| 37 | |
| 38 | b.mu.Lock() |
| 39 | defer b.mu.Unlock() |
| 40 | |
| 41 | b.messages.Push(bufferutil.Item[*runtimev1.Log]{ |
| 42 | Value: message, |
| 43 | Size: len(payload) + len(msg) + 8 + 12, // enum size (assuming upper bound for 64 bits system) + proto Timestamp size |
| 44 | }) |
| 45 | |
| 46 | for client := range b.clients { |
| 47 | client <- message |
| 48 | } |
| 49 | return nil |
| 50 | } |
| 51 | |
| 52 | func (b *Buffer) WatchLogs(ctx context.Context, fn LogCallback, minLvl runtimev1.LogLevel) error { |
| 53 | messageChannel := make(chan *runtimev1.Log) |