--- /dev/null
+package scoringmgr
+
+import "unsafe"
+
+import (
+ confdescription "configuremgr/description"
+)
+
+type Handler struct {
+ handlerName string
+ libPath string
+ devicesScore map[string]float64
+ intervalMs int
+ resourceCount int
+ scoreValue int
+ symbolPtr unsafe.Pointer
+
+}
+
+type Handlers struct {
+ table map[string]*Handler
+
+ Ch chan interface{}
+ IloadScoringLibrary func (string, int) ()
+}
+
+
+func Init() (handlers *Handlers){
+
+ handlers = new(Handlers)
+ handlers.table = make(map[string]*Handler)
+
+ return
+}
+
+//TODO : async notify lib loading
+func PushLibPath(libPath string, doc *confdescription.Doc, handlersCh chan<- interface{}) (err error){
+ handlersCh <- pair{libPath, doc}
+ return nil
+}
+
+func (handlers *Handlers) Listening() {
+
+ go func(){
+
+ ILog.Println("listening started")
+ for {
+
+ select {
+ case obj := <- handlers.Ch :
+
+ handlerObj := handlers.makeHandler(obj.(pair))
+ handlers.runScoring(handlerObj)
+ }
+
+ }
+
+ }()
+}
+
+func (handlers *Handlers) makeHandler(pairObj pair) (handlerObj *Handler) {
+ handlerObj = new(Handler)
+ handlerObj.handlerName = pairObj.libPath
+ handlerObj.libPath = pairObj.libPath
+ handlerObj.intervalMs = pairObj.doc.ResourceType.IntervalTimeMs
+ handlerObj.devicesScore = make(map[string]float64)
+
+ handlers.table[pairObj.libPath] = handlerObj
+
+ return
+}
+
+func (handlers *Handlers) runScoring(handlerObj *Handler) {
+ go handlers.IloadScoringLibrary(handlerObj.libPath, handlerObj.intervalMs)
+ return
+}
\ No newline at end of file