Merge "RICPLT-2707 - Create RNIB reader in C"
[ric-plt/nodeb-rnib.git] / creader / rNibReader_c.go
1 package main
2
3 import (
4         "encoding/json"
5         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
6         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader"
7         "gerrit.o-ran-sc.org/r/ric-plt/sdlgo"
8         "unsafe"
9 )
10
11 //#include <string.h>
12 import "C"
13
14 var sdl common.ISdlInstance
15 var instance reader.RNibReader
16
17 type response struct {
18         GnbList []string        `json:"gnb_list"`
19 }
20
21 //export open
22 func open() {
23         sdl = sdlgo.NewSdlInstance("e2Manager", sdlgo.NewDatabase())
24         instance = reader.GetRNibReader(sdl)
25 }
26
27 //export close
28 func close() {
29         _ = sdl.Close()
30 }
31
32 //export getListGnbIds
33 func getListGnbIds() unsafe.Pointer {
34         listGnbIds, err := instance.GetListGnbIds()
35         if err != nil || listGnbIds == nil{
36                 return nil
37         }
38
39         var gnbList []string
40         for _, value := range listGnbIds {
41                 gnbList = append(gnbList, value.InventoryName)
42         }
43         res := &response{
44                 GnbList:gnbList,
45         }
46
47         byteResponse, err := json.Marshal(res)
48         if err != nil {
49                 return nil
50         }
51
52         return C.CBytes(byteResponse)
53 }
54
55
56
57 func main() {
58 }