/* Web Polygraph http://www.web-polygraph.org/
* (C) 2003-2006 The Measurement Factory
* Licensed under the Apache License, Version 2.0 */
#ifndef POLYGRAPH__RUNTIME_XACTABORTCOORD_H
#define POLYGRAPH__RUNTIME_XACTABORTCOORD_H
#include "xstd/Size.h"
class RndGen;
// info required to compute whether and where to abort a transaction
class XactAbortCoord {
public:
XactAbortCoord();
void configure(const RndGen &whether, const RndGen &where);
void configure(int whether, int where);
void reset();
operator void*() const { return
theWhetherState && theWhereState ? (void*)-1 : 0; }
// negative if no abort
Size pos(Size hdrSize, Size bodySize) const;
int whether() const { return theWhetherState; }
int where() const { return theWhereState; }
protected:
int theWhetherState;
int theWhereState;
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1