github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/edge/pkg/devicetwin/devicetwin.go (about) 1 package devicetwin 2 3 import ( 4 "k8s.io/klog" 5 6 "github.com/kubeedge/beehive/pkg/core" 7 "github.com/kubeedge/kubeedge/common/constants" 8 "github.com/kubeedge/kubeedge/edge/pkg/common/modules" 9 deviceconfig "github.com/kubeedge/kubeedge/edge/pkg/devicetwin/config" 10 "github.com/kubeedge/kubeedge/edge/pkg/devicetwin/dtclient" 11 "github.com/kubeedge/kubeedge/edge/pkg/devicetwin/dtcontext" 12 "github.com/kubeedge/kubeedge/edge/pkg/devicetwin/dtmodule" 13 "github.com/kubeedge/kubeedge/pkg/apis/componentconfig/edgecore/v1alpha1" 14 ) 15 16 //DeviceTwin the module 17 type DeviceTwin struct { 18 HeartBeatToModule map[string]chan interface{} 19 DTContexts *dtcontext.DTContext 20 DTModules map[string]dtmodule.DTModule 21 enable bool 22 } 23 24 func newDeviceTwin(enable bool) *DeviceTwin { 25 return &DeviceTwin{ 26 HeartBeatToModule: make(map[string]chan interface{}), 27 DTModules: make(map[string]dtmodule.DTModule), 28 enable: enable, 29 } 30 } 31 32 // Register register devicetwin 33 func Register(deviceTwin *v1alpha1.DeviceTwin, nodeName string) { 34 deviceconfig.InitConfigure(deviceTwin, nodeName) 35 dt := newDeviceTwin(deviceTwin.Enable) 36 dtclient.InitDBTable(dt) 37 core.Register(dt) 38 } 39 40 // Name get name of the module 41 func (dt *DeviceTwin) Name() string { 42 return constants.DeviceTwinModuleName 43 } 44 45 // Group get group of the module 46 func (dt *DeviceTwin) Group() string { 47 return modules.TwinGroup 48 } 49 50 // Enable indicates whether this module is enabled 51 func (dt *DeviceTwin) Enable() bool { 52 return dt.enable 53 } 54 55 // Start run the module 56 func (dt *DeviceTwin) Start() { 57 dtContexts, _ := dtcontext.InitDTContext() 58 dt.DTContexts = dtContexts 59 err := SyncSqlite(dt.DTContexts) 60 if err != nil { 61 klog.Errorf("Start DeviceTwin Failed, Sync Sqlite error:%v", err) 62 return 63 } 64 dt.runDeviceTwin() 65 }