X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fcontrol%2Fcontrol.go;h=5dd8f05865f4470227183265a2455cd7955074a5;hb=0388dd945789dae802aaa93c5062e3ae4c45ddf1;hp=5a38656ff77cac99ea7f8e175c0d5f89844a2b58;hpb=0d064ecdb5239a875857b5910f7f6e83f827d7a6;p=ric-plt%2Fsubmgr.git diff --git a/pkg/control/control.go b/pkg/control/control.go index 5a38656..5dd8f05 100755 --- a/pkg/control/control.go +++ b/pkg/control/control.go @@ -79,6 +79,7 @@ func init() { } func NewControl() *Control { + registry := new(Registry) registry.Initialize(seedSN) @@ -94,9 +95,14 @@ func NewControl() *Control { deleteHandle := rtmgrhandle.NewDeleteXappSubscriptionHandleParamsWithTimeout(10 * time.Second) rtmgrClient := RtmgrClient{client, handle, deleteHandle} + rtmgrClientPtr := &rtmgrClient + + //TODO: to make this better. Now it is just a hack. + registry.rtmgrClient = rtmgrClientPtr + return &Control{e2ap: new(E2ap), registry: registry, - rtmgrClient: &rtmgrClient, + rtmgrClient: rtmgrClientPtr, tracker: tracker, timerMap: timerMap, msgCounter: 0, @@ -163,10 +169,9 @@ func (c *Control) handleSubscriptionRequest(params *xapp.RMRParams) { return } - /* Reserve a sequence number and set it in the payload */ - subs := c.registry.ReserveSubscription(RmrEndpoint{*srcAddr, *srcPort}, params.Meid) - if subs == nil { - xapp.Logger.Error("SubReq: Failed to reserve sequence number. Dropping this msg. SubId: %v, Xid: %s", params.SubId, params.Xid) + subs, err := c.registry.ReserveSubscription(RmrEndpoint{*srcAddr, *srcPort}, params.Meid) + if err != nil { + xapp.Logger.Error("SubReq: %s, Dropping this msg.", err.Error()) return } @@ -174,7 +179,7 @@ func (c *Control) handleSubscriptionRequest(params *xapp.RMRParams) { err = c.e2ap.SetSubscriptionRequestSequenceNumber(params.Payload, subs.Seq) if err != nil { xapp.Logger.Error("SubReq: Unable to get Sequence Number from Payload. Dropping this msg. Err: %v, SubId: %v, Xid: %s, Payload %X", err, params.SubId, params.Xid, params.Payload) - c.registry.releaseSequenceNumber(subs.Seq) + c.registry.DelSubscription(subs.Seq) return } @@ -184,18 +189,7 @@ func (c *Control) handleSubscriptionRequest(params *xapp.RMRParams) { _, err = c.tracker.TrackTransaction(subs, RmrEndpoint{*srcAddr, *srcPort}, params, responseReceived, forwardRespToXapp) if err != nil { xapp.Logger.Error("SubReq: %s, Dropping this msg.", err.Error()) - c.registry.releaseSequenceNumber(subs.Seq) - return - } - - // Update routing manager about the new subscription - subRouteAction := subs.SubRouteInfo(CREATE) - xapp.Logger.Info("SubReq: Starting routing manager update. SubId: %v, Xid: %s", params.SubId, params.Xid) - - err = c.rtmgrClient.SubscriptionRequestUpdate(subRouteAction) - if err != nil { - xapp.Logger.Error("SubReq: Failed to update routing manager. Dropping this msg. Err: %v, SubId: %v, Xid: %s", err, params.SubId, params.Xid) - c.registry.releaseSequenceNumber(subs.Seq) + c.registry.DelSubscription(subs.Seq) return } @@ -295,16 +289,9 @@ func (c *Control) handleSubscriptionFailure(params *xapp.RMRParams) { time.Sleep(3 * time.Second) - xapp.Logger.Info("SubFail: Starting routing manager update. SubId: %v, Xid: %s", params.SubId, params.Xid) - subRouteAction := subs.SubRouteInfo(DELETE) - err = c.rtmgrClient.SubscriptionRequestUpdate(subRouteAction) - if err != nil { - xapp.Logger.Error("SubFail: Failed to update routing manager. Err: %v, SubId: %v, Xid: %s", err, params.SubId, params.Xid) - } - xapp.Logger.Info("SubFail: Deleting transaction record. SubId: %v, Xid: %s", params.SubId, params.Xid) transaction.Release() - if !c.registry.releaseSequenceNumber(payloadSeqNum) { + if !c.registry.DelSubscription(payloadSeqNum) { xapp.Logger.Error("SubFail: Failed to release sequency number. SubId: %v, Xid: %s", params.SubId, params.Xid) } return @@ -500,16 +487,8 @@ func (c *Control) handleSubscriptionDeleteResponse(params *xapp.RMRParams) (err time.Sleep(3 * time.Second) } - xapp.Logger.Info("SubDelResp: Starting routing manager update. SubId: %v, Xid: %s", params.SubId, params.Xid) - subRouteAction := subs.SubRouteInfo(DELETE) - err = c.rtmgrClient.SubscriptionRequestUpdate(subRouteAction) - if err != nil { - xapp.Logger.Error("SubDelResp: Failed to update routing manager. Err: %v, SubId: %v, Xid: %s", err, params.SubId, params.Xid) - return - } - xapp.Logger.Info("SubDelResp: Deleting transaction record. SubId: %v, Xid: %s", params.SubId, params.Xid) - if !c.registry.releaseSequenceNumber(payloadSeqNum) { + if !c.registry.DelSubscription(payloadSeqNum) { xapp.Logger.Error("SubDelResp: Failed to release sequency number. SubId: %v, Xid: %s", params.SubId, params.Xid) return } @@ -574,17 +553,9 @@ func (c *Control) handleSubscriptionDeleteFailure(params *xapp.RMRParams) { time.Sleep(3 * time.Second) } - xapp.Logger.Info("SubDelFail: Starting routing manager update. SubId: %v, Xid: %s", params.SubId, params.Xid) - subRouteAction := subs.SubRouteInfo(DELETE) - err = c.rtmgrClient.SubscriptionRequestUpdate(subRouteAction) - if err != nil { - xapp.Logger.Error("SubDelFail: Failed to update routing manager. Err: %v, SubId: %v, Xid: %s", err, params.SubId, params.Xid) - return - } - xapp.Logger.Info("SubDelFail: Deleting transaction record. SubId: %v, Xid: %s", params.SubId, params.Xid) transaction.Release() - if !c.registry.releaseSequenceNumber(payloadSeqNum) { + if !c.registry.DelSubscription(payloadSeqNum) { xapp.Logger.Error("SubDelFail: Failed to release sequency number. Err: %v, SubId: %v, Xid: %s", err, params.SubId, params.Xid) return } @@ -656,17 +627,9 @@ func (c *Control) handleSubscriptionDeleteRequestTimer(strId string, nbrId int, time.Sleep(3 * time.Second) } - xapp.Logger.Info("handleSubDelTimer: Starting routing manager update. SubId: %v, Xid: %s", subId, params.Xid) - subRouteAction := subs.SubRouteInfo(DELETE) - err := c.rtmgrClient.SubscriptionRequestUpdate(subRouteAction) - if err != nil { - xapp.Logger.Error("handleSubDelTimer: Failed to update routing manager. Err: %v, SubId: %v, Xid: %s", err, subId, params.Xid) - return - } - xapp.Logger.Info("handleSubDelTimer: Deleting transaction record. SubId: %v, Xid: %s", subId, params.Xid) transaction.Release() - if !c.registry.releaseSequenceNumber(subId) { + if !c.registry.DelSubscription(subId) { xapp.Logger.Error("handleSubDelTimer: Failed to release sequency number. SubId: %v, Xid: %s", subId, params.Xid) } return