RanListManager
- An optimization suggestion (APPROVED) - instead managing a list of
[]*NbIdentity,
manage a map of[string]*NbIdentity
, where key is inventoryName and value is thenbIdentity
.
Code Block | ||
---|---|---|
| ||
type RanListManager struct { rnibDataService services.RNibDataService mux sync.Mutex nbIdentityListnbIdentityMap map[string]*NbIdentity } type IRanListManager interface { InitNbIdentityListInitNbIdentityMap() error AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error UpdateNbIdentityUpdateNbIdentityConnectionStatus(nodeType entities.Node_Type, ranName string, nbIdentityconnectionStatus *entities.NbIdentityConnectionStatus) error RemoveNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentityranName string) error GetNbIdentityList() []*entities.NbIdentity } |
InitNbIdentityList
Info |
---|
|
...
|
AddNbIdentity
Info |
---|
SaveNodeb Calls will be followed by a ranListManager.AddNbIdentity(nodeType, nbIdentity) call. AFFECTED FLOWS
|
Add Enb REST API
E2 Setup Request coming from NW
UpdateNbIdentityConnectionStatus
Info |
---|
|
...
- AddEnbRequestHandler
- E2SetupRequestNotificationHandler
|
RanStateChangeManager
RemoveNbIdentity
Info |
---|
UpdateNbIdentity
...
|
...
|
...
|
...
AFFECTED FLOWS
|
Delete ENB REST API
GetNbIdentityList
- Returns the in-memory nbIdentity list (iterate map values and append to a []*NbIdentity slice)
- Affected flows: Get Nodeb Ids REST API & Red Button
...
SaveNodeb(nbIdentity *entities.NbIdentity, nodebInfo *entities.NodebInfo) error
- Change signature to:
SaveNodeb(nbIdentity *entities.NbIdentity, nodebInfo *entities.NodebInfo) error
- Modify implementation:
- Remove UNKNOWN nodeType handling (reason: setup is now deterministic)
- Remove save nbIdentity code - it would be called sequentially externally
- Change signature to:
RemoveEnb(nodebInfo *entities.NodebInfo) error
- Modify implementation:
- Delete remove nbIdentity code - it would be called sequentially externally
- Modify implementation:
...
Code Block |
---|
AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error UpdateNbIdentityUpdateNbIdentities(nodeType entities.Node_Type, nbIdentity oldNbIdentities []*entities.NbIdentity, newNbIdentities []*entities.NbIdentity) error RemoveNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error |
...
GetListNodebIds() ([]*entities.NbIdentity, error)
- Remove UNKNOWN nodeType handling (reason: setup is now deterministic)
Optimization suggestions
- Instead of managing a SET in REDIS DB, manage a HASH (read more: https://redis.io/topics/data-types | https://redis.io/topics/memory-optimization)