serviceCachemdl.go 1.66 KiB
Newer Older
Roshan Patil's avatar
Roshan Patil committed
package routebuildermdl

import (
	"mime/multipart"
	"time"

	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/cachemdl"
	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/servicebuildermdl"
)

var restrictedServices cachemdl.FastCacheHelper
var openServices cachemdl.FastCacheHelper

func init() {
	// TODO: Take configuration from config file
	restrictedServices.Setup(10, time.Second*600, time.Second*600)
	openServices.Setup(10, time.Second*600, time.Second*600)
}

// ServiceCache ServiceCache object
type ServiceCache struct {
	Service         func([]byte) (interface{}, error)
	FormService     func(*multipart.Form) (interface{}, error)
	MasterService   *servicebuildermdl.ServiceBuilder
	IsMasterService bool
	IsFormService   bool
}

func RegisterNormalService(serviceName string, servicePtr func([]byte) (interface{}, error), isRestricted bool) {
	service := ServiceCache{
		Service: servicePtr,
	}
	if isRestricted {
		restrictedServices.Set(serviceName, service)
	} else {
		openServices.Set(serviceName, service)
	}
}

func RegisterFormBasedService(serviceName string, servicePtr func(*multipart.Form) (interface{}, error), isRestricted bool) {
	service := ServiceCache{
		FormService:   servicePtr,
		IsFormService: true,
	}
	if isRestricted {
		restrictedServices.Set(serviceName, service)
	} else {
		openServices.Set(serviceName, service)
	}
}

func RegisterMasterService(serviceName string, servicePtr *servicebuildermdl.ServiceBuilder, isRestricted bool) {
	service := ServiceCache{
		MasterService:   servicePtr,
		IsMasterService: true,
	}
	if isRestricted {
		restrictedServices.Set(serviceName, service)
	} else {
		openServices.Set(serviceName, service)
	}
}