Skip to content

Commit

Permalink
add BufferedChannel to GetEventChannel
Browse files Browse the repository at this point in the history
Signed-off-by: slashexx <[email protected]>

fix: update event options in Docker event stream to use ListOptions

Signed-off-by: slashexx <[email protected]>

refactor: remove unused import for Docker API types in dockerHandler

Signed-off-by: slashexx <[email protected]>

refactor: update GetEventChannel to accept context and stop channel for better event handling

Signed-off-by: slashexx <[email protected]>
  • Loading branch information
slashexx committed Jan 21, 2025
1 parent 3a7003f commit 11c9a81
Showing 1 changed file with 27 additions and 6 deletions.
33 changes: 27 additions & 6 deletions KubeArmor/core/dockerHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import (
"strings"
"time"

"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/events"
"github.com/docker/docker/client"
Expand Down Expand Up @@ -216,12 +215,30 @@ func (dh *DockerHandler) GetContainerInfo(containerID string, OwnerInfo map[stri
// ========================== //

// GetEventChannel Function
func (dh *DockerHandler) GetEventChannel() <-chan events.Message {
func (dh *DockerHandler) GetEventChannel(ctx context.Context, StopChan <- chan struct{}) <-chan events.Message {
if dh.DockerClient != nil {
event, _ := dh.DockerClient.Events(context.Background(), types.EventsOptions{})
return event
}
eventBuffer := make(chan events.Message, 256)

go func() {

eventStream, _ := dh.DockerClient.Events(ctx, events.ListOptions{})
defer close(eventBuffer)

for event := range eventStream {
select {
case eventBuffer <- event:
case <-ctx.Done():
return
case <-StopChan:
return
default:
kg.Warnf("Docker channel full.")
}
}
}()

return eventBuffer
}
return nil
}

Expand Down Expand Up @@ -753,7 +770,11 @@ func (dm *KubeArmorDaemon) MonitorDockerEvents() {

dm.Logger.Print("Started to monitor Docker events")

EventChan := Docker.GetEventChannel()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()


EventChan := Docker.GetEventChannel(ctx, StopChan)

for {
select {
Expand Down

0 comments on commit 11c9a81

Please sign in to comment.