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  }