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

#ifndef POLYGRAPH__CLIENT_CLTXACTMGR_H
#define POLYGRAPH__CLIENT_CLTXACTMGR_H

#include "xstd/FileScanner.h"

class CltXact;
class Connection;

// interface for managing of CltXact actions that may depend on other CltXacts
// essential for supporting pipelined messages "transparently" to CltXact
class CltXactMgr: public FileScanUser {
	public:
		CltXactMgr(): useLevel(0) {}
		virtual ~CltXactMgr() {}

		virtual void reset() { useLevel = 0; }

		virtual void control(CltXact *x) = 0;  // start filling,writing,reading
		virtual void rewind(CltXact *x) = 0; // restart filling,writing,reading

		virtual void noteAbort(CltXact *x) = 0;
		virtual void noteDone(CltXact *x) = 0;
		virtual void noteLastXaction(CltXact *x) = 0; // conn is closing

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

		virtual Connection *conn() = 0;

	public:
		int useLevel;

	protected:
		Size theWrSize;
};

#endif


syntax highlighted by Code2HTML, v. 0.9.1