-func (c *Control) controlLoop() {
- for {
- msg := <-c.rcChan
- switch msg.Mtype {
- case xapp.RICMessageTypes["RIC_SUB_REQ"]:
- c.handleSubscriptionRequest(msg)
- case xapp.RICMessageTypes["RIC_SUB_RESP"]:
- c.handleSubscriptionResponse(msg)
- case xapp.RICMessageTypes["RIC_SUB_DEL_REQ"]:
- c.handleSubscriptionDeleteRequest(msg)
- case xapp.RICMessageTypes["RIC_SUB_DEL_RESP"]:
- c.handleSubscriptionDeleteResponse(msg)
+//-------------------------------------------------------------------
+// handle from XAPP Subscription Request
+//------------------------------------------------------------------
+func (c *Control) handleXAPPSubscriptionRequest(params *xapptweaks.RMRParams) {
+ xapp.Logger.Info("MSG from XAPP: %s", params.String())
+
+ subReqMsg, err := c.e2ap.UnpackSubscriptionRequest(params.Payload)
+ if err != nil {
+ xapp.Logger.Error("XAPP-SubReq: %s", idstring(err, params))
+ return
+ }
+
+ trans := c.tracker.NewXappTransaction(NewRmrEndpoint(params.Src), params.Xid, subReqMsg.RequestId.Seq, params.Meid)
+ if trans == nil {
+ xapp.Logger.Error("XAPP-SubReq: %s", idstring(fmt.Errorf("transaction not created"), params))
+ return
+ }
+ defer trans.Release()
+
+ err = c.tracker.Track(trans)
+ if err != nil {
+ xapp.Logger.Error("XAPP-SubReq: %s", idstring(err, trans))
+ return
+ }
+
+ subs, err := c.registry.AssignToSubscription(trans, subReqMsg)
+ if err != nil {
+ xapp.Logger.Error("XAPP-SubReq: %s", idstring(err, trans))
+ return
+ }
+
+ //
+ // Wake subs request
+ //
+ go c.handleSubscriptionCreate(subs, trans)
+ event, _ := trans.WaitEvent(0) //blocked wait as timeout is handled in subs side
+
+ err = nil
+ if event != nil {
+ switch themsg := event.(type) {
+ case *e2ap.E2APSubscriptionResponse:
+ trans.Mtype, trans.Payload, err = c.e2ap.PackSubscriptionResponse(themsg)
+ if err == nil {
+ trans.Release()
+ c.rmrSendToXapp("", subs, trans)
+ return
+ }
+ case *e2ap.E2APSubscriptionFailure:
+ trans.Mtype, trans.Payload, err = c.e2ap.PackSubscriptionFailure(themsg)
+ if err == nil {
+ c.rmrSendToXapp("", subs, trans)
+ }