public DataWrapper(string strConString, CommandType objCommandType, MaintainTransaction transactionRequired, string transactionName, SetAutoCommit AutoCommit) : this(strConString, objCommandType) { this.TransactionRequired = transactionRequired; this.AutoCommit = AutoCommit; }
public TransactionResultTypes ConsumeTransaction(MaintainTransaction transaction, bool addExtraTime = false) { if (transaction.IsExpired(addExtraTime)) { return(TransactionResultTypes.Expired); } var transactionResult = _maintainChain.BlockStorage.HistoryContainsTransactionOrRegistration(transaction); if (transactionResult != TransactionResultTypes.Ok) { return(transactionResult); } var type = transaction.TransactionType; switch (type) { case MainTainTransactionTypes.Maintain: case MainTainTransactionTypes.Revenue: var(result, _, _) = _featureGenerator.AddTransaction(BlockTransactionGeneratorMode.Preprocess, _maintainChain, transaction, null); if (result == TransactionResultTypes.Ok) { _transactions.Add(transaction); } return(result); } return(TransactionResultTypes.InvalidTransaction); }
/// <summary> /// Is used initialize data wrapper object if a transactional query(s) is/are to be excuted. /// Transaction Name(s) is/are specified by user(Business logic). /// This method is used in case multiple transactions are to be maintained simultaneously. /// </summary> /// <param name="strConString"></param> /// <param name="objCommandType"></param> /// <param name="transactionRequired"></param> /// <param name="transactionName"></param> /// <param name="AutoCommit"></param> public DbWrapper(string strConString, CommandType objCommandType, MaintainTransaction transactionRequired, string transactionName, SetAutoCommit AutoCommit) : this(strConString, objCommandType) { this.TransactionRequired = transactionRequired; //getTransactionObject(transactionName); this.AutoCommit = AutoCommit; }
public DatabaseInteraction(CommandType DbCommandType, MaintainTransaction transactionRequired, SetAutoCommit AutoCommit) { mDbCommandType = DbCommandType; parameterCollection = new ArrayList(); transactionCache = new Hashtable(); this.transactionRequired = transactionRequired; OpenConnection(); }
public TransactionResultTypes PublishMaintainTransaction(MaintainTransaction transaction) { transaction.SignKey = ServiceChain.KeyStore.DecryptedKey; transaction.SignKeyIndex = ServiceChain.KeyStore.KeyIndex; var message = new NodeTransactionMessage(transaction) { SignKey = _node.NodeConfiguration.LocaleNodePrivateKey }; // generate signatures message.ToByteArray(); return(_node.TransactionManager.AddNodeTransaction(message, null)); }
/// <summary> /// Is used initialize data wrapper object if a transactional query(s) is/are to be excuted. /// Uses a default system default transaction Name. /// </summary> /// <param name="strConString"></param> /// <param name="objCommandType"></param> /// <param name="transactionRequired"></param> /// <param name="AutoCommit"></param> //case:2 public DbWrapper(string strConString, CommandType objCommandType, MaintainTransaction transactionRequired, SetAutoCommit AutoCommit) : this(strConString, objCommandType, transactionRequired, DEFAULT_TRANSACTION_NAME, AutoCommit) { }
public TransactionResultTypes ValidateMaintainTransaction(MaintainTransaction transaction) { if (transaction == null) { return(TransactionResultTypes.InvalidTransaction); } var chainInfo = ServiceChain.CoreChain.GetChainInfo(ChainId); if (chainInfo == null) { return(TransactionResultTypes.InvalidTransaction); } var chainKey = chainInfo.GetValidChainKey(transaction.ChainIndex, transaction.SignKeyIndex, transaction.Timestamp); if (!transaction.IsSignatureValid(chainKey?.PublicKey)) { return(TransactionResultTypes.InvaidChainKey); } var type = transaction.TransactionType; if (type == MainTainTransactionTypes.Revenue) { var rev = transaction as RevenueMaintainTransaction; var revenueInfo = rev.RevenueInfo; var tick = rev.Tick; var now = Protocol.TicksSinceGenesis(Time.Timestamp); if (tick < (now - 1) || tick > now) { return(TransactionResultTypes.InvalidTransaction); } if (revenueInfo == null) { return(TransactionResultTypes.InvalidTransaction); } if (revenueInfo != chainInfo.GetRevenueInfo(revenueInfo.Index)) { return(TransactionResultTypes.InvalidTransaction); } if (revenueInfo.Revenue <= 0) { return(TransactionResultTypes.InvalidTransaction); } lock (_revenueLock) { var previous = GetRevenueReceivers(tick - 1); if (previous != null) { if (previous.Tick >= tick || previous.Tick != rev.PreviousTick) { return(TransactionResultTypes.InvalidTransaction); } } if (tick != now) // if from previous tick, we allow it only, if there are no revenues for current tick yet. { var r = GetRevenueReceivers(now); if (r != null && r.Accounts.Count > 0) { return(TransactionResultTypes.InvalidTransaction); } } var revenues = GetRevenueReceivers(tick); if (revenues != null) { foreach (var accountId in rev.Accounts) { if (revenues.Accounts.Contains(accountId)) { return(TransactionResultTypes.InvalidTransaction); } } } return(TransactionResultTypes.Ok); } } return(TransactionResultTypes.Unknown); }
public DataWrapper(string strConString, CommandType objCommandType, MaintainTransaction transactionRequired, SetAutoCommit AutoCommit) : this(strConString, objCommandType, transactionRequired, DEFAULT_TRANSACTION_NAME, AutoCommit) { }
public MaintainItem(long payload, MaintainTransaction maintainTransaction, Connection connection) : base(payload, SenderTypes.Node, connection) { Transaction = maintainTransaction; }