Code Review
/
ric-plt
/
submgr.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
RICPLT-3014 Subs multiple rmr endpoints
[ric-plt/submgr.git]
/
pkg
/
control
/
registry.go
diff --git
a/pkg/control/registry.go
b/pkg/control/registry.go
index
0970a3a
..
0fadabb
100644
(file)
--- a/
pkg/control/registry.go
+++ b/
pkg/control/registry.go
@@
-31,61
+31,46
@@
import (
type Registry struct {
mutex sync.Mutex
register map[uint16]*Subscription
type Registry struct {
mutex sync.Mutex
register map[uint16]*Subscription
-
counter
uint16
+
subIds []
uint16
rtmgrClient *RtmgrClient
}
// This method should run as a constructor
rtmgrClient *RtmgrClient
}
// This method should run as a constructor
-func (r *Registry) Initialize(
seedsn uint16
) {
+func (r *Registry) Initialize() {
r.register = make(map[uint16]*Subscription)
r.register = make(map[uint16]*Subscription)
- r.counter = seedsn
+ var i uint16
+ for i = 0; i < 65535; i++ {
+ r.subIds = append(r.subIds, i+1)
+ }
}
// Reserves and returns the next free sequence number
}
// Reserves and returns the next free sequence number
-func (r *Registry) ReserveSubscription(endPoint *RmrEndpoint, meid *xapp.RMRMeid) (*Subscription, error) {
- // Check is current SequenceNumber valid
- // Allocate next SequenceNumber value and retry N times
+func (r *Registry) ReserveSubscription(meid *xapp.RMRMeid) (*Subscription, error) {
r.mutex.Lock()
defer r.mutex.Unlock()
r.mutex.Lock()
defer r.mutex.Unlock()
- var subs *Subscription = nil
- var retrytimes uint16 = 1000
- for ; subs == nil && retrytimes > 0; retrytimes-- {
- sequenceNumber := r.counter
- if r.counter == 65535 {
- r.counter = 0
- } else {
- r.counter++
- }
+ if len(r.subIds) > 0 {
+ sequenceNumber := r.subIds[0]
+ r.subIds = r.subIds[1:]
if _, ok := r.register[sequenceNumber]; ok == false {
subs := &Subscription{
if _, ok := r.register[sequenceNumber]; ok == false {
subs := &Subscription{
-
Seq: sequenceNumbe
r,
-
Active: false
,
-
RmrEndpoint: *endPoint
,
- Meid:
meid,
- Trans:
nil,
+
registry:
r,
+
Seq: sequenceNumber
,
+
Active: false
,
+ Meid: meid,
+ Trans: nil,
}
r.register[sequenceNumber] = subs
}
r.register[sequenceNumber] = subs
-
- // Update routing
- r.mutex.Unlock()
- err := subs.UpdateRoute(CREATE, r.rtmgrClient)
- r.mutex.Lock()
- if err != nil {
- if _, ok := r.register[sequenceNumber]; ok {
- delete(r.register, sequenceNumber)
- }
- return nil, err
- }
+ xapp.Logger.Info("Registry: Create %s", subs.String())
+ xapp.Logger.Debug("Registry: substable=%v", r.register)
return subs, nil
}
}
return subs, nil
}
}
- return nil, fmt.Errorf("Registry: Failed to reserves sub
cription. RmrEndpoint: %s, Meid: %s", endPoint, meid.RanName
)
+ return nil, fmt.Errorf("Registry: Failed to reserves sub
scription"
)
}
func (r *Registry) GetSubscription(sn uint16) *Subscription {
r.mutex.Lock()
defer r.mutex.Unlock()
}
func (r *Registry) GetSubscription(sn uint16) *Subscription {
r.mutex.Lock()
defer r.mutex.Unlock()
- xapp.Logger.Debug("Registry map: %v", r.register)
if _, ok := r.register[sn]; ok {
return r.register[sn]
}
if _, ok := r.register[sn]; ok {
return r.register[sn]
}
@@
-97,15
+82,10
@@
func (r *Registry) DelSubscription(sn uint16) bool {
defer r.mutex.Unlock()
if _, ok := r.register[sn]; ok {
subs := r.register[sn]
defer r.mutex.Unlock()
if _, ok := r.register[sn]; ok {
subs := r.register[sn]
+ xapp.Logger.Info("Registry: Delete %s", subs.String())
+ r.subIds = append(r.subIds, sn)
delete(r.register, sn)
delete(r.register, sn)
-
- // Update routing
- r.mutex.Unlock()
- err := subs.UpdateRoute(DELETE, r.rtmgrClient)
- r.mutex.Lock()
- if err != nil {
- xapp.Logger.Error("Registry: Failed to del route. SubId: %d, RmrEndpoint: %s", subs.Seq, subs.RmrEndpoint)
- }
+ xapp.Logger.Debug("Registry: substable=%v", r.register)
return true
}
return false
return true
}
return false