mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-12 22:54:43 +08:00
108 lines
2.1 KiB
Go
108 lines
2.1 KiB
Go
package service
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"os"
|
|
"reflect"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
type MethodInfo struct {
|
|
Fun reflect.Value
|
|
ParamList []reflect.Value
|
|
types reflect.Type
|
|
}
|
|
|
|
type IService interface {
|
|
Init(Iservice IService) error
|
|
OnInit() error
|
|
OnRun() bool
|
|
OnFetchService(iservice IService) error
|
|
OnSetupService(iservice IService) //其他服务被安装
|
|
OnRemoveService(iservice IService) //其他服务被安装
|
|
|
|
GetServiceName() string
|
|
SetServiceName(serviceName string) bool
|
|
GetServiceId() int
|
|
IsTimeOutTick(microSecond int64) bool
|
|
|
|
GetStatus() int
|
|
}
|
|
|
|
var Log *log.Logger
|
|
var logFile *os.File
|
|
|
|
func InitLog() {
|
|
fileName := "system-" + time.Now().Format("2006-01-02") + ".log"
|
|
var err error
|
|
logFile, err = os.Create(fileName)
|
|
|
|
if err != nil {
|
|
log.Fatalln("open file error")
|
|
}
|
|
Log = log.New(logFile, "", log.Lshortfile|log.LstdFlags)
|
|
}
|
|
|
|
type BaseService struct {
|
|
BaseModule
|
|
|
|
serviceid int
|
|
servicename string
|
|
Status int
|
|
}
|
|
|
|
func (slf *BaseService) GetServiceId() int {
|
|
return slf.serviceid
|
|
}
|
|
|
|
func (slf *BaseService) GetServiceName() string {
|
|
return slf.servicename
|
|
}
|
|
|
|
func (slf *BaseService) SetServiceName(serviceName string) bool {
|
|
slf.servicename = serviceName
|
|
return true
|
|
}
|
|
|
|
func (slf *BaseService) GetStatus() int {
|
|
return slf.Status
|
|
}
|
|
|
|
func (slf *BaseService) OnFetchService(iservice IService) error {
|
|
return nil
|
|
}
|
|
|
|
func (slf *BaseService) OnSetupService(iservice IService) {
|
|
|
|
return
|
|
}
|
|
|
|
func (slf *BaseService) OnRemoveService(iservice IService) {
|
|
return
|
|
}
|
|
|
|
func (slf *BaseService) Init(iservice IService) error {
|
|
slf.ownerService = iservice
|
|
slf.servicename = fmt.Sprintf("%T", iservice)
|
|
parts := strings.Split(slf.servicename, ".")
|
|
if len(parts) != 2 {
|
|
GetLogger().Printf(LEVER_ERROR, "BaseService.Init: service name is error: %q", slf.servicename)
|
|
err := fmt.Errorf("BaseService.Init: service name is error: %q", slf.servicename)
|
|
return err
|
|
}
|
|
|
|
slf.servicename = parts[1]
|
|
slf.serviceid = InstanceServiceMgr().GenServiceID()
|
|
|
|
return nil
|
|
}
|
|
|
|
func (slf *BaseService) IsTimeOutTick(microSecond int64) bool {
|
|
|
|
nowtm := time.Now().UnixNano() / 1e6
|
|
return nowtm-slf.tickTime >= microSecond
|
|
}
|