package service import ( "fmt" "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 } 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() return nil }