From 63284a2eed02f5bfec0a237f83aae95adc702c43 Mon Sep 17 00:00:00 2001 From: Juha Hyttinen Date: Wed, 15 Jan 2020 10:45:11 +0200 Subject: [PATCH] RICPLT-3007 Replace msg Mtype numbers with variables defined in xapp frame Change-Id: Ibc35c4d82ce7fb126c1949b1a304fdd04be2e923 Signed-off-by: Juha Hyttinen --- pkg/control/control.go | 48 +++++++++++++++++++++------------------------ pkg/control/e2ap.go | 49 +++++++++++++++++++++++----------------------- pkg/control/tracker.go | 2 -- pkg/control/transaction.go | 4 ++-- 4 files changed, 49 insertions(+), 54 deletions(-) diff --git a/pkg/control/control.go b/pkg/control/control.go index b189071..52571aa 100755 --- a/pkg/control/control.go +++ b/pkg/control/control.go @@ -22,7 +22,6 @@ package control import ( "fmt" "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap" - "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/packer" rtmgrclient "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/rtmgr_client" rtmgrhandle "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/rtmgr_client/handle" "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" @@ -135,29 +134,29 @@ func (c *Control) rmrSendRaw(desc string, params *RMRParams) (err error) { return } -func (c *Control) rmrSend(desc string, subs *Subscription, trans *Transaction, payload *packer.PackedData) (err error) { +func (c *Control) rmrSend(desc string, subs *Subscription, trans *Transaction) (err error) { params := &RMRParams{&xapp.RMRParams{}} params.Mtype = trans.GetMtype() params.SubId = int(subs.GetSubId()) params.Xid = "" params.Meid = subs.GetMeid() params.Src = "" - params.PayloadLen = len(payload.Buf) - params.Payload = payload.Buf + params.PayloadLen = len(trans.Payload.Buf) + params.Payload = trans.Payload.Buf params.Mbuf = nil return c.rmrSendRaw(desc, params) } -func (c *Control) rmrReplyToSender(desc string, subs *Subscription, trans *Transaction, mType int, payload *packer.PackedData) (err error) { +func (c *Control) rmrReplyToSender(desc string, subs *Subscription, trans *Transaction) (err error) { params := &RMRParams{&xapp.RMRParams{}} - params.Mtype = mType + params.Mtype = trans.GetMtype() params.SubId = int(subs.GetSubId()) params.Xid = trans.GetXid() params.Meid = trans.GetMeid() params.Src = "" - params.PayloadLen = len(payload.Buf) - params.Payload = payload.Buf + params.PayloadLen = len(trans.Payload.Buf) + params.Payload = trans.Payload.Buf params.Mbuf = nil return c.rmrSendRaw(desc, params) @@ -195,7 +194,6 @@ func (c *Control) handleSubscriptionRequest(params *RMRParams) { // // trans, err := c.tracker.TrackTransaction(NewRmrEndpoint(params.Src), - params.Mtype, params.Xid, params.Meid, false, @@ -244,7 +242,7 @@ func (c *Control) handleSubscriptionRequest(params *RMRParams) { // // This is intermediate solution while improving message handling // - trans.Payload, err = c.e2ap.PackSubscriptionRequest(trans.SubReqMsg) + trans.Mtype, trans.Payload, err = c.e2ap.PackSubscriptionRequest(trans.SubReqMsg) if err != nil { xapp.Logger.Error("SubReq: %s for trans %s", err.Error(), trans) subs.Release() @@ -252,7 +250,7 @@ func (c *Control) handleSubscriptionRequest(params *RMRParams) { return } - c.rmrSend("SubReq: SubReq to E2T", subs, trans, trans.Payload) + c.rmrSend("SubReq: SubReq to E2T", subs, trans) c.timerMap.StartTimer("RIC_SUB_REQ", int(subs.GetSubId()), subReqTime, FirstTry, c.handleSubscriptionRequestTimer) xapp.Logger.Debug("SubReq: Debugging trans table = %v", c.tracker.transactionXappTable) @@ -307,7 +305,7 @@ func (c *Control) handleSubscriptionResponse(params *RMRParams) { return } - trans.Payload, err = c.e2ap.PackSubscriptionResponse(trans.SubRespMsg) + trans.Mtype, trans.Payload, err = c.e2ap.PackSubscriptionResponse(trans.SubRespMsg) if err != nil { xapp.Logger.Error("SubResp: %s for trans %s", err.Error(), trans) trans.Release() @@ -316,7 +314,7 @@ func (c *Control) handleSubscriptionResponse(params *RMRParams) { subs.Confirmed() trans.Release() - c.rmrReplyToSender("SubResp: SubResp to xapp", subs, trans, 12011, trans.Payload) + c.rmrReplyToSender("SubResp: SubResp to xapp", subs, trans) return } @@ -371,9 +369,9 @@ func (c *Control) handleSubscriptionFailure(params *RMRParams) { return } - trans.Payload, err = c.e2ap.PackSubscriptionFailure(trans.SubFailMsg) + trans.Mtype, trans.Payload, err = c.e2ap.PackSubscriptionFailure(trans.SubFailMsg) if err == nil { - c.rmrReplyToSender("SubFail: SubFail to xapp", subs, trans, 12012, trans.Payload) + c.rmrReplyToSender("SubFail: SubFail to xapp", subs, trans) time.Sleep(3 * time.Second) } else { //TODO error handling improvement @@ -408,11 +406,11 @@ func (c *Control) handleSubscriptionRequestTimer(strId string, nbrId int, tryCou } if tryCount < maxSubReqTryCount { - xapp.Logger.Info("SubReq timeout: Resending SubReq to E2T: Mtype: %v, SubId: %v, Xid %s, Meid %v", trans.GetMtype(), subs.GetSubId(), trans.GetXid(), trans.GetMeid()) + xapp.Logger.Info("SubReq timeout: subs: %s trans: %s", subs, trans) trans.RetryTransaction() - c.rmrSend("SubReq timeout: SubReq to E2T", subs, trans, trans.Payload) + c.rmrSend("SubReq timeout: SubReq to E2T", subs, trans) tryCount++ c.timerMap.StartTimer("RIC_SUB_REQ", int(subs.GetSubId()), subReqTime, tryCount, c.handleSubscriptionRequestTimer) @@ -424,7 +422,6 @@ func (c *Control) handleSubscriptionRequestTimer(strId string, nbrId int, tryCou // Create DELETE transaction (internal and no messages toward xapp) deltrans, err := c.tracker.TrackTransaction(&trans.RmrEndpoint, - 12020, // RIC SUBSCRIPTION DELETE trans.GetXid(), trans.GetMeid(), false, @@ -441,7 +438,7 @@ func (c *Control) handleSubscriptionRequestTimer(strId string, nbrId int, tryCou deltrans.SubDelReqMsg.RequestId.Id = trans.SubReqMsg.RequestId.Id deltrans.SubDelReqMsg.RequestId.Seq = uint32(subs.GetSubId()) deltrans.SubDelReqMsg.FunctionId = trans.SubReqMsg.FunctionId - deltrans.Payload, err = c.e2ap.PackSubscriptionDeleteRequest(deltrans.SubDelReqMsg) + deltrans.Mtype, deltrans.Payload, err = c.e2ap.PackSubscriptionDeleteRequest(deltrans.SubDelReqMsg) if err != nil { xapp.Logger.Error("SubReq timeout: Packing SubDelReq failed. Err: %v", err) //TODO improve error handling. Important at least in merge @@ -458,7 +455,7 @@ func (c *Control) handleSubscriptionRequestTimer(strId string, nbrId int, tryCou return } - c.rmrSend("SubReq timer: SubDelReq to E2T", subs, deltrans, deltrans.Payload) + c.rmrSend("SubReq timer: SubDelReq to E2T", subs, deltrans) c.timerMap.StartTimer("RIC_SUB_DEL_REQ", int(subs.GetSubId()), subDelReqTime, FirstTry, c.handleSubscriptionDeleteRequestTimer) return } @@ -470,7 +467,6 @@ func (c *Control) handleSubscriptionDeleteRequest(params *RMRParams) { // // trans, err := c.tracker.TrackTransaction(NewRmrEndpoint(params.Src), - params.Mtype, params.Xid, params.Meid, false, @@ -521,7 +517,7 @@ func (c *Control) handleSubscriptionDeleteRequest(params *RMRParams) { // // This is intermediate solution while improving message handling // - trans.Payload, err = c.e2ap.PackSubscriptionDeleteRequest(trans.SubDelReqMsg) + trans.Mtype, trans.Payload, err = c.e2ap.PackSubscriptionDeleteRequest(trans.SubDelReqMsg) if err != nil { xapp.Logger.Error("SubDelReq: %s for trans %s", err.Error(), trans) trans.Release() @@ -530,7 +526,7 @@ func (c *Control) handleSubscriptionDeleteRequest(params *RMRParams) { subs.UnConfirmed() - c.rmrSend("SubDelReq: SubDelReq to E2T", subs, trans, trans.Payload) + c.rmrSend("SubDelReq: SubDelReq to E2T", subs, trans) c.timerMap.StartTimer("RIC_SUB_DEL_REQ", int(subs.GetSubId()), subDelReqTime, FirstTry, c.handleSubscriptionDeleteRequestTimer) return @@ -663,7 +659,7 @@ func (c *Control) handleSubscriptionDeleteRequestTimer(strId string, nbrId int, if tryCount < maxSubDelReqTryCount { // Set possible to handle new response for the subId trans.RetryTransaction() - c.rmrSend("SubDelReq timeout: SubDelReq to E2T", subs, trans, trans.Payload) + c.rmrSend("SubDelReq timeout: SubDelReq to E2T", subs, trans) tryCount++ c.timerMap.StartTimer("RIC_SUB_DEL_REQ", int(subs.GetSubId()), subReqTime, tryCount, c.handleSubscriptionDeleteRequestTimer) return @@ -683,9 +679,9 @@ func (c *Control) sendSubscriptionDeleteResponse(desc string, trans *Transaction trans.SubDelRespMsg.FunctionId = trans.SubDelReqMsg.FunctionId var err error - trans.Payload, err = c.e2ap.PackSubscriptionDeleteResponse(trans.SubDelRespMsg) + trans.Mtype, trans.Payload, err = c.e2ap.PackSubscriptionDeleteResponse(trans.SubDelRespMsg) if err == nil { - c.rmrReplyToSender(desc+": SubDelResp to xapp", subs, trans, 12021, trans.Payload) + c.rmrReplyToSender(desc+": SubDelResp to xapp", subs, trans) time.Sleep(3 * time.Second) } else { //TODO error handling improvement diff --git a/pkg/control/e2ap.go b/pkg/control/e2ap.go index 8f7fb63..30f1ef2 100644 --- a/pkg/control/e2ap.go +++ b/pkg/control/e2ap.go @@ -30,6 +30,7 @@ import ( "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap" "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap_wrapper" "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/packer" + "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" ) var packerif e2ap.E2APPackerIf = e2ap_wrapper.NewAsn1E2Packer() @@ -55,17 +56,17 @@ func (c *E2ap) UnpackSubscriptionRequest(payload []byte) (*e2ap.E2APSubscription return subReq, nil } -func (c *E2ap) PackSubscriptionRequest(req *e2ap.E2APSubscriptionRequest) (*packer.PackedData, error) { +func (c *E2ap) PackSubscriptionRequest(req *e2ap.E2APSubscriptionRequest) (int, *packer.PackedData, error) { e2SubReq := packerif.NewPackerSubscriptionRequest() err := e2SubReq.Set(req) if err != nil { - return nil, err + return 0, nil, err } err, packedData := e2SubReq.Pack(nil) if err != nil { - return nil, err + return 0, nil, err } - return packedData, nil + return xapp.RIC_SUB_REQ, packedData, nil } //----------------------------------------------------------------------------- @@ -86,17 +87,17 @@ func (c *E2ap) UnpackSubscriptionResponse(payload []byte) (*e2ap.E2APSubscriptio return subResp, nil } -func (c *E2ap) PackSubscriptionResponse(req *e2ap.E2APSubscriptionResponse) (*packer.PackedData, error) { +func (c *E2ap) PackSubscriptionResponse(req *e2ap.E2APSubscriptionResponse) (int, *packer.PackedData, error) { e2SubResp := packerif.NewPackerSubscriptionResponse() err := e2SubResp.Set(req) if err != nil { - return nil, err + return 0, nil, err } err, packedData := e2SubResp.Pack(nil) if err != nil { - return nil, err + return 0, nil, err } - return packedData, nil + return xapp.RIC_SUB_RESP, packedData, nil } //----------------------------------------------------------------------------- @@ -117,17 +118,17 @@ func (c *E2ap) UnpackSubscriptionFailure(payload []byte) (*e2ap.E2APSubscription return subFail, nil } -func (c *E2ap) PackSubscriptionFailure(req *e2ap.E2APSubscriptionFailure) (*packer.PackedData, error) { +func (c *E2ap) PackSubscriptionFailure(req *e2ap.E2APSubscriptionFailure) (int, *packer.PackedData, error) { e2SubFail := packerif.NewPackerSubscriptionFailure() err := e2SubFail.Set(req) if err != nil { - return nil, err + return 0, nil, err } err, packedData := e2SubFail.Pack(nil) if err != nil { - return nil, err + return 0, nil, err } - return packedData, nil + return xapp.RIC_SUB_FAILURE, packedData, nil } //----------------------------------------------------------------------------- @@ -148,17 +149,17 @@ func (c *E2ap) UnpackSubscriptionDeleteRequest(payload []byte) (*e2ap.E2APSubscr return subDelReq, nil } -func (c *E2ap) PackSubscriptionDeleteRequest(req *e2ap.E2APSubscriptionDeleteRequest) (*packer.PackedData, error) { +func (c *E2ap) PackSubscriptionDeleteRequest(req *e2ap.E2APSubscriptionDeleteRequest) (int, *packer.PackedData, error) { e2SubDelReq := packerif.NewPackerSubscriptionDeleteRequest() err := e2SubDelReq.Set(req) if err != nil { - return nil, err + return 0, nil, err } err, packedData := e2SubDelReq.Pack(nil) if err != nil { - return nil, err + return 0, nil, err } - return packedData, nil + return xapp.RIC_SUB_DEL_REQ, packedData, nil } //----------------------------------------------------------------------------- @@ -179,17 +180,17 @@ func (c *E2ap) UnpackSubscriptionDeleteResponse(payload []byte) (*e2ap.E2APSubsc return subDelResp, nil } -func (c *E2ap) PackSubscriptionDeleteResponse(req *e2ap.E2APSubscriptionDeleteResponse) (*packer.PackedData, error) { +func (c *E2ap) PackSubscriptionDeleteResponse(req *e2ap.E2APSubscriptionDeleteResponse) (int, *packer.PackedData, error) { e2SubDelResp := packerif.NewPackerSubscriptionDeleteResponse() err := e2SubDelResp.Set(req) if err != nil { - return nil, err + return 0, nil, err } err, packedData := e2SubDelResp.Pack(nil) if err != nil { - return nil, err + return 0, nil, err } - return packedData, nil + return xapp.RIC_SUB_DEL_RESP, packedData, nil } //----------------------------------------------------------------------------- @@ -210,15 +211,15 @@ func (c *E2ap) UnpackSubscriptionDeleteFailure(payload []byte) (*e2ap.E2APSubscr return subDelFail, nil } -func (c *E2ap) PackSubscriptionDeleteFailure(req *e2ap.E2APSubscriptionDeleteFailure) (*packer.PackedData, error) { +func (c *E2ap) PackSubscriptionDeleteFailure(req *e2ap.E2APSubscriptionDeleteFailure) (int, *packer.PackedData, error) { e2SubDelFail := packerif.NewPackerSubscriptionDeleteFailure() err := e2SubDelFail.Set(req) if err != nil { - return nil, err + return 0, nil, err } err, packedData := e2SubDelFail.Pack(nil) if err != nil { - return nil, err + return 0, nil, err } - return packedData, nil + return xapp.RIC_SUB_DEL_FAILURE, packedData, nil } diff --git a/pkg/control/tracker.go b/pkg/control/tracker.go index 75127a7..11d2cf7 100644 --- a/pkg/control/tracker.go +++ b/pkg/control/tracker.go @@ -39,7 +39,6 @@ func (t *Tracker) Init() { func (t *Tracker) TrackTransaction( endpoint *RmrEndpoint, - mtype int, xid string, meid *xapp.RMRMeid, respReceived bool, @@ -54,7 +53,6 @@ func (t *Tracker) TrackTransaction( tracker: nil, Subs: nil, RmrEndpoint: *endpoint, - Mtype: mtype, Xid: xid, Meid: meid, RespReceived: respReceived, diff --git a/pkg/control/transaction.go b/pkg/control/transaction.go index b0da077..867b854 100644 --- a/pkg/control/transaction.go +++ b/pkg/control/transaction.go @@ -47,7 +47,6 @@ type Transaction struct { tracker *Tracker //tracker instance Subs *Subscription //related subscription RmrEndpoint RmrEndpoint //xapp endpoint - Mtype int //type of initiating message Xid string //xapp xid in req Meid *xapp.RMRMeid //meid transaction related SubReqMsg *e2ap.E2APSubscriptionRequest //SubReq TODO: maybe own transactions per type @@ -56,7 +55,8 @@ type Transaction struct { SubDelReqMsg *e2ap.E2APSubscriptionDeleteRequest //SubDelReq TODO: maybe own transactions per type SubDelRespMsg *e2ap.E2APSubscriptionDeleteResponse //SubDelResp TODO: maybe own transactions per type SubDelFailMsg *e2ap.E2APSubscriptionDeleteFailure //SubDelFail TODO: maybe own transactions per type - Payload *packer.PackedData //Encoded message to be send. Optimized + Mtype int //Encoded message type to be send + Payload *packer.PackedData //Encoded message to be send RespReceived bool ForwardRespToXapp bool } -- 2.16.6