From 47942b4fd845472cd4f669bdcc5320be71f1570c Mon Sep 17 00:00:00 2001 From: Juha Hyttinen Date: Thu, 27 Feb 2020 10:41:43 +0200 Subject: [PATCH] Transaction needs only subs id. Change-Id: Iad421b0e03081d52ee96908454e9976cf5229538 Signed-off-by: Juha Hyttinen --- pkg/control/control.go | 13 +++++-------- pkg/control/registry.go | 2 +- pkg/control/tracker.go | 10 ++-------- pkg/control/transaction.go | 22 +++++++++++----------- 4 files changed, 19 insertions(+), 28 deletions(-) diff --git a/pkg/control/control.go b/pkg/control/control.go index ff7b19d..2d7d535 100755 --- a/pkg/control/control.go +++ b/pkg/control/control.go @@ -188,7 +188,7 @@ func (c *Control) handleXAPPSubscriptionRequest(params *xapptweaks.RMRParams) { return } - trans := c.tracker.NewXappTransaction(NewRmrEndpoint(params.Src), params.Xid, &RequestId{subReqMsg.RequestId}, params.Meid) + 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 @@ -248,7 +248,7 @@ func (c *Control) handleXAPPSubscriptionDeleteRequest(params *xapptweaks.RMRPara return } - trans := c.tracker.NewXappTransaction(NewRmrEndpoint(params.Src), params.Xid, &RequestId{subDelReqMsg.RequestId}, params.Meid) + trans := c.tracker.NewXappTransaction(NewRmrEndpoint(params.Src), params.Xid, subDelReqMsg.RequestId.Seq, params.Meid) if trans == nil { xapp.Logger.Error("XAPP-SubDelReq: %s", idstring(fmt.Errorf("transaction not created"), params)) return @@ -261,7 +261,7 @@ func (c *Control) handleXAPPSubscriptionDeleteRequest(params *xapptweaks.RMRPara return } - subs, err := c.registry.GetSubscriptionFirstMatch([]uint32{subDelReqMsg.RequestId.Seq}) + subs, err := c.registry.GetSubscriptionFirstMatch([]uint32{trans.GetSubId()}) if err != nil { xapp.Logger.Error("XAPP-SubDelReq: %s", idstring(err, trans)) return @@ -277,7 +277,7 @@ func (c *Control) handleXAPPSubscriptionDeleteRequest(params *xapptweaks.RMRPara // Whatever is received send ok delete response subDelRespMsg := &e2ap.E2APSubscriptionDeleteResponse{} - subDelRespMsg.RequestId = subs.SubReqMsg.RequestId + subDelRespMsg.RequestId = subs.GetReqId().RequestId subDelRespMsg.FunctionId = subs.SubReqMsg.FunctionId trans.Mtype, trans.Payload, err = c.e2ap.PackSubscriptionDeleteResponse(subDelRespMsg) if err == nil { @@ -342,10 +342,7 @@ func (c *Control) handleSubscriptionDelete(subs *Subscription, parentTrans *Tran subs.mutex.Unlock() } - subDelRespMsg := &e2ap.E2APSubscriptionDeleteResponse{} - subDelRespMsg.RequestId = subs.SubReqMsg.RequestId - subDelRespMsg.FunctionId = subs.SubReqMsg.FunctionId - parentTrans.SendEvent(subDelRespMsg, 0) + parentTrans.SendEvent(nil, 0) } //------------------------------------------------------------------- diff --git a/pkg/control/registry.go b/pkg/control/registry.go index 9cacd94..f24dccd 100644 --- a/pkg/control/registry.go +++ b/pkg/control/registry.go @@ -125,7 +125,7 @@ func (r *Registry) AssignToSubscription(trans *TransactionXapp, subReqMsg *e2ap. // Find possible existing Policy subscription // if actionType == e2ap.E2AP_ActionTypePolicy { - if subs, ok := r.register[subReqMsg.RequestId.Seq]; ok { + if subs, ok := r.register[trans.GetSubId()]; ok { xapp.Logger.Debug("CREATE %s. Existing subscription for Policy found", subs.String()) subs.SetCachedResponse(nil, true) return subs, nil diff --git a/pkg/control/tracker.go b/pkg/control/tracker.go index 2f54237..cf00af3 100644 --- a/pkg/control/tracker.go +++ b/pkg/control/tracker.go @@ -50,10 +50,6 @@ func (t *Tracker) initTransaction(transBase *Transaction) { func (t *Tracker) NewSubsTransaction(subs *Subscription) *TransactionSubs { trans := &TransactionSubs{} trans.Meid = subs.GetMeid() - rid := subs.GetReqId() - if rid != nil { - trans.ReqId = *rid - } t.initTransaction(&trans.Transaction) xapp.Logger.Debug("CREATE %s", trans.String()) return trans @@ -62,15 +58,13 @@ func (t *Tracker) NewSubsTransaction(subs *Subscription) *TransactionSubs { func (t *Tracker) NewXappTransaction( endpoint *RmrEndpoint, xid string, - reqId *RequestId, + subid uint32, meid *xapp.RMRMeid) *TransactionXapp { trans := &TransactionXapp{} trans.XappKey = &TransactionXappKey{*endpoint, xid} trans.Meid = meid - if reqId != nil { - trans.ReqId = *reqId - } + trans.SubId = subid t.initTransaction(&trans.Transaction) xapp.Logger.Debug("CREATE %s", trans.String()) return trans diff --git a/pkg/control/transaction.go b/pkg/control/transaction.go index df4d7db..56dff1d 100644 --- a/pkg/control/transaction.go +++ b/pkg/control/transaction.go @@ -46,14 +46,13 @@ type Transaction struct { Seq uint64 //transaction sequence tracker *Tracker //tracker instance Meid *xapp.RMRMeid //meid transaction related - ReqId RequestId // Mtype int //Encoded message type to be send Payload *e2ap.PackedData //Encoded message to be send EventChan chan interface{} } func (t *Transaction) String() string { - return "trans(" + strconv.FormatUint(uint64(t.Seq), 10) + "/" + t.Meid.RanName + "/" + t.ReqId.String() + ")" + return "trans(" + strconv.FormatUint(uint64(t.Seq), 10) + "/" + t.Meid.RanName + ")" } func (t *Transaction) SendEvent(event interface{}, waittime time.Duration) (bool, bool) { @@ -83,12 +82,6 @@ func (t *Transaction) WaitEvent(waittime time.Duration) (interface{}, bool) { return event, false } -func (t *Transaction) GetReqId() *RequestId { - t.mutex.Lock() - defer t.mutex.Unlock() - return &t.ReqId -} - func (t *Transaction) GetMtype() int { t.mutex.Lock() defer t.mutex.Unlock() @@ -144,8 +137,9 @@ func (key *TransactionXappKey) String() string { // //----------------------------------------------------------------------------- type TransactionXapp struct { - Transaction // - XappKey *TransactionXappKey // + Transaction + XappKey *TransactionXappKey + SubId uint32 } func (t *TransactionXapp) String() string { @@ -153,7 +147,7 @@ func (t *TransactionXapp) String() string { if t.XappKey != nil { transkey = t.XappKey.String() } - return "transxapp(" + t.Transaction.String() + "/" + transkey + ")" + return "transxapp(" + t.Transaction.String() + "/" + transkey + "/" + strconv.FormatUint(uint64(t.SubId), 10) + ")" } func (t *TransactionXapp) GetEndpoint() *RmrEndpoint { @@ -183,6 +177,12 @@ func (t *TransactionXapp) GetSrc() string { return "" } +func (t *TransactionXapp) GetSubId() uint32 { + t.mutex.Lock() + defer t.mutex.Unlock() + return t.SubId +} + func (t *TransactionXapp) Release() { t.mutex.Lock() xapp.Logger.Debug("RELEASE %s", t.String()) -- 2.16.6