347: def start_transaction(name = nil)
348: @__transaction_level__ ||= 0
349: @__transaction_names__ ||= []
350:
351: if name.nil?
352: @__transaction_names__ << nil
353: ss = "" if Transaction::Simple.debugging?
354: else
355: if @__transaction_names__.include?(name)
356: raise TransactionError, Messages[:unique_names]
357: end
358: name = name.dup.freeze if name.kind_of?(String)
359: @__transaction_names__ << name
360: ss = "(#{name.inspect})" if Transaction::Simple.debugging?
361: end
362:
363: @__transaction_level__ += 1
364:
365: if Transaction::Simple.debugging?
366: Transaction::Simple.debug_io << "#{'>' * @__transaction_level__} " <<
367: "Start Transaction#{ss}\n"
368: end
369:
370: @__transaction_checkpoint__ = Marshal.dump(self)
371: end