MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / process

Method process

src/jrd/replication/Applier.cpp:299–444  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

297}
298
299void Applier::process(thread_db* tdbb, ULONG length, const UCHAR* data)
300{
301 Database* const dbb = tdbb->getDatabase();
302
303 if (dbb->readOnly())
304 raiseError("Replication is impossible for read-only database");
305
306 tdbb->tdbb_flags |= TDBB_replicator;
307
308 BlockReader reader(length, data);
309
310 const auto traNum = reader.getTransactionId();
311 const auto protocol = reader.getProtocolVersion();
312
313 if (protocol != PROTOCOL_CURRENT_VERSION)
314 raiseError("Unsupported replication protocol version %u", protocol);
315
316 while (!reader.isEof())
317 {
318 try
319 {
320 const auto op = reader.getTag();
321
322 switch (op)
323 {
324 case opStartTransaction:
325 startTransaction(tdbb, traNum);
326 break;
327
328 case opPrepareTransaction:
329 prepareTransaction(tdbb, traNum);
330 break;
331
332 case opCommitTransaction:
333 commitTransaction(tdbb, traNum);
334 break;
335
336 case opRollbackTransaction:
337 rollbackTransaction(tdbb, traNum, false);
338 break;
339
340 case opCleanupTransaction:
341 if (traNum)
342 rollbackTransaction(tdbb, traNum, true);
343 else
344 cleanupTransactions(tdbb);
345 break;
346
347 case opStartSavepoint:
348 startSavepoint(tdbb, traNum);
349 break;
350
351 case opReleaseSavepoint:
352 cleanupSavepoint(tdbb, traNum, false);
353 break;
354
355 case opRollbackSavepoint:
356 cleanupSavepoint(tdbb, traNum, true);

Callers 2

flushMethod · 0.45
bgWriterMethod · 0.45

Calls 15

CCH_unwindFunction · 0.85
getDatabaseMethod · 0.80
readOnlyMethod · 0.80
getTransactionIdMethod · 0.80
getProtocolVersionMethod · 0.80
getInt32Method · 0.80
getBinaryMethod · 0.80
getInt16Method · 0.80
getInt64Method · 0.80
checkCancelStateMethod · 0.80
raiseErrorFunction · 0.70
isEofMethod · 0.45

Tested by

no test coverage detected