Support for subscription callback
[ric-plt/xapp-frame.git] / pkg / xapp / db.go
old mode 100755 (executable)
new mode 100644 (file)
index f2286b4..495239f
 package xapp
 
 import (
+       rnibentities "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
+       rnibreader "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader"
        sdl "gerrit.o-ran-sc.org/r/ric-plt/sdlgo"
+       rnibwriter "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/rnib"
        "sync"
        "time"
 )
@@ -40,8 +43,31 @@ type SDLClient struct {
        ready bool
 }
 
+// Alias
+type RNIBNodeType = rnibentities.Node_Type
+type RNIBGlobalNbId = rnibentities.GlobalNbId
+type RNIBNodebInfo = rnibentities.NodebInfo
+type RNIBIRNibError = error
+type RNIBCells = rnibentities.Cells
+type RNIBNbIdentity = rnibentities.NbIdentity
+type RNIBCellType = rnibentities.Cell_Type
+type RNIBCell = rnibentities.Cell
+type RNIBEnb = rnibentities.Enb
+type RNIBGnb = rnibentities.Gnb
+
+const RNIBNodeENB = rnibentities.Node_ENB
+const RNIBNodeGNB = rnibentities.Node_GNB
+
+type RNIBServedCellInfo = rnibentities.ServedCellInfo
+type RNIBNodebInfoEnb = rnibentities.NodebInfo_Enb
+type RNIBNodebInfoGnb = rnibentities.NodebInfo_Gnb
+type RNIBServedNRCell = rnibentities.ServedNRCell
+type RNIBServedNRCellInformation = rnibentities.ServedNRCellInformation
+type RNIBNrNeighbourInformation = rnibentities.NrNeighbourInformation
+
 type RNIBClient struct {
-       db *sdl.SdlInstance
+       reader rnibreader.RNibReader
+       writer rnibwriter.RNibWriter
 }
 
 // NewSDLClient returns a new SDLClient.
@@ -70,8 +96,8 @@ func (s *SDLClient) IsReady() bool {
        return s.ready
 }
 
-func (s *SDLClient) Store(key string, value interface{}) (err error) {
-       err = s.db.Set(key, value)
+func (s *SDLClient) doSet(pairs ...interface{}) (err error) {
+       err = s.db.Set(pairs)
        if err != nil {
                s.UpdateStatCounter("StoreError")
        } else {
@@ -80,9 +106,24 @@ func (s *SDLClient) Store(key string, value interface{}) (err error) {
        return
 }
 
+func (s *SDLClient) Store(key string, value interface{}) (err error) {
+       return s.doSet(key, value)
+}
+
+func (s *SDLClient) MStore(pairs ...interface{}) (err error) {
+       return s.doSet(pairs)
+}
+
 func (s *SDLClient) Read(key string) (value map[string]interface{}, err error) {
-       value, err = s.db.Get([]string{key})
-       return
+       return s.db.Get([]string{key})
+}
+
+func (s *SDLClient) MRead(key []string) (value map[string]interface{}, err error) {
+       return s.db.Get(key)
+}
+
+func (s *SDLClient) ReadAllKeys(key string) (value []string, err error) {
+       return s.db.GetAll()
 }
 
 func (s *SDLClient) Subscribe(cb func(string, ...string), channel string) error {
@@ -101,6 +142,10 @@ func (s *SDLClient) MStoreAndPublish(channelsAndEvents []string, pairs ...interf
        return s.db.SetAndPublish(channelsAndEvents, pairs...)
 }
 
+func (s *SDLClient) Delete(keys []string) (err error) {
+       return s.db.Remove(keys)
+}
+
 func (s *SDLClient) Clear() {
        s.db.RemoveAll()
 }
@@ -119,39 +164,47 @@ func (c *SDLClient) GetStat() (t SDLStatistics) {
        return
 }
 
-// To be removed ...
 func NewRNIBClient(ns string) *RNIBClient {
+       rnibreader.Init("e2Manager", 1)
+       rnibwriter.InitWriter("e2Manager", 1)
        return &RNIBClient{
-               db: sdl.NewSdlInstance(ns, sdl.NewDatabase()),
+               reader: nil,
+               writer: nil,
        }
 }
 
-func (r *RNIBClient) GetgNBList() (values map[string]interface{}, err error) {
-       keys, err := r.db.GetAll()
-       if err == nil {
-               values = make(map[string]interface{})
-               for _, key := range keys {
-                       v, err := r.db.Get([]string{key})
-                       if err == nil {
-                               values[key] = v[key]
-                       }
-               }
-       }
-       return
+func (r *RNIBClient) GetNodeb(invName string) (*RNIBNodebInfo, RNIBIRNibError) {
+       return rnibreader.GetRNibReader().GetNodeb(invName)
+}
+
+func (r *RNIBClient) GetNodebByGlobalNbId(t RNIBNodeType, gid *RNIBGlobalNbId) (*RNIBNodebInfo, RNIBIRNibError) {
+       return rnibreader.GetRNibReader().GetNodebByGlobalNbId(t, gid)
+}
+
+func (r *RNIBClient) GetCellList(invName string) (*RNIBCells, RNIBIRNibError) {
+       return rnibreader.GetRNibReader().GetCellList(invName)
+}
+
+func (r *RNIBClient) GetListGnbIds() ([]*RNIBNbIdentity, RNIBIRNibError) {
+       return rnibreader.GetRNibReader().GetListGnbIds()
+}
+
+func (r *RNIBClient) GetListEnbIds() ([]*RNIBNbIdentity, RNIBIRNibError) {
+       return rnibreader.GetRNibReader().GetListEnbIds()
 }
 
-func (r *RNIBClient) GetNRCellList(key string) (value map[string]interface{}, err error) {
-       return r.db.Get([]string{key})
+func (r *RNIBClient) GetCountGnbList() (int, RNIBIRNibError) {
+       return rnibreader.GetRNibReader().GetCountGnbList()
 }
 
-func (r *RNIBClient) GetUE(key1, key2 string) (value map[string]interface{}, err error) {
-       return r.db.Get([]string{key1 + key2})
+func (r *RNIBClient) GetCell(invName string, pci uint32) (*RNIBCell, RNIBIRNibError) {
+       return rnibreader.GetRNibReader().GetCell(invName, pci)
 }
 
-func (r *RNIBClient) Store(key string, value interface{}) (err error) {
-       return r.db.Set(key, value)
+func (r *RNIBClient) GetCellById(cellType RNIBCellType, cellId string) (*RNIBCell, RNIBIRNibError) {
+       return rnibreader.GetRNibReader().GetCellById(cellType, cellId)
 }
 
-func (r *RNIBClient) Clear() {
-       r.db.RemoveAll()
+func (r *RNIBClient) SaveNodeb(nbIdentity *RNIBNbIdentity, entity *RNIBNodebInfo) RNIBIRNibError {
+       return rnibwriter.GetRNibWriter().SaveNodeb(nbIdentity, entity)
 }