}
// Reserves and returns the next free sequence number
-func (r *Registry) ReserveSubscription(endPoint RmrEndpoint, meid *xapp.RMRMeid) (*Subscription, error) {
+func (r *Registry) ReserveSubscription(endPoint *RmrEndpoint, meid *xapp.RMRMeid) (*Subscription, error) {
// Check is current SequenceNumber valid
// Allocate next SequenceNumber value and retry N times
r.mutex.Lock()
}
if _, ok := r.register[sequenceNumber]; ok == false {
subs := &Subscription{
+ registry: r,
Seq: sequenceNumber,
Active: false,
- RmrEndpoint: endPoint,
+ RmrEndpoint: *endPoint,
Meid: meid,
Trans: nil,
}
// Update routing
r.mutex.Unlock()
- err := subs.UpdateRoute(CREATE, r.rtmgrClient)
+ err := subs.UpdateRoute(CREATE)
r.mutex.Lock()
if err != nil {
if _, ok := r.register[sequenceNumber]; ok {
r.mutex.Lock()
defer r.mutex.Unlock()
if _, ok := r.register[sn]; ok {
- subs := 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)
- }
return true
}
return false