InfiniSQL  v0.1.2-alpha
Massive Scale Transaction Processing
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Applier Class Reference

On replicas, this class replicates "applies" transactions received by TransactionAgent. More...

#include <Applier.h>

Collaboration diagram for Applier:

Public Member Functions

 Applier (class TransactionAgent *taPtrarg, int64_t domainidarg, Topology::addressStruct sourceAddrarg, int64_t partitionidarg)
 
virtual ~Applier ()
 
void ackedApply (class MessageAckApply &msg)
 

Public Attributes

int64_t applierid
 
class TransactionAgenttaPtr
 
int64_t domainid
 
Topology::addressStruct sourceAddr
 
int64_t partitioncount
 

Detailed Description

On replicas, this class replicates "applies" transactions received by TransactionAgent.

The receiving TransactionAgent begins the process by sending data to each Engine, and then creating an Applier object and putting it in a map. Engines apply replicated transaction data in strict order based on subtransactionid.

Definition at line 43 of file Applier.h.

Constructor & Destructor Documentation

Applier::Applier ( class TransactionAgent taPtrarg,
int64_t  domainidarg,
Topology::addressStruct  sourceAddrarg,
int64_t  partitionidarg 
)

Creates Applier Object. This is created to keep state of a transaction being replicated.

Parameters
taPtrargpointer to calling TransactionAgent
domainidargdomainid
sourceAddrargaddress of master TransactionAgent
partitionidargpartitionid

Definition at line 39 of file Applier.cc.

References applierid, TransactionAgent::Appliers, and TransactionAgent::getnextapplierid().

41  :
42  taPtr(taPtrarg), domainid(domainidarg), sourceAddr(sourceAddrarg),
43  partitioncount(partitioncountarg)
44 {
46  taPtr->Appliers[applierid] = this;
47 }

Here is the call graph for this function:

Applier::~Applier ( )
virtual

Definition at line 49 of file Applier.cc.

50 {
51 }

Member Function Documentation

void Applier::ackedApply ( class MessageAckApply msg)

handles replies from Engines that have applied transaction replication. Counts down and deletes Applier object when all replies have been received

Parameters
msg

Definition at line 53 of file Applier.cc.

References MessageAckApply::ackapplyStruct, applierid, MessageAckApply::ackapply_s::applierid, TransactionAgent::Appliers, partitioncount, MessageAckApply::ackapply_s::partitionid, MessageAckApply::ackapply_s::status, STATUS_OK, and MessageAckApply::ackapply_s::subtransactionid.

54 {
55  if (msg.ackapplyStruct.status != STATUS_OK)
56  {
57  printf("%s %i bad apply ack status %i %li,%li,%li\n", __FILE__, __LINE__,
58  msg.ackapplyStruct.status, msg.ackapplyStruct.subtransactionid, msg.ackapplyStruct.applierid, msg.ackapplyStruct.partitionid);
59  delete this;
60  return;
61  }
62 
63  if (!--partitioncount)
64  {
65  taPtr->Appliers.erase(applierid);
66  delete this;
67  }
68 }

Member Data Documentation

int64_t Applier::applierid

Definition at line 70 of file Applier.h.

Referenced by ackedApply(), and Applier().

int64_t Applier::domainid

Definition at line 72 of file Applier.h.

int64_t Applier::partitioncount

Definition at line 74 of file Applier.h.

Referenced by ackedApply().

Topology::addressStruct Applier::sourceAddr

Definition at line 73 of file Applier.h.

class TransactionAgent* Applier::taPtr

Definition at line 71 of file Applier.h.


The documentation for this class was generated from the following files: