github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/edge/pkg/devicetwin/dtmodule/dtmodule.go (about) 1 package dtmodule 2 3 import ( 4 "k8s.io/klog" 5 6 "github.com/kubeedge/kubeedge/edge/pkg/devicetwin/dtcommon" 7 "github.com/kubeedge/kubeedge/edge/pkg/devicetwin/dtcontext" 8 "github.com/kubeedge/kubeedge/edge/pkg/devicetwin/dtmanager" 9 ) 10 11 //DTModule module for devicetwin 12 type DTModule struct { 13 Name string 14 Worker dtmanager.DTWorker 15 } 16 17 // InitWorker init worker 18 func (dm *DTModule) InitWorker(recv chan interface{}, confirm chan interface{}, heartBeat chan interface{}, dtContext *dtcontext.DTContext) { 19 switch dm.Name { 20 case dtcommon.MemModule: 21 dm.Worker = dtmanager.MemWorker{ 22 Group: dtcommon.MemModule, 23 Worker: dtmanager.Worker{ 24 ReceiverChan: recv, 25 ConfirmChan: confirm, 26 HeartBeatChan: heartBeat, 27 DTContexts: dtContext, 28 }, 29 } 30 case dtcommon.TwinModule: 31 dm.Worker = dtmanager.TwinWorker{ 32 Group: dtcommon.TwinModule, 33 Worker: dtmanager.Worker{ 34 ReceiverChan: recv, 35 ConfirmChan: confirm, 36 HeartBeatChan: heartBeat, 37 DTContexts: dtContext, 38 }, 39 } 40 case dtcommon.DeviceModule: 41 dm.Worker = dtmanager.DeviceWorker{ 42 Group: dtcommon.DeviceModule, 43 Worker: dtmanager.Worker{ 44 ReceiverChan: recv, 45 ConfirmChan: confirm, 46 HeartBeatChan: heartBeat, 47 DTContexts: dtContext, 48 }, 49 } 50 case dtcommon.CommModule: 51 dm.Worker = dtmanager.CommWorker{ 52 Group: dtcommon.CommModule, 53 Worker: dtmanager.Worker{ 54 ReceiverChan: recv, 55 ConfirmChan: confirm, 56 HeartBeatChan: heartBeat, 57 DTContexts: dtContext, 58 }, 59 } 60 } 61 } 62 63 //Start module, actual worker start 64 func (dm DTModule) Start() { 65 defer func() { 66 if err := recover(); err != nil { 67 klog.Infof("%s in twin panic", dm.Name) 68 } 69 }() 70 dm.Worker.Start() 71 }