"fmt"
"gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap"
rtmgrclient "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/rtmgr_client"
+ "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/xapptweaks"
"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
httptransport "github.com/go-openapi/runtime/client"
"github.com/go-openapi/strfmt"
"github.com/spf13/viper"
- "sync"
"time"
)
//
//-----------------------------------------------------------------------------
+func idstring(err error, entries ...fmt.Stringer) string {
+ var retval string = ""
+ var filler string = ""
+ for _, entry := range entries {
+ retval += filler + entry.String()
+ filler = " "
+ }
+ if err != nil {
+ retval += filler + "err(" + err.Error() + ")"
+ filler = " "
+
+ }
+ return retval
+}
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+
var e2tSubReqTimeout time.Duration = 5 * time.Second
var e2tSubDelReqTime time.Duration = 5 * time.Second
var e2tMaxSubReqTryCount uint64 = 2 // Initial try + retry
var e2tRecvMsgTimeout time.Duration = 5 * time.Second
type Control struct {
- e2ap *E2ap
- registry *Registry
- tracker *Tracker
- timerMap *TimerMap
- rmrSendMutex sync.Mutex
- msgCounter uint64
+ xapptweaks.XappWrapper
+ e2ap *E2ap
+ registry *Registry
+ tracker *Tracker
+ timerMap *TimerMap
}
type RMRMeid struct {
RanName string
}
-const (
- CREATE Action = 0
- UPDATE Action = 1
- NONE Action = 2
- DELETE Action = 3
-)
-
func init() {
xapp.Logger.Info("SUBMGR")
viper.AutomaticEnv()
timerMap := new(TimerMap)
timerMap.Init()
- return &Control{e2ap: new(E2ap),
- registry: registry,
- tracker: tracker,
- timerMap: timerMap,
- msgCounter: 0,
+ c := &Control{e2ap: new(E2ap),
+ registry: registry,
+ tracker: tracker,
+ timerMap: timerMap,
}
+ c.XappWrapper.Init("")
+ return c
}
-func (c *Control) Run() {
- xapp.Run(c)
+func (c *Control) ReadyCB(data interface{}) {
+ if c.Rmr == nil {
+ c.Rmr = xapp.Rmr
+ }
}
-func (c *Control) rmrSendRaw(desc string, params *RMRParams) (err error) {
-
- xapp.Logger.Info("%s: %s", desc, params.String())
- status := false
- i := 1
- for ; i <= 10 && status == false; i++ {
- c.rmrSendMutex.Lock()
- status = xapp.Rmr.Send(params.RMRParams, false)
- c.rmrSendMutex.Unlock()
- if status == false {
- xapp.Logger.Info("rmr.Send() failed. Retry count %d, %s", i, params.String())
- time.Sleep(500 * time.Millisecond)
- }
- }
- if status == false {
- err = fmt.Errorf("rmr.Send() failed. Retry count %d, %s", i, params.String())
- xapp.Logger.Error("%s: %s", desc, err.Error())
- xapp.Rmr.Free(params.Mbuf)
- }
- return
+func (c *Control) Run() {
+ xapp.SetReadyCB(c.ReadyCB, nil)
+ xapp.Run(c)
}
-func (c *Control) rmrSend(desc string, subs *Subscription, trans *Transaction) (err error) {
- params := &RMRParams{&xapp.RMRParams{}}
+func (c *Control) rmrSendToE2T(desc string, subs *Subscription, trans *TransactionSubs) (err error) {
+ params := xapptweaks.NewParams(nil)
params.Mtype = trans.GetMtype()
- params.SubId = int(subs.GetSubId())
+ params.SubId = int(subs.GetReqId().Seq)
params.Xid = ""
params.Meid = subs.GetMeid()
params.Src = ""
params.PayloadLen = len(trans.Payload.Buf)
params.Payload = trans.Payload.Buf
params.Mbuf = nil
-
- return c.rmrSendRaw(desc, params)
+ xapp.Logger.Info("MSG to E2T: %s %s %s", desc, trans.String(), params.String())
+ return c.RmrSend(params)
}
-func (c *Control) rmrReplyToSender(desc string, subs *Subscription, trans *Transaction) (err error) {
- params := &RMRParams{&xapp.RMRParams{}}
+func (c *Control) rmrSendToXapp(desc string, subs *Subscription, trans *TransactionXapp) (err error) {
+
+ params := xapptweaks.NewParams(nil)
params.Mtype = trans.GetMtype()
- params.SubId = int(subs.GetSubId())
+ params.SubId = int(subs.GetReqId().Seq)
params.Xid = trans.GetXid()
params.Meid = trans.GetMeid()
params.Src = ""
params.PayloadLen = len(trans.Payload.Buf)
params.Payload = trans.Payload.Buf
params.Mbuf = nil
-
- return c.rmrSendRaw(desc, params)
+ xapp.Logger.Info("MSG to XAPP: %s %s %s", desc, trans.String(), params.String())
+ return c.RmrSend(params)
}
func (c *Control) Consume(params *xapp.RMRParams) (err error) {
- xapp.Rmr.Free(params.Mbuf)
- params.Mbuf = nil
- msg := &RMRParams{params}
- c.msgCounter++
+ msg := xapptweaks.NewParams(params)
+ if c.Rmr == nil {
+ err = fmt.Errorf("Rmr object nil can handle %s", msg.String())
+ xapp.Logger.Error("%s", err.Error())
+ return
+ }
+ c.CntRecvMsg++
+
+ defer c.Rmr.Free(msg.Mbuf)
+
switch msg.Mtype {
case xapp.RICMessageTypes["RIC_SUB_REQ"]:
go c.handleXAPPSubscriptionRequest(msg)
default:
xapp.Logger.Info("Unknown Message Type '%d', discarding", msg.Mtype)
}
-
- return nil
-}
-func idstring(trans fmt.Stringer, subs fmt.Stringer, err error) string {
- var retval string = ""
- var filler string = ""
- if trans != nil {
- retval += filler + trans.String()
- filler = " "
- }
- if subs != nil {
- retval += filler + subs.String()
- filler = " "
- }
- if err != nil {
- retval += filler + "err(" + err.Error() + ")"
- filler = " "
-
- }
- return retval
+ return
}
//-------------------------------------------------------------------
// handle from XAPP Subscription Request
//------------------------------------------------------------------
-func (c *Control) handleXAPPSubscriptionRequest(params *RMRParams) {
- xapp.Logger.Info("XAPP-SubReq from xapp: %s", params.String())
+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(params, nil, err))
+ xapp.Logger.Error("XAPP-SubReq: %s", idstring(err, params))
return
}
- trans, err := c.tracker.TrackTransaction(NewRmrEndpoint(params.Src), params.Xid, params.Meid)
- if err != nil {
- xapp.Logger.Error("XAPP-SubReq: %s", idstring(params, nil, err))
+ trans := c.tracker.NewXappTransaction(NewRmrEndpoint(params.Src), params.Xid, &RequestId{subReqMsg.RequestId}, params.Meid)
+ if trans == nil {
+ xapp.Logger.Error("XAPP-SubReq: %s", idstring(fmt.Errorf("transaction not created"), params))
return
}
defer trans.Release()
- subs, err := c.registry.AssignToSubscription(trans, subReqMsg)
+ err = c.tracker.Track(trans)
if err != nil {
- xapp.Logger.Error("XAPP-SubReq: %s", idstring(trans, nil, err))
+ xapp.Logger.Error("XAPP-SubReq: %s", idstring(err, trans))
return
}
- if subs.IsTransactionReserved() {
- err := fmt.Errorf("Currently parallel or queued transactions are not allowed")
- xapp.Logger.Error("XAPP-SubReq: %s", idstring(trans, subs, err))
+ subs, err := c.registry.AssignToSubscription(trans, subReqMsg)
+ if err != nil {
+ xapp.Logger.Error("XAPP-SubReq: %s", idstring(err, trans))
return
}
case *e2ap.E2APSubscriptionResponse:
trans.Mtype, trans.Payload, err = c.e2ap.PackSubscriptionResponse(themsg)
if err == nil {
- c.rmrReplyToSender("XAPP-SubReq: SubResp to xapp", subs, trans)
+ c.rmrSendToXapp("", subs, trans)
return
}
case *e2ap.E2APSubscriptionFailure:
trans.Mtype, trans.Payload, err = c.e2ap.PackSubscriptionFailure(themsg)
if err == nil {
- c.rmrReplyToSender("XAPP-SubReq: SubFail to xapp", subs, trans)
+ c.rmrSendToXapp("", subs, trans)
}
- return
default:
break
}
}
- xapp.Logger.Info("XAPP-SubReq: failed %s", idstring(trans, subs, err))
+ xapp.Logger.Info("XAPP-SubReq: failed %s", idstring(err, trans, subs))
+ c.registry.RemoveFromSubscription(subs, trans, 5*time.Second)
}
//-------------------------------------------------------------------
// handle from XAPP Subscription Delete Request
//------------------------------------------------------------------
-func (c *Control) handleXAPPSubscriptionDeleteRequest(params *RMRParams) {
- xapp.Logger.Info("XAPP-SubDelReq from xapp: %s", params.String())
+func (c *Control) handleXAPPSubscriptionDeleteRequest(params *xapptweaks.RMRParams) {
+ xapp.Logger.Info("MSG from XAPP: %s", params.String())
subDelReqMsg, err := c.e2ap.UnpackSubscriptionDeleteRequest(params.Payload)
if err != nil {
- xapp.Logger.Error("XAPP-SubDelReq %s", idstring(params, nil, err))
+ xapp.Logger.Error("XAPP-SubDelReq %s", idstring(err, params))
return
}
- trans, err := c.tracker.TrackTransaction(NewRmrEndpoint(params.Src), params.Xid, params.Meid)
- if err != nil {
- xapp.Logger.Error("XAPP-SubDelReq %s", idstring(params, nil, err))
+ trans := c.tracker.NewXappTransaction(NewRmrEndpoint(params.Src), params.Xid, &RequestId{subDelReqMsg.RequestId}, params.Meid)
+ if trans == nil {
+ xapp.Logger.Error("XAPP-SubDelReq: %s", idstring(fmt.Errorf("transaction not created"), params))
return
}
defer trans.Release()
- subs, err := c.registry.GetSubscriptionFirstMatch([]uint16{uint16(subDelReqMsg.RequestId.Seq), uint16(params.SubId)})
+ err = c.tracker.Track(trans)
if err != nil {
- xapp.Logger.Error("XAPP-SubDelReq: %s", idstring(trans, nil, err))
+ xapp.Logger.Error("XAPP-SubReq: %s", idstring(err, trans))
return
}
- if subs.IsTransactionReserved() {
- err := fmt.Errorf("Currently parallel or queued transactions are not allowed")
- xapp.Logger.Error("XAPP-SubDelReq: %s", idstring(trans, subs, err))
+ subs, err := c.registry.GetSubscriptionFirstMatch([]uint32{subDelReqMsg.RequestId.Seq})
+ if err != nil {
+ xapp.Logger.Error("XAPP-SubDelReq: %s", idstring(err, trans))
return
}
go c.handleSubscriptionDelete(subs, trans)
trans.WaitEvent(0) //blocked wait as timeout is handled in subs side
+ xapp.Logger.Debug("XAPP-SubDelReq: Handling event %s ", idstring(nil, trans, subs))
+
// Whatever is received send ok delete response
subDelRespMsg := &e2ap.E2APSubscriptionDeleteResponse{}
- subDelRespMsg.RequestId.Id = subs.SubReqMsg.RequestId.Id
- subDelRespMsg.RequestId.Seq = uint32(subs.GetSubId())
+ subDelRespMsg.RequestId = subs.SubReqMsg.RequestId
subDelRespMsg.FunctionId = subs.SubReqMsg.FunctionId
trans.Mtype, trans.Payload, err = c.e2ap.PackSubscriptionDeleteResponse(subDelRespMsg)
if err == nil {
- c.rmrReplyToSender("XAPP-SubDelReq: SubDelResp to xapp", subs, trans)
+ c.rmrSendToXapp("", subs, trans)
}
+
+ c.registry.RemoveFromSubscription(subs, trans, 5*time.Second)
}
//-------------------------------------------------------------------
// SUBS CREATE Handling
//-------------------------------------------------------------------
-func (c *Control) handleSubscriptionCreate(subs *Subscription, parentTrans *Transaction) {
+func (c *Control) handleSubscriptionCreate(subs *Subscription, parentTrans *TransactionXapp) {
- trans := c.tracker.NewTransaction(subs.GetMeid())
+ trans := c.tracker.NewSubsTransaction(subs)
subs.WaitTransactionTurn(trans)
defer subs.ReleaseTransactionTurn(trans)
defer trans.Release()
- xapp.Logger.Debug("SUBS-SubReq: Handling %s parent %s", idstring(trans, subs, nil), parentTrans.String())
-
- if subs.SubRespMsg != nil {
- xapp.Logger.Debug("SUBS-SubReq: Handling (immediate response) %s parent %s", idstring(nil, subs, nil), parentTrans.String())
- parentTrans.SendEvent(subs.SubRespMsg, 0)
- return
- }
+ xapp.Logger.Debug("SUBS-SubReq: Handling %s ", idstring(nil, trans, subs, parentTrans))
- event := c.sendE2TSubscriptionRequest(subs, trans, parentTrans)
- switch themsg := event.(type) {
- case *e2ap.E2APSubscriptionResponse:
- subs.SubRespMsg = themsg
- parentTrans.SendEvent(event, 0)
- return
- case *e2ap.E2APSubscriptionFailure:
- //TODO: Possible delete and one retry for subs req
- parentTrans.SendEvent(event, 0)
- default:
- xapp.Logger.Info("SUBS-SubReq: internal delete due event(%s) %s", typeofSubsMessage(event), idstring(trans, subs, nil))
- c.sendE2TSubscriptionDeleteRequest(subs, trans, parentTrans)
- parentTrans.SendEvent(nil, 0)
+ subRfMsg, valid := subs.GetCachedResponse()
+ if subRfMsg == nil && valid == true {
+ event := c.sendE2TSubscriptionRequest(subs, trans, parentTrans)
+ switch event.(type) {
+ case *e2ap.E2APSubscriptionResponse:
+ subRfMsg, valid = subs.SetCachedResponse(event, true)
+ case *e2ap.E2APSubscriptionFailure:
+ subRfMsg, valid = subs.SetCachedResponse(event, false)
+ default:
+ xapp.Logger.Info("SUBS-SubReq: internal delete due event(%s) %s", typeofSubsMessage(event), idstring(nil, trans, subs, parentTrans))
+ subRfMsg, valid = subs.SetCachedResponse(nil, false)
+ c.sendE2TSubscriptionDeleteRequest(subs, trans, parentTrans)
+ }
+ xapp.Logger.Debug("SUBS-SubReq: Handling (e2t response %s) %s", typeofSubsMessage(subRfMsg), idstring(nil, trans, subs, parentTrans))
+ } else {
+ xapp.Logger.Debug("SUBS-SubReq: Handling (cached response %s) %s", typeofSubsMessage(subRfMsg), idstring(nil, trans, subs, parentTrans))
}
- go c.registry.RemoveFromSubscription(subs, parentTrans, 5*time.Second)
+ parentTrans.SendEvent(subRfMsg, 0)
}
//-------------------------------------------------------------------
// SUBS DELETE Handling
//-------------------------------------------------------------------
-func (c *Control) handleSubscriptionDelete(subs *Subscription, parentTrans *Transaction) {
- trans := c.tracker.NewTransaction(subs.GetMeid())
+func (c *Control) handleSubscriptionDelete(subs *Subscription, parentTrans *TransactionXapp) {
+
+ trans := c.tracker.NewSubsTransaction(subs)
subs.WaitTransactionTurn(trans)
defer subs.ReleaseTransactionTurn(trans)
defer trans.Release()
- xapp.Logger.Debug("SUBS-SubDelReq: Handling %s parent %s", idstring(trans, subs, nil), parentTrans.String())
+ xapp.Logger.Debug("SUBS-SubDelReq: Handling %s", idstring(nil, trans, subs, parentTrans))
- event := c.sendE2TSubscriptionDeleteRequest(subs, trans, parentTrans)
+ subs.mutex.Lock()
+ if subs.valid && subs.EpList.HasEndpoint(parentTrans.GetEndpoint()) && subs.EpList.Size() == 1 {
+ subs.valid = false
+ subs.mutex.Unlock()
+ c.sendE2TSubscriptionDeleteRequest(subs, trans, parentTrans)
+ } else {
+ subs.mutex.Unlock()
+ }
- parentTrans.SendEvent(event, 0)
- go c.registry.RemoveFromSubscription(subs, parentTrans, 5*time.Second)
+ subDelRespMsg := &e2ap.E2APSubscriptionDeleteResponse{}
+ subDelRespMsg.RequestId = subs.SubReqMsg.RequestId
+ subDelRespMsg.FunctionId = subs.SubReqMsg.FunctionId
+ parentTrans.SendEvent(subDelRespMsg, 0)
}
//-------------------------------------------------------------------
// send to E2T Subscription Request
//-------------------------------------------------------------------
-func (c *Control) sendE2TSubscriptionRequest(subs *Subscription, trans *Transaction, parentTrans *Transaction) interface{} {
+func (c *Control) sendE2TSubscriptionRequest(subs *Subscription, trans *TransactionSubs, parentTrans *TransactionXapp) interface{} {
var err error
var event interface{} = nil
var timedOut bool = false
subReqMsg := subs.SubReqMsg
- subReqMsg.RequestId.Id = 123
- subReqMsg.RequestId.Seq = uint32(subs.GetSubId())
+ subReqMsg.RequestId = subs.GetReqId().RequestId
trans.Mtype, trans.Payload, err = c.e2ap.PackSubscriptionRequest(subReqMsg)
if err != nil {
- xapp.Logger.Error("SUBS-SubReq: %s parent %s", idstring(trans, subs, err), parentTrans.String())
+ xapp.Logger.Error("SUBS-SubReq: %s", idstring(err, trans, subs, parentTrans))
return event
}
for retries := uint64(0); retries < e2tMaxSubReqTryCount; retries++ {
- desc := fmt.Sprintf("SUBS-SubReq: SubReq to E2T (retry %d)", retries)
- c.rmrSend(desc, subs, trans)
+ desc := fmt.Sprintf("(retry %d)", retries)
+ c.rmrSendToE2T(desc, subs, trans)
event, timedOut = trans.WaitEvent(e2tSubReqTimeout)
if timedOut {
continue
}
break
}
- xapp.Logger.Debug("SUBS-SubReq: Response handling event(%s) %s parent %s", typeofSubsMessage(event), idstring(trans, subs, nil), parentTrans.String())
+ xapp.Logger.Debug("SUBS-SubReq: Response handling event(%s) %s", typeofSubsMessage(event), idstring(nil, trans, subs, parentTrans))
return event
}
// send to E2T Subscription Delete Request
//-------------------------------------------------------------------
-func (c *Control) sendE2TSubscriptionDeleteRequest(subs *Subscription, trans *Transaction, parentTrans *Transaction) interface{} {
+func (c *Control) sendE2TSubscriptionDeleteRequest(subs *Subscription, trans *TransactionSubs, parentTrans *TransactionXapp) interface{} {
var err error
var event interface{}
var timedOut bool
subDelReqMsg := &e2ap.E2APSubscriptionDeleteRequest{}
- subDelReqMsg.RequestId.Id = 123
- subDelReqMsg.RequestId.Seq = uint32(subs.GetSubId())
- subDelReqMsg.FunctionId = 0
+ subDelReqMsg.RequestId = subs.GetReqId().RequestId
+ subDelReqMsg.FunctionId = subs.SubReqMsg.FunctionId
trans.Mtype, trans.Payload, err = c.e2ap.PackSubscriptionDeleteRequest(subDelReqMsg)
if err != nil {
- xapp.Logger.Error("SUBS-SubDelReq: %s parent %s", idstring(trans, subs, err), parentTrans.String())
+ xapp.Logger.Error("SUBS-SubDelReq: %s", idstring(err, trans, subs, parentTrans))
return event
}
for retries := uint64(0); retries < e2tMaxSubDelReqTryCount; retries++ {
- desc := fmt.Sprintf("SUBS-SubDelReq: SubDelReq to E2T (retry %d)", retries)
- c.rmrSend(desc, subs, trans)
+ desc := fmt.Sprintf("(retry %d)", retries)
+ c.rmrSendToE2T(desc, subs, trans)
event, timedOut = trans.WaitEvent(e2tSubDelReqTime)
if timedOut {
continue
}
break
}
- xapp.Logger.Debug("SUBS-SubDelReq: Response handling event(%s) %s parent %s", typeofSubsMessage(event), idstring(trans, subs, nil), parentTrans.String())
+ xapp.Logger.Debug("SUBS-SubDelReq: Response handling event(%s) %s", typeofSubsMessage(event), idstring(nil, trans, subs, parentTrans))
return event
}
//-------------------------------------------------------------------
// handle from E2T Subscription Reponse
//-------------------------------------------------------------------
-func (c *Control) handleE2TSubscriptionResponse(params *RMRParams) {
- xapp.Logger.Info("MSG-SubResp from E2T: %s", params.String())
+func (c *Control) handleE2TSubscriptionResponse(params *xapptweaks.RMRParams) {
+ xapp.Logger.Info("MSG from E2T: %s", params.String())
subRespMsg, err := c.e2ap.UnpackSubscriptionResponse(params.Payload)
if err != nil {
- xapp.Logger.Error("MSG-SubResp %s", idstring(params, nil, err))
+ xapp.Logger.Error("MSG-SubResp %s", idstring(err, params))
return
}
- subs, err := c.registry.GetSubscriptionFirstMatch([]uint16{uint16(subRespMsg.RequestId.Seq), uint16(params.SubId)})
+ subs, err := c.registry.GetSubscriptionFirstMatch([]uint32{subRespMsg.RequestId.Seq})
if err != nil {
- xapp.Logger.Error("MSG-SubResp: %s", idstring(params, nil, err))
+ xapp.Logger.Error("MSG-SubResp: %s", idstring(err, params))
return
}
trans := subs.GetTransaction()
if trans == nil {
err = fmt.Errorf("Ongoing transaction not found")
- xapp.Logger.Error("MSG-SubResp: %s", idstring(params, subs, err))
+ xapp.Logger.Error("MSG-SubResp: %s", idstring(err, params, subs))
return
}
sendOk, timedOut := trans.SendEvent(subRespMsg, e2tRecvMsgTimeout)
if sendOk == false {
err = fmt.Errorf("Passing event to transaction failed: sendOk(%t) timedOut(%t)", sendOk, timedOut)
- xapp.Logger.Error("MSG-SubResp: %s", idstring(trans, subs, err))
+ xapp.Logger.Error("MSG-SubResp: %s", idstring(err, trans, subs))
}
return
}
//-------------------------------------------------------------------
// handle from E2T Subscription Failure
//-------------------------------------------------------------------
-func (c *Control) handleE2TSubscriptionFailure(params *RMRParams) {
- xapp.Logger.Info("MSG-SubFail from E2T: %s", params.String())
+func (c *Control) handleE2TSubscriptionFailure(params *xapptweaks.RMRParams) {
+ xapp.Logger.Info("MSG from E2T: %s", params.String())
subFailMsg, err := c.e2ap.UnpackSubscriptionFailure(params.Payload)
if err != nil {
- xapp.Logger.Error("MSG-SubFail %s", idstring(params, nil, err))
+ xapp.Logger.Error("MSG-SubFail %s", idstring(err, params))
return
}
- subs, err := c.registry.GetSubscriptionFirstMatch([]uint16{uint16(subFailMsg.RequestId.Seq), uint16(params.SubId)})
+ subs, err := c.registry.GetSubscriptionFirstMatch([]uint32{subFailMsg.RequestId.Seq})
if err != nil {
- xapp.Logger.Error("MSG-SubFail: %s", idstring(params, nil, err))
+ xapp.Logger.Error("MSG-SubFail: %s", idstring(err, params))
return
}
trans := subs.GetTransaction()
if trans == nil {
err = fmt.Errorf("Ongoing transaction not found")
- xapp.Logger.Error("MSG-SubFail: %s", idstring(params, subs, err))
+ xapp.Logger.Error("MSG-SubFail: %s", idstring(err, params, subs))
return
}
sendOk, timedOut := trans.SendEvent(subFailMsg, e2tRecvMsgTimeout)
if sendOk == false {
err = fmt.Errorf("Passing event to transaction failed: sendOk(%t) timedOut(%t)", sendOk, timedOut)
- xapp.Logger.Error("MSG-SubFail: %s", idstring(trans, subs, err))
+ xapp.Logger.Error("MSG-SubFail: %s", idstring(err, trans, subs))
}
return
}
//-------------------------------------------------------------------
// handle from E2T Subscription Delete Response
//-------------------------------------------------------------------
-func (c *Control) handleE2TSubscriptionDeleteResponse(params *RMRParams) (err error) {
- xapp.Logger.Info("SUBS-SubDelResp from E2T:%s", params.String())
+func (c *Control) handleE2TSubscriptionDeleteResponse(params *xapptweaks.RMRParams) (err error) {
+ xapp.Logger.Info("MSG from E2T: %s", params.String())
subDelRespMsg, err := c.e2ap.UnpackSubscriptionDeleteResponse(params.Payload)
if err != nil {
- xapp.Logger.Error("SUBS-SubDelResp: %s", idstring(params, nil, err))
+ xapp.Logger.Error("MSG-SubDelResp: %s", idstring(err, params))
return
}
- subs, err := c.registry.GetSubscriptionFirstMatch([]uint16{uint16(subDelRespMsg.RequestId.Seq), uint16(params.SubId)})
+ subs, err := c.registry.GetSubscriptionFirstMatch([]uint32{subDelRespMsg.RequestId.Seq})
if err != nil {
- xapp.Logger.Error("SUBS-SubDelResp: %s", idstring(params, nil, err))
+ xapp.Logger.Error("MSG-SubDelResp: %s", idstring(err, params))
return
}
trans := subs.GetTransaction()
if trans == nil {
err = fmt.Errorf("Ongoing transaction not found")
- xapp.Logger.Error("SUBS-SubDelResp: %s", idstring(params, subs, err))
+ xapp.Logger.Error("MSG-SubDelResp: %s", idstring(err, params, subs))
return
}
sendOk, timedOut := trans.SendEvent(subDelRespMsg, e2tRecvMsgTimeout)
if sendOk == false {
err = fmt.Errorf("Passing event to transaction failed: sendOk(%t) timedOut(%t)", sendOk, timedOut)
- xapp.Logger.Error("MSG-SubDelResp: %s", idstring(trans, subs, err))
+ xapp.Logger.Error("MSG-SubDelResp: %s", idstring(err, trans, subs))
}
return
}
//-------------------------------------------------------------------
// handle from E2T Subscription Delete Failure
//-------------------------------------------------------------------
-func (c *Control) handleE2TSubscriptionDeleteFailure(params *RMRParams) {
- xapp.Logger.Info("MSG-SubDelFail from E2T:%s", params.String())
+func (c *Control) handleE2TSubscriptionDeleteFailure(params *xapptweaks.RMRParams) {
+ xapp.Logger.Info("MSG from E2T: %s", params.String())
subDelFailMsg, err := c.e2ap.UnpackSubscriptionDeleteFailure(params.Payload)
if err != nil {
- xapp.Logger.Error("MSG-SubDelFail: %s", idstring(params, nil, err))
+ xapp.Logger.Error("MSG-SubDelFail: %s", idstring(err, params))
return
}
- subs, err := c.registry.GetSubscriptionFirstMatch([]uint16{uint16(subDelFailMsg.RequestId.Seq), uint16(params.SubId)})
+ subs, err := c.registry.GetSubscriptionFirstMatch([]uint32{subDelFailMsg.RequestId.Seq})
if err != nil {
- xapp.Logger.Error("MSG-SubDelFail: %s", idstring(params, nil, err))
+ xapp.Logger.Error("MSG-SubDelFail: %s", idstring(err, params))
return
}
trans := subs.GetTransaction()
if trans == nil {
err = fmt.Errorf("Ongoing transaction not found")
- xapp.Logger.Error("MSG-SubDelFail: %s", idstring(params, subs, err))
+ xapp.Logger.Error("MSG-SubDelFail: %s", idstring(err, params, subs))
return
}
sendOk, timedOut := trans.SendEvent(subDelFailMsg, e2tRecvMsgTimeout)
if sendOk == false {
err = fmt.Errorf("Passing event to transaction failed: sendOk(%t) timedOut(%t)", sendOk, timedOut)
- xapp.Logger.Error("MSG-SubDelFail: %s", idstring(trans, subs, err))
+ xapp.Logger.Error("MSG-SubDelFail: %s", idstring(err, trans, subs))
}
return
}