tdd code incubator directory
authorjaehoon.hyun <jaehoon.hyun@samsung.com>
Thu, 28 Mar 2019 07:51:08 +0000 (16:51 +0900)
committerjaehoon.hyun <jaehoon.hyun@samsung.com>
Thu, 28 Mar 2019 07:51:08 +0000 (16:51 +0900)
src/scoringmgr/incubator/makeDynamicLibraryCall.go [new file with mode: 0644]
src/scoringmgr/incubator/pairChannel.go [new file with mode: 0644]

diff --git a/src/scoringmgr/incubator/makeDynamicLibraryCall.go b/src/scoringmgr/incubator/makeDynamicLibraryCall.go
new file mode 100644 (file)
index 0000000..87d36a0
--- /dev/null
@@ -0,0 +1,62 @@
+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
diff --git a/src/scoringmgr/incubator/pairChannel.go b/src/scoringmgr/incubator/pairChannel.go
new file mode 100644 (file)
index 0000000..3da49c0
--- /dev/null
@@ -0,0 +1,63 @@
+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