creader
[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/entities"
7         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader"
8         "gerrit.o-ran-sc.org/r/ric-plt/sdlgo"
9         "unsafe"
10 )
11
12 //#include <string.h>
13 import "C"
14
15 var sdl common.ISdlInstance
16 var instance reader.RNibReader
17
18 type response struct {
19         GnbList  []*entities.NbIdentity `json:"gnb_list"`
20         ErrorMsg string                 `json:"error_msg,omitempty"`
21 }
22
23 //export openSdl
24 func openSdl() {
25         sdl = sdlgo.NewSdlInstance("e2Manager", sdlgo.NewDatabase())
26         instance = reader.GetRNibReader(sdl)
27 }
28
29 //export closeSdl
30 func closeSdl() {
31         _ = sdl.Close()
32 }
33
34 //export getListGnbIds
35 func getListGnbIds() unsafe.Pointer {
36         listGnbIds, err := instance.GetListGnbIds()
37         res := &response{}
38
39         if err != nil {
40                 res.ErrorMsg = err.Error()
41
42                 return createCBytesResponse(res)
43         }
44
45         if listGnbIds != nil {
46                 res.GnbList = listGnbIds
47         }
48
49         return createCBytesResponse(res)
50 }
51
52 func createCBytesResponse(res *response) unsafe.Pointer {
53         byteResponse, err := json.Marshal(res)
54         if err != nil {
55                 return nil
56         }
57
58         return C.CBytes(byteResponse)
59 }
60
61 func main() {}