def op_log_like(op, log_table, ops_per_txn): if op.transaction != None: # Any non-zero number indicates that we already have a transaction around this. ops_per_txn = 1 if op._optype != Operation.OP_NONE: if _optype_is_write(op._optype): op += _op_log_op(op, log_table) if ops_per_txn == 0: op = txn(op) # txn for each action. else: oplist = [] for op2 in _op_get_group_list(op): if op2._optype == Operation.OP_NONE: oplist.append(op_log_like(op2, log_table, ops_per_txn)) elif ops_per_txn == 0 and _optype_is_write(op2._optype): op2 += _op_log_op(op2, log_table) if op2.transaction == None: oplist.append(txn(op2)) # txn for each action. else: oplist.append(op2) # already have a txn else: oplist.append(op2) if _optype_is_write(op2._optype): oplist.append(_op_log_op(op2, log_table)) op._group = OpList(oplist) return op
def op_group_transaction(ops_arg, ops_per_txn, txn_config): if ops_arg != Operation.OP_NONE: return txn(ops_arg, txn_config) if ops_arg._transaction != None: raise Exception('nested transactions not supported') if ops_arg._repeatgroup != None: raise Exception('grouping transactions with multipliers not supported') oplist = [] ops = None nops = 0 txgroup = [] for op in ops_arg._group: if op.optype == Operation.OP_NONE: oplist.append(_op_transaction_list(txgroup, txn_config)) txgroup = [] oplist.append(op) else: txgroup.append(op) if len(txgroup) >= ops_per_txn: oplist.append(_op_transaction_list(txgroup, txn_config)) txgroup = [] if len(txgroup) > 0: oplist.append(_op_transaction_list(txgroup, txn_config)) ops_arg._group = OpList(oplist) return ops_arg
def timed(seconds, op): if op._group == None: result = Operation() result._group = OpList([op]) result._repeatgroup = 1 else: result = op result._timed = seconds return result
def _op_copy_mod(op, table, key): if op._optype != Operation.OP_NONE: if table != None: op._table = table if key != None: op._key = key if op._group != None: newgroup = [] for subop in _op_get_group_list(op): newgroup.append(_op_copy_mod(subop, table, key)) op._group = OpList(newgroup) return op
def op_log_like(op, log_table, ops_per_txn): if op._optype != Operation.OP_NONE: if _optype_is_write(op._optype): op += _op_log_op(op, log_table) if ops_per_txn == 0: op = txn(op) # txn for each action. else: oplist = [] for op2 in _op_get_group_list(op): if op2._optype == Operation.OP_NONE: oplist.append(op_log_like(op2, log_table)) elif ops_per_txn == 0 and _optype_is_write(op2._optype): op2 += _op_log_op(op2, log_table) oplist.append(txn(op2)) # txn for each action. else: oplist.append(op2) if _optype_is_write(op2._optype): oplist.append(_op_log_op(op2, log_table)) op._group = OpList(oplist) return op