-/*
-Retreives the transaction table entry for the given request.
-Returns error in case the transaction cannot be found.
-*/
-func (t *Tracker) UpdateTransaction(SubID uint16, transType Action, xact Transaction) error {
- key := TransactionKey{SubID, transType}
- trackerMutex.Lock()
- defer trackerMutex.Unlock()
- if _, ok := t.transactionTable[key]; ok {
- // TODO: Implement merge related check here. If the key is same but the value is different.
- err := fmt.Errorf("transaction tracker: Similar transaction with sub id %d and type %v is ongoing", key.SubID, key.transType)
+func (t *Tracker) NewSubsTransaction(subs *Subscription) *TransactionSubs {
+ trans := &TransactionSubs{}
+ trans.Meid = subs.GetMeid()
+ t.initTransaction(&trans.Transaction)
+ xapp.Logger.Debug("CREATE %s", trans.String())
+ return trans
+}
+
+func (t *Tracker) NewXappTransaction(
+ endpoint *xapp.RmrEndpoint,
+ xid string,
+ requestId e2ap.RequestId,
+ meid *xapp.RMRMeid) *TransactionXapp {
+
+ trans := &TransactionXapp{}
+ trans.XappKey = &TransactionXappKey{*endpoint, xid}
+ trans.Meid = meid
+ trans.RequestId = requestId
+ t.initTransaction(&trans.Transaction)
+ xapp.Logger.Debug("CREATE %s", trans.String())
+ return trans
+}
+
+func (t *Tracker) Track(trans *TransactionXapp) error {
+
+ if trans.GetEndpoint() == nil {
+ err := fmt.Errorf("Tracker: No valid endpoint given in %s", trans.String())