-/*
-Checks if a tranascation with similar type has been ongoing. If not then creates one.
-Returns error if there is similar transatcion ongoing.
-*/
-func (t *Tracker) TrackTransaction(key TransactionKey, xact Transaction) error {
- t.mutex.Lock()
- defer t.mutex.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 %s is ongoing", key.SubID, key.transType)
- return err
+func (t *Tracker) TrackTransaction(subs *Subscription, endpoint RmrEndpoint, params *xapp.RMRParams, respReceived bool, forwardRespToXapp bool) (*Transaction, error) {
+
+ trans := &Transaction{
+ tracker: nil,
+ Subs: nil,
+ RmrEndpoint: endpoint,
+ Xid: params.Xid,
+ OrigParams: params,
+ RespReceived: respReceived,
+ ForwardRespToXapp: forwardRespToXapp,