/* Web Polygraph http://www.web-polygraph.org/
* (C) 2003-2006 The Measurement Factory
* Licensed under the Apache License, Version 2.0 */
#ifndef POLYGRAPH__CLIENT_SERVERREP_H
#define POLYGRAPH__CLIENT_SERVERREP_H
// client side "representative" of an origin server
// holds client side knowledge about a server
#include "xstd/NetAddr.h"
#include "base/UniqId.h"
class OLog;
class ObjId;
class RepHdr;
class ServerRep {
public:
ServerRep(const NetAddr &anAddr, int hostIdx);
const NetAddr &addr() const { return theAddr; }
int hostIdx() const { return theHostIdx; }
int serverIdx() const { return theSrvIdx; }
int requests() const { return theReqCount; }
int responses() const { return theRespCount; }
void serverIdx(int aSrvIdx) { theSrvIdx = aSrvIdx; }
void store(OLog &log) const;
void load(ILog &log);
void noteRequest(const ObjId &id);
void syncSrvInfo(const RepHdr &rep);
protected:
NetAddr theAddr;
int theHostIdx; // index into the HostMap
int theSrvIdx; // index into ServerRep map on Client
int theReqCount; // requests to this server
int theRespCount; // first-hand responses from this server
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1