Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / sql / transaction.cc
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "sql/transaction.h"
6
7 #include "base/logging.h"
8 #include "sql/connection.h"
9
10 namespace sql {
11
12 Transaction::Transaction(Connection* connection)
13     : connection_(connection),
14       is_open_(false) {
15 }
16
17 Transaction::~Transaction() {
18   if (is_open_)
19     connection_->RollbackTransaction();
20 }
21
22 bool Transaction::Begin() {
23   DCHECK(!is_open_) << "Beginning a transaction twice!";
24   is_open_ = connection_->BeginTransaction();
25   return is_open_;
26 }
27
28 void Transaction::Rollback() {
29   DCHECK(is_open_) << "Attempting to roll back a nonexistent transaction. "
30                    << "Did you remember to call Begin() and check its return?";
31   is_open_ = false;
32   connection_->RollbackTransaction();
33 }
34
35 bool Transaction::Commit() {
36   DCHECK(is_open_) << "Attempting to commit a nonexistent transaction. "
37                    << "Did you remember to call Begin() and check its return?";
38   is_open_ = false;
39   return connection_->CommitTransaction();
40 }
41
42 }  // namespace sql