summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjw_wonny.cha <jw_wonny.cha@samsung.com>2019-04-02 15:04:15 +0900
committerjw_wonny.cha <jw_wonny.cha@samsung.com>2019-04-02 15:04:15 +0900
commitf002ce70dce57a83806d93cda4bcc3ea95d7f444 (patch)
tree2e322a148400af617aa4f4ad8f6389449d6bed35
parent18cb557deb5fcc83a53783090cbe82c2c4469c35 (diff)
downloadedge-orchestration-f002ce70dce57a83806d93cda4bcc3ea95d7f444.tar.gz
edge-orchestration-f002ce70dce57a83806d93cda4bcc3ea95d7f444.tar.bz2
edge-orchestration-f002ce70dce57a83806d93cda4bcc3ea95d7f444.zip
- Add parameter that channel getting score value in load function
-rw-r--r--src/scoringmgr/mock/mock_lib_add.go58
1 files changed, 34 insertions, 24 deletions
diff --git a/src/scoringmgr/mock/mock_lib_add.go b/src/scoringmgr/mock/mock_lib_add.go
index 4bebea3..e5c8768 100644
--- a/src/scoringmgr/mock/mock_lib_add.go
+++ b/src/scoringmgr/mock/mock_lib_add.go
@@ -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
}