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         ErrorMsg string   `json:"error_msg,omitempty"`
20 }
21
22 //export open
23 func open() {
24         sdl = sdlgo.NewSdlInstance("e2Manager", sdlgo.NewDatabase())
25         instance = reader.GetRNibReader(sdl)
26 }
27
28 //export close
29 func close() {
30         _ = sdl.Close()
31 }
32
33 //export getListGnbIds
34 func getListGnbIds() unsafe.Pointer {
35         listGnbIds, err := instance.GetListGnbIds()
36         res := &response{
37                 GnbList: []string{},
38         }
39
40         if err != nil {
41                 res.ErrorMsg = err.Error()
42
43                 return createCBytesResponse(res)
44         }
45
46         for _, value := range listGnbIds {
47                 res.GnbList = append(res.GnbList, value.InventoryName)
48         }
49
50         return createCBytesResponse(res)
51 }
52
53 func createCBytesResponse(res *response) unsafe.Pointer {
54         byteResponse, err := json.Marshal(res)
55         if err != nil {
56                 return nil
57         }
58
59         return C.CBytes(byteResponse)
60 }
61
62 func main() {
63
64 }