/* Web Polygraph       http://www.web-polygraph.org/
 * (C) 2003-2006 The Measurement Factory
 * Licensed under the Apache License, Version 2.0 */

#ifndef POLYGRAPH__CLIENT_SINGLECXM_H
#define POLYGRAPH__CLIENT_SINGLECXM_H

#include "client/CltXactMgr.h"

class CltXact;
class Connection;

// a manager of a single CltXact that does not share the connection
// with other client transactions
class SingleCxm: public CltXactMgr {
	public:
		SingleCxm(CltXact &aXact);

		virtual void reset();

		virtual bool idle() const;

		void releaseReadControl(CltXact *x);
		virtual void control(CltXact *x);
		virtual void rewind(CltXact *x);

		virtual void noteAbort(CltXact *x);
		virtual void noteDone(CltXact *x);
		virtual void noteLastXaction(CltXact *x);

		virtual void noteReadReady(int fd);
		virtual void noteWriteReady(int fd);

		virtual Connection *conn();

	private:
		CltXact &theXact;
		Size theFillSize;
};

#endif


syntax highlighted by Code2HTML, v. 0.9.1