Exemplo n.º 1
0
        internal override void Visit(InsertTxIdRequest req)
        {
            string hashId = req.TxId.ToString();

            if (this.redisVersionDbMode == RedisVersionDbMode.Cluster)
            {
                hashId = RedisVersionDb.PACK_KEY(RedisVersionDb.TX_KEY_PREFIX, hashId);
            }

            byte[][] keysBytes =
            {
                Encoding.ASCII.GetBytes(TxTableEntry.STATUS_STRING),
                Encoding.ASCII.GetBytes(TxTableEntry.COMMIT_TIME_STRING),
                Encoding.ASCII.GetBytes(TxTableEntry.COMMIT_LOWER_BOUND_STRING)
            };
            byte[][] valuesBytes =
            {
                BitConverter.GetBytes((int)TxStatus.Ongoing),
                BitConverter.GetBytes(TxTableEntry.DEFAULT_COMMIT_TIME),
                BitConverter.GetBytes(TxTableEntry.DEFAULT_LOWER_BOUND)
            };

            RedisRequest redisReq = this.NextRedisRequest();

            redisReq.Set(hashId, keysBytes, valuesBytes, RedisRequestType.HMSet);
            redisReq.ParentRequest = req;
        }
Exemplo n.º 2
0
        internal override void Visit(InsertTxIdRequest req)
        {
            TxTableEntry txEntry = req.RemoteTxEntry;

            if (txEntry == null)
            {
                txEntry = this.txTable[req.TxId];
            }

            txEntry.Reset(req.TxId);
            req.Finished = true;
        }
        internal override void Visit(InsertTxIdRequest req)
        {
            TxTableEntry txEntry = req.RemoteTxEntry;

            if (txEntry == null)
            {
                if (!this.txTable.TryGetValue(req.TxId, out txEntry))
                {
                    throw new TransactionException("The specified txId does not exist.");
                }
            }

            while (Interlocked.CompareExchange(ref txEntry.latch, 1, 0) != 0)
            {
                ;
            }
            txEntry.Reset(req.TxId);
            Interlocked.Exchange(ref txEntry.latch, 0);

            req.Finished = true;
        }
Exemplo n.º 4
0
        internal override void Visit(InsertTxIdRequest req)
        {
            TxTableEntry txTableEntry = new TxTableEntry(req.TxId);

            this.HashId = req.TxId.ToString();
            byte[][] keysBytes =
            {
                Encoding.ASCII.GetBytes(TxTableEntry.STATUS_STRING),
                Encoding.ASCII.GetBytes(TxTableEntry.COMMIT_TIME_STRING),
                Encoding.ASCII.GetBytes(TxTableEntry.COMMIT_LOWER_BOUND_STRING)
            };
            byte[][] valuesBytes =
            {
                BitConverter.GetBytes((int)txTableEntry.Status),
                BitConverter.GetBytes(txTableEntry.CommitTime),
                BitConverter.GetBytes(txTableEntry.CommitLowerBound)
            };

            this.RedisReq = new RedisRequest(this.HashId, keysBytes, valuesBytes, RedisRequestType.HMSet)
            {
                ParentRequest = req
            };
        }
Exemplo n.º 5
0
 internal override void Visit(InsertTxIdRequest req)
 {
     // There is no response for HMSET command
     // Nothing to do here
 }
Exemplo n.º 6
0
 internal virtual void Visit(InsertTxIdRequest req)
 {
 }