github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/cloud/pkg/edgecontroller/manager/common.go (about)

     1  package manager
     2  
     3  import (
     4  	"k8s.io/apimachinery/pkg/runtime"
     5  	"k8s.io/apimachinery/pkg/watch"
     6  	"k8s.io/klog"
     7  )
     8  
     9  // Manager define the interface of a Manager, configmapManager and podManager implement it
    10  type Manager interface {
    11  	Events() chan watch.Event
    12  }
    13  
    14  // CommonResourceEventHandler can be used by configmapManager and podManager
    15  type CommonResourceEventHandler struct {
    16  	events chan watch.Event
    17  }
    18  
    19  func (c *CommonResourceEventHandler) obj2Event(t watch.EventType, obj interface{}) {
    20  	eventObj, ok := obj.(runtime.Object)
    21  	if !ok {
    22  		klog.Warningf("unknown type: %T, ignore", obj)
    23  		return
    24  	}
    25  	c.events <- watch.Event{Type: t, Object: eventObj}
    26  }
    27  
    28  // OnAdd handle Add event
    29  func (c *CommonResourceEventHandler) OnAdd(obj interface{}) {
    30  	c.obj2Event(watch.Added, obj)
    31  }
    32  
    33  // OnUpdate handle Update event
    34  func (c *CommonResourceEventHandler) OnUpdate(oldObj, newObj interface{}) {
    35  	c.obj2Event(watch.Modified, newObj)
    36  }
    37  
    38  // OnDelete handle Delete event
    39  func (c *CommonResourceEventHandler) OnDelete(obj interface{}) {
    40  	c.obj2Event(watch.Deleted, obj)
    41  }
    42  
    43  // NewCommonResourceEventHandler create CommonResourceEventHandler used by configmapManager and podManager
    44  func NewCommonResourceEventHandler(events chan watch.Event) *CommonResourceEventHandler {
    45  	return &CommonResourceEventHandler{events: events}
    46  }