~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/transaction_log/transaction_log_index.cc

  • Committer: Monty Taylor
  • Date: 2010-03-11 18:27:20 UTC
  • mfrom: (1333 staging)
  • mto: This revision was merged to the branch mainline in revision 1348.
  • Revision ID: mordred@inaugust.com-20100311182720-hd1h87y6cb1b1mp0
Merged trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
 
43
43
TransactionLogIndex::TransactionLogIndex(TransactionLog &in_log) :
44
44
  log(in_log),
45
 
  log_file(-1),
46
45
  index_file(-1),
47
46
  index_file_path(),
48
47
  has_error(false),
51
50
  max_end_timestamp(0),
52
51
  min_transaction_id(0),
53
52
  max_transaction_id(0),
54
 
  num_log_entries(0)
 
53
  entries(),
 
54
  transaction_entries()
55
55
{
56
56
  (void) pthread_mutex_init(&index_lock, NULL);
 
57
  entries.reserve(1024);
 
58
  transaction_entries.reserve(1024);
57
59
  open();
58
60
}
59
61
 
64
66
  pthread_mutex_destroy(&index_lock);
65
67
}
66
68
 
 
69
void TransactionLogIndex::clear()
 
70
{
 
71
  pthread_mutex_lock(&index_lock);
 
72
  min_end_timestamp= 0;
 
73
  max_end_timestamp= 0;
 
74
  min_transaction_id= 0;
 
75
  max_transaction_id= 0;
 
76
  entries.clear();
 
77
  transaction_entries.clear();
 
78
  clearError();
 
79
  pthread_mutex_unlock(&index_lock);
 
80
}
 
81
 
67
82
void TransactionLogIndex::open()
68
83
{
69
84
 
107
122
 
108
123
uint64_t TransactionLogIndex::getNumLogEntries() const
109
124
{
110
 
  return num_log_entries;
 
125
  return entries.size();
111
126
}
112
127
 
113
128
uint64_t TransactionLogIndex::getNumTransactionEntries() const
125
140
  return transaction_entries;
126
141
}
127
142
 
 
143
size_t TransactionLogIndex::getTransactionEntriesSizeInBytes()
 
144
{
 
145
  return transaction_entries.capacity() * sizeof(TransactionLog::TransactionEntries::value_type);
 
146
}
 
147
 
 
148
size_t TransactionLogIndex::getEntriesSizeInBytes()
 
149
{
 
150
  return entries.capacity() * sizeof(TransactionLog::Entries::value_type);
 
151
}
 
152
 
 
153
 
 
154
size_t TransactionLogIndex::getSizeInBytes()
 
155
{
 
156
  return sizeof(this) + getEntriesSizeInBytes() + getTransactionEntriesSizeInBytes();
 
157
}
 
158
 
128
159
void TransactionLogIndex::addEntry(const TransactionLogEntry &entry,
129
160
                                   const message::Transaction &transaction,
130
161
                                   uint32_t checksum)
136
167
    min_transaction_id= transaction.transaction_context().transaction_id();
137
168
    min_end_timestamp= transaction.transaction_context().end_timestamp();
138
169
  }
139
 
  num_log_entries++;
140
170
  max_transaction_id= transaction.transaction_context().transaction_id();
141
171
  max_end_timestamp= transaction.transaction_context().end_timestamp();
142
172
  entries.push_back(entry);