- Add parameter that channel getting score value in load function
authorjw_wonny.cha <jw_wonny.cha@samsung.com>
Tue, 2 Apr 2019 06:04:15 +0000 (15:04 +0900)
committerjw_wonny.cha <jw_wonny.cha@samsung.com>
Tue, 2 Apr 2019 06:04:15 +0000 (15:04 +0900)
src/scoringmgr/mock/mock_lib_add.go

index 4bebea3f6df32a5f84495ad0b67d0149cc8b2552..e5c8768c2238e0de2180d30523c486c65247bea5 100644 (file)
@@ -11,37 +11,47 @@ wrap_add(void *f, int a, int b){
 }
 */
 import "C"
-import "unsafe"
-
 import (
-  "time"
-  scoringmgr "scoringmgr"
+       "unsafe"
+
+       scoringmgr "scoringmgr"
+       "time"
 )
 
-func LoadScoringAdd(libPath string, intervalMs int) {
+// LoadScoringAdd function
+func LoadScoringAdd(libPath string, intervalMs int, scoreChan chan float64) {
+
+       sym := C.CString("add")
+       defer C.free(unsafe.Pointer(sym))
+
+       lib := C.CString(libPath)
+       defer C.free(unsafe.Pointer(lib))
 
-  sym := C.CString("add")
-  defer C.free(unsafe.Pointer(sym))
+       handle, err := C.dlopen(lib, C.RTLD_LAZY)
+       defer C.dlclose(handle)
 
-  lib := C.CString(libPath)
-  defer C.free(unsafe.Pointer(lib))
+       if err != nil {
+               scoringmgr.ELog.Fatal("dlopen error occured")
+       }
 
-  handle, err := C.dlopen(lib , C.RTLD_LAZY)
-  defer C.dlclose(handle)
+       symbolPtr, symbolErr := C.dlsym(handle, sym)
+       if symbolErr != nil {
+               scoringmgr.ELog.Fatal("symbol error occured")
+       }
 
-  if err != nil {
-    scoringmgr.ELog.Fatal("dlopen error occured")
-  }
-  
-  symbolPtr, symbolErr := C.dlsym(handle, sym)
-  if symbolErr != nil {
-    scoringmgr.ELog.Fatal("symbol error occured")
-  }
+       for {
+               select {
+               case scoreChan <- float64(C.wrap_add(symbolPtr, C.int(2), 3)):
+                       scoringmgr.ILog.Println(C.wrap_add(symbolPtr, C.int(2), 3))
+               default:
+                       go func() {
+                               <-scoreChan
+                               scoreChan <- float64(C.wrap_add(symbolPtr, C.int(2), 3))
+                       }()
+               }
 
-  for {
-    scoringmgr.ILog.Println(C.wrap_add(symbolPtr,2,3))
-    time.Sleep(time.Duration(intervalMs) * time.Millisecond)
-  }
+               time.Sleep(time.Duration(intervalMs) * time.Millisecond)
+       }
 
-  return 
+       // return
 }