/* Web Polygraph http://www.web-polygraph.org/
* (C) 2003-2006 The Measurement Factory
* Licensed under the Apache License, Version 2.0 */
#ifndef POLYGRAPH__PGL_AGENTSYM_H
#define POLYGRAPH__PGL_AGENTSYM_H
#include "base/UniqId.h"
#include "pgl/PglNumSym.h"
#include "pgl/HostsBasedSym.h"
class StrIdentifier;
class StringSym;
class SocketSym;
class PopModelSym;
class SslWrapSym;
// base class for robot and server symbols
class AgentSym: public HostsBasedSym {
public:
static String TheType;
public:
AgentSym(const String &aType);
AgentSym(const String &aType, PglRec *aRec);
virtual bool isA(const String &type) const;
String kind() const;
UniqId world() const;
RndDistr *httpVersions(const StrIdentifier &versionNames) const;
SocketSym *socket() const;
RndDistr *xactThink() const;
RndDistr *pconnUseLmt() const;
Time idlePconnTimeout() const;
PopModelSym *popModel() const;
bool msgTypes(Array<StringSym*> &types, Array<double> &tprobs) const;
RndDistr *msgTypes(const StrIdentifier &typeNames) const;
bool abortProb(double &p) const;
bool cookieSender(double &prob) const;
bool sslWraps(Array<SslWrapSym*> &syms, RndDistr *&sel) const;
protected:
virtual String msgTypesField() const = 0;
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1