From f002ce70dce57a83806d93cda4bcc3ea95d7f444 Mon Sep 17 00:00:00 2001 From: "jw_wonny.cha" Date: Tue, 2 Apr 2019 15:04:15 +0900 Subject: [PATCH] - Add parameter that channel getting score value in load function --- src/scoringmgr/mock/mock_lib_add.go | 58 +++++++++++++++++------------ 1 file 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 } -- 2.34.1