RICPLT-2982 SubDelReq go asn into use 18/2218/1
authorJuha Hyttinen <juha.hyttinen@nokia.com>
Tue, 14 Jan 2020 12:32:17 +0000 (14:32 +0200)
committerJuha Hyttinen <juha.hyttinen@nokia.com>
Tue, 14 Jan 2020 12:32:28 +0000 (14:32 +0200)
Change-Id: I1346388fb879da216f744aa9214b72d243e07b3b
Signed-off-by: Juha Hyttinen <juha.hyttinen@nokia.com>
pkg/control/control.go
pkg/control/e2ap.go

index cfe3dfb..6fc7d33 100755 (executable)
@@ -447,23 +447,27 @@ func (c *Control) handleSubscriptionDeleteRequest(params *RMRParams) {
                return
        }
 
-       payloadSeqNum, err := c.e2ap.GetSubscriptionDeleteRequestSequenceNumber(params.Payload)
-       if err == nil {
-               subs = c.registry.GetSubscription(payloadSeqNum)
+       //
+       //
+       //
+       trans.SubDelReqMsg, err = c.e2ap.UnpackSubscriptionDeleteRequest(params.Payload)
+       if err != nil {
+               xapp.Logger.Error("SubDelReq: %s Dropping this msg. %s", err.Error(), trans)
+               trans.Release()
+               return
        }
+
+       subs = c.registry.GetSubscription(uint16(trans.SubDelReqMsg.RequestId.Seq))
        if subs == nil && params.SubId > 0 {
                subs = c.registry.GetSubscription(uint16(params.SubId))
        }
 
        if subs == nil {
-               xapp.Logger.Error("SubDelReq: Not valid subscription found payloadSeqNum: %d. Dropping this msg. %s", payloadSeqNum, trans)
+               xapp.Logger.Error("SubDelReq: Not valid subscription found payloadSeqNum: %d, SubId: %d. Dropping this msg. %s", trans.SubDelReqMsg.RequestId.Seq, params.SubId, trans)
                trans.Release()
                return
        }
-       xapp.Logger.Info("SubDelReq: subscription found payloadSeqNum: %d. %s", payloadSeqNum, trans)
-
-       trans.PayloadLen = params.PayloadLen
-       trans.Payload = params.Payload
+       xapp.Logger.Info("SubDelReq: subscription found payloadSeqNum: %d, SubId: %d. %s", trans.SubDelReqMsg.RequestId.Seq, params.SubId, trans)
 
        err = subs.SetTransaction(trans)
        if err != nil {
@@ -472,6 +476,25 @@ func (c *Control) handleSubscriptionDeleteRequest(params *RMRParams) {
                return
        }
 
+       //
+       // TODO: subscription delete is in fact owned by subscription and not transaction.
+       //       Transaction is toward xapp while Subscription is toward ran.
+       //       In merge several xapps may wake transactions, while only one subscription
+       //       toward ran occurs -> subscription owns subscription creation toward ran
+       //
+       //       This is intermediate solution while improving message handling
+       //
+       packedData, err := c.e2ap.PackSubscriptionDeleteRequest(trans.SubDelReqMsg)
+       if err != nil {
+               xapp.Logger.Error("SubDelReq: %s for trans %s", err.Error(), trans)
+               trans.Release()
+               return
+       }
+
+       //Optimize and store packed message to be sent (for retransmission). Again owned by subscription?
+       trans.Payload = packedData.Buf
+       trans.PayloadLen = len(packedData.Buf)
+
        subs.UnConfirmed()
 
        c.rmrSend("SubDelReq to E2T", subs, trans, trans.Payload, trans.PayloadLen)
index 5cabe6e..fe71f26 100644 (file)
@@ -39,7 +39,7 @@ var packerif e2ap.E2APPackerIf = e2ap_wrapper.NewAsn1E2Packer()
 type E2ap struct {
 }
 
-/* RICsubscriptionRequest */
+/* RICsubscriptionResponse */
 
 // Used by submgr, xapp test stub
 func (c *E2ap) GetSubscriptionResponseSequenceNumber(payload []byte) (subId uint16, err error) {
@@ -62,29 +62,6 @@ func (c *E2ap) SetSubscriptionResponseSequenceNumber(payload []byte, newSubscrip
        return
 }
 
-/* RICsubscriptionDeleteRequest */
-
-// Used by submgr, e2t test stub
-func (c *E2ap) GetSubscriptionDeleteRequestSequenceNumber(payload []byte) (subId uint16, err error) {
-       cptr := unsafe.Pointer(&payload[0])
-       cret := C.e2ap_get_ric_subscription_delete_request_sequence_number(cptr, C.size_t(len(payload)))
-       if cret < 0 {
-               return 0, fmt.Errorf("e2ap wrapper is unable to get Subscirption Delete Request Sequence Number due to wrong or invalid payload. Erroxappde: %v", cret)
-       }
-       subId = uint16(cret)
-       return
-}
-
-// Used by xapp test stub
-func (c *E2ap) SetSubscriptionDeleteRequestSequenceNumber(payload []byte, newSubscriptionid uint16) (err error) {
-       cptr := unsafe.Pointer(&payload[0])
-       size := C.e2ap_set_ric_subscription_delete_request_sequence_number(cptr, C.size_t(len(payload)), C.long(newSubscriptionid))
-       if size < 0 {
-               return fmt.Errorf("e2ap wrapper is unable to set Subscription Delete Request Sequence Number due to wrong or invalid payload. Erroxappde: %v", size)
-       }
-       return
-}
-
 /* RICsubscriptionDeleteResponse */
 
 // Used by submgr, e2t test stub