| // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "sql/transaction.h" | |
| #include "base/logging.h" | |
| #include "sql/database.h" | |
| namespace sql { | |
| Transaction::Transaction(Database* database) | |
| : database_(database), is_open_(false) {} | |
| Transaction::~Transaction() { | |
| if (is_open_) | |
| database_->RollbackTransaction(); | |
| } | |
| bool Transaction::Begin() { | |
| DCHECK(!is_open_) << "Beginning a transaction twice!"; | |
| is_open_ = database_->BeginTransaction(); | |
| return is_open_; | |
| } | |
| void Transaction::Rollback() { | |
| DCHECK(is_open_) << "Attempting to roll back a nonexistent transaction. " | |
| << "Did you remember to call Begin() and check its return?"; | |
| is_open_ = false; | |
| database_->RollbackTransaction(); | |
| } | |
| bool Transaction::Commit() { | |
| DCHECK(is_open_) << "Attempting to commit a nonexistent transaction. " | |
| << "Did you remember to call Begin() and check its return?"; | |
| is_open_ = false; | |
| return database_->CommitTransaction(); | |
| } | |
| } // namespace sql |