Skip to content

Commit

Permalink
feat: introduce configurable event tracking intervals
Browse files Browse the repository at this point in the history
- Added a new EventTrackerConfig struct to hold various configuration intervals for event tracking.
- Modified the NewEventTracker function to accept a time.Duration parameter, allowing for dynamic configuration of event handler intervals.
- Updated the EventTracker initialization in the processor to utilize the new configuration based on settings.

These changes enhance the flexibility and customization of event tracking behavior in the application.
  • Loading branch information
tphakala committed Jan 15, 2025
1 parent 925afed commit 2905037
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 7 deletions.
22 changes: 16 additions & 6 deletions internal/analysis/processor/eventtracker.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,24 @@ type EventTracker struct {
Mutex sync.Mutex // Mutex to ensure thread-safe access
}

// NewEventTracker initializes a new EventTracker with default event handlers.
func NewEventTracker() *EventTracker {
// Add this new struct to hold configuration
type EventTrackerConfig struct {
DatabaseSaveInterval time.Duration
LogToFileInterval time.Duration
NotificationInterval time.Duration
BirdWeatherSubmitInterval time.Duration
MQTTPublishInterval time.Duration
}

// Modify NewEventTracker to accept configuration
func NewEventTracker(interval time.Duration) *EventTracker {
return &EventTracker{
Handlers: map[EventType]*EventHandler{
DatabaseSave: NewEventHandler(15*time.Second, StandardEventBehavior),
LogToFile: NewEventHandler(15*time.Second, StandardEventBehavior),
SendNotification: NewEventHandler(60*time.Minute, StandardEventBehavior),
BirdWeatherSubmit: NewEventHandler(15*time.Second, StandardEventBehavior),
DatabaseSave: NewEventHandler(interval, StandardEventBehavior),
LogToFile: NewEventHandler(interval, StandardEventBehavior),
SendNotification: NewEventHandler(interval, StandardEventBehavior),
BirdWeatherSubmit: NewEventHandler(interval, StandardEventBehavior),
MQTTPublish: NewEventHandler(interval, StandardEventBehavior),
},
}
}
Expand Down
2 changes: 1 addition & 1 deletion internal/analysis/processor/processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func New(settings *conf.Settings, ds datastore.Interface, bn *birdnet.BirdNET, m
Ds: ds,
Bn: bn,
BirdImageCache: birdImageCache,
EventTracker: NewEventTracker(),
EventTracker: NewEventTracker(time.Duration(settings.Realtime.Interval) * time.Second),
Metrics: metrics,
LastDogDetection: make(map[string]time.Time),
LastHumanDetection: make(map[string]time.Time),
Expand Down

0 comments on commit 2905037

Please sign in to comment.