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  }