/* Web Polygraph http://www.web-polygraph.org/
* (C) 2003-2006 The Measurement Factory
* Licensed under the Apache License, Version 2.0 */
#ifndef POLYGRAPH__CLIENT_BODYPARSER_H
#define POLYGRAPH__CLIENT_BODYPARSER_H
#include "xstd/h/iosfwd.h"
class BodyParserFarm;
class ParseBuffer;
class CltXact;
// interface for various body parsers
class BodyParser {
public:
BodyParser();
virtual ~BodyParser();
void configure(CltXact *anOwner);
virtual void reset();
virtual BodyParserFarm &farm() const = 0;
bool used() const { return isUsed; }
Size noteData(const ParseBuffer &data);
virtual void noteLeftovers(const ParseBuffer &data);
virtual void noteOverflow(const ParseBuffer &data);
protected:
int logCat() const;
virtual Size parse(const ParseBuffer &data) = 0;
ostream &dumpContext(ostream &os, const char *ctxBeg, Size ctxSize) const;
protected:
CltXact *theOwner;
bool isUsed;
private:
void resetSelf();
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1