E2 restart handling added
[ric-plt/submgr.git] / pkg / control / types.go
index 5408f48..22c8bc4 100644 (file)
 package control
 
 import (
+       "time"
+
        "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap"
-       "strconv"
-       "strings"
+       "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
 )
 
 //-----------------------------------------------------------------------------
@@ -36,118 +37,45 @@ func (rid *RequestId) String() string {
        return "reqid(" + rid.RequestId.String() + ")"
 }
 
-//-----------------------------------------------------------------------------
-//
-//-----------------------------------------------------------------------------
-type RmrEndpoint struct {
-       Addr string // xapp addr
-       Port uint16 // xapp port
+type Sdlnterface interface {
+       Set(ns string, pairs ...interface{}) error
+       Get(ns string, keys []string) (map[string]interface{}, error)
+       GetAll(ns string) ([]string, error)
+       Remove(ns string, keys []string) error
+       RemoveAll(ns string) error
 }
 
-func (endpoint RmrEndpoint) String() string {
-       return endpoint.Addr + ":" + strconv.FormatUint(uint64(endpoint.Port), 10)
-}
-
-func (endpoint *RmrEndpoint) Equal(ep *RmrEndpoint) bool {
-       if (endpoint.Addr == ep.Addr) &&
-               (endpoint.Port == ep.Port) {
-               return true
-       }
-       return false
-}
-
-func (endpoint *RmrEndpoint) GetAddr() string {
-       return endpoint.Addr
-}
-
-func (endpoint *RmrEndpoint) GetPort() uint16 {
-       return endpoint.Port
-}
-
-func (endpoint *RmrEndpoint) Set(src string) bool {
-       elems := strings.Split(src, ":")
-       if len(elems) == 2 {
-               srcAddr := elems[0]
-               srcPort, err := strconv.ParseUint(elems[1], 10, 16)
-               if err == nil {
-                       endpoint.Addr = srcAddr
-                       endpoint.Port = uint16(srcPort)
-                       return true
-               }
-       }
-       return false
-}
+type E2SubscriptionDirectives struct {
+       // How many times E2 subscription request is retried
+       // Required: true
+       // Maximum: 10
+       // Minimum: 0
+       E2MaxTryCount int64
 
-//-----------------------------------------------------------------------------
-//
-//-----------------------------------------------------------------------------
-type RmrEndpointList struct {
-       Endpoints []RmrEndpoint
-}
-
-func (eplist *RmrEndpointList) String() string {
-       valuesText := eplist.StringList()
-       return strings.Join(valuesText, ",")
-}
-
-func (eplist *RmrEndpointList) StringList() []string {
-       tmpList := eplist.Endpoints
-       valuesText := []string{}
-       for i := range tmpList {
-               valuesText = append(valuesText, tmpList[i].String())
-       }
-       return valuesText
-}
-
-func (eplist *RmrEndpointList) Size() int {
-       return len(eplist.Endpoints)
-}
-
-func (eplist *RmrEndpointList) AddEndpoint(ep *RmrEndpoint) bool {
-       for i := range eplist.Endpoints {
-               if eplist.Endpoints[i].Equal(ep) {
-                       return false
-               }
-       }
-       eplist.Endpoints = append(eplist.Endpoints, *ep)
-       return true
-}
+       // How long time response is waited from E2 node
+       // Maximum: 10s
+       // Minimum: 1s
+       E2TimeoutTimerValue time.Duration
 
-func (eplist *RmrEndpointList) DelEndpoint(ep *RmrEndpoint) bool {
-       for i := range eplist.Endpoints {
-               if eplist.Endpoints[i].Equal(ep) {
-                       eplist.Endpoints[i] = eplist.Endpoints[len(eplist.Endpoints)-1]
-                       eplist.Endpoints[len(eplist.Endpoints)-1] = RmrEndpoint{"", 0}
-                       eplist.Endpoints = eplist.Endpoints[:len(eplist.Endpoints)-1]
-                       return true
-               }
-       }
-       return false
+       // Subscription needs RMR route from E2Term to xApp
+       CreateRMRRoute bool
 }
 
-func (eplist *RmrEndpointList) DelEndpoints(otheplist *RmrEndpointList) bool {
-       var retval bool = false
-       for i := range otheplist.Endpoints {
-               if eplist.DelEndpoint(&otheplist.Endpoints[i]) {
-                       retval = true
-               }
-       }
-       return retval
+type ErrorInfo struct {
+       ErrorCause  string
+       ErrorSource string
+       TimeoutType string
 }
 
-func (eplist *RmrEndpointList) HasEndpoint(ep *RmrEndpoint) bool {
-       for i := range eplist.Endpoints {
-               if eplist.Endpoints[i].Equal(ep) {
-                       return true
-               }
-       }
-       return false
+func (e *ErrorInfo) SetInfo(errorCause string, errorSource string, timeoutType string) {
+       e.ErrorCause = errorCause
+       e.ErrorSource = errorSource
+       e.TimeoutType = timeoutType
 }
 
-func NewRmrEndpoint(src string) *RmrEndpoint {
-       ep := &RmrEndpoint{}
-       if ep.Set(src) == false {
-               return nil
-       }
-       return ep
+type XappRnibInterface interface {
+       XappRnibSubscribe(cb func(string, ...string), channel string) error
+       XappRnibGetListGnbIds() ([]*xapp.RNIBNbIdentity, xapp.RNIBIRNibError)
+       XappRnibStoreAndPublish(channel string, event string, pairs ...interface{}) error
+       XappRnibGetNodeb(inventoryName string) (*xapp.RNIBNodebInfo, xapp.RNIBIRNibError)
 }