scoringmgr library handler implemented
authorjaehoon.hyun <jaehoon.hyun@samsung.com>
Thu, 28 Mar 2019 07:51:44 +0000 (16:51 +0900)
committerjaehoon.hyun <jaehoon.hyun@samsung.com>
Thu, 28 Mar 2019 07:52:32 +0000 (16:52 +0900)
src/scoringmgr/handlers.go [new file with mode: 0644]
src/scoringmgr/pair.go [new file with mode: 0644]

diff --git a/src/scoringmgr/handlers.go b/src/scoringmgr/handlers.go
new file mode 100644 (file)
index 0000000..b730181
--- /dev/null
@@ -0,0 +1,76 @@
+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
diff --git a/src/scoringmgr/pair.go b/src/scoringmgr/pair.go
new file mode 100644 (file)
index 0000000..c1c569c
--- /dev/null
@@ -0,0 +1,10 @@
+package scoringmgr
+
+import (
+  confdescription  "configuremgr/description"
+)
+
+type pair struct {
+  libPath string
+  doc     *confdescription.Doc
+}
\ No newline at end of file