--- /dev/null
+package main
+
+
+
+/*
+#include <stdlib.h>
+#include <dlfcn.h>
+#cgo LDFLAGS: -ldl
+
+int
+wrap_add(void *f, int a, int b){
+ return ((int (*)(int a, int b))f)(a,b);
+}
+*/
+import "C"
+import "unsafe"
+import "fmt"
+import "time"
+
+func main() {
+
+ libPath := "src/scoringmgr/mock/mysum/libmysum.so"
+ LoadScoringAdd(libPath, 1000)
+ for {}
+
+}
+
+func LoadScoringAdd(libPath string, intervalMs int) {
+
+
+ go func(){
+
+ sym := C.CString("add")
+ defer C.free(unsafe.Pointer(sym))
+
+ lib := C.CString(libPath)
+
+ defer C.free(unsafe.Pointer(lib))
+
+ handle, err := C.dlopen(lib , C.RTLD_LAZY)
+ defer C.dlclose(handle)
+
+ if err != nil {
+ fmt.Println("dlopen error occured")
+ }
+
+ symbolPtr, symbolErr := C.dlsym(handle, sym)
+ if symbolErr != nil {
+ fmt.Println("dlsym error occured")
+ }
+
+ fmt.Printf("addSymbol is at %p\n", symbolPtr)
+ fmt.Println(C.wrap_add(symbolPtr, 2,3))
+
+ for{
+ fmt.Println(C.wrap_add(symbolPtr, 2,3))
+ time.Sleep(time.Duration(intervalMs) * time.Millisecond)
+ }
+ }()
+
+ return
+}
\ No newline at end of file
--- /dev/null
+package main
+
+import (
+ "log"
+)
+
+type handler struct {
+
+ handlerName string
+ handlerPath string
+
+ devicesScoreValue map[string]float64
+ handle int
+ interval int
+ resourceCount int
+
+ scoreValue int
+
+}
+
+
+type pair struct {
+ a string
+ b string
+}
+
+
+type Handlers struct {
+
+ Table map[string]*handler
+ ch chan pair
+}
+
+var handlers = Handlers {
+ Table : make(map[string]*handler),
+ ch : make(chan pair, 1024),
+
+}
+
+
+func main(){
+
+ handlerObj := new(handler)
+ handlerObj.handlerName = "HelloWorld"
+ handlerObj.handlerPath = "/usr/local/lib/libhelloworld"
+
+ handlers.Table["A"] = handlerObj
+
+ log.Println(handlerObj)
+
+ done := make(chan bool)
+ go func(){
+ handlers.ch <- pair{"A", "B"}
+ }()
+
+ go func(){
+ pairObj := <- handlers.ch
+ log.Println(pairObj)
+ done <- true
+ }()
+
+ <- done
+}
\ No newline at end of file