Files
origin/service/Service.go
2019-04-04 20:23:39 +08:00

88 lines
1.7 KiB
Go

package service
import (
"fmt"
"sync"
"reflect"
"strings"
)
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
GetStatus() int
IsInit() bool
}
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) {
}
func (slf *BaseService) OnRemoveService(iservice IService) {
}
func (slf *BaseService) Init(iservice IService) error {
slf.ownerService = iservice
if iservice.GetServiceName() == "" {
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()
slf.BaseModule.rwModuleLocker = &sync.Mutex{}
return nil
}