MCPcopy
hub / github.com/wavetermdev/waveterm / persistEvent

Method persistEvent

pkg/wps/wps.go:195–224  ·  view source on GitHub ↗
(event WaveEvent)

Source from the content-addressed store, hash-verified

193}
194
195func (b *BrokerType) persistEvent(event WaveEvent) {
196 if event.Persist <= 0 {
197 return
198 }
199 numPersist := event.Persist
200 if numPersist > MaxPersist {
201 numPersist = MaxPersist
202 }
203 scopeMap := make(map[string]bool)
204 for _, scope := range event.Scopes {
205 scopeMap[scope] = true
206 }
207 scopeMap[""] = true
208 b.Lock.Lock()
209 defer b.Lock.Unlock()
210 for scope := range scopeMap {
211 key := persistKey{Event: event.Event, Scope: scope}
212 pe := b.PersistMap[key]
213 if pe == nil {
214 pe = &persistEventWrap{
215 Events: make([]*WaveEvent, 0, numPersist),
216 }
217 b.PersistMap[key] = pe
218 }
219 pe.Events = append(pe.Events, &event)
220 if len(pe.Events) > numPersist {
221 pe.Events = pe.Events[len(pe.Events)-numPersist:]
222 }
223 }
224}
225
226func (b *BrokerType) Publish(event WaveEvent) {
227 // log.Printf("BrokerType.Publish: %v\n", event)

Callers 1

PublishMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected