/* Web Polygraph http://www.web-polygraph.org/
* (C) 2003-2006 The Measurement Factory
* Licensed under the Apache License, Version 2.0 */
#include "base/polygraph.h"
#include "xstd/Rnd.h"
#include "pgl/AddrMapSym.h"
#include "runtime/AddrMapItems.h"
/* AddrMapItem */
AddrMapItem::AddrMapItem(const NetAddr &aName): theName(aName) {
Assert(theName);
}
/* Name2NameMapItem */
Name2NameMapItem::Name2NameMapItem(const NetAddr &aName): AddrMapItem(aName) {
Assert(!theName.isDomainName());
}
/* Name2AddrMapItem */
Name2AddrMapItem::Name2AddrMapItem(const NetAddr &aName, const NetAddr &anAddr):
AddrMapItem(aName), theAddr(anAddr) {
Assert(theAddr);
Assert(!theAddr.isDomainName());
}
/* Name2AddrsMapItem */
Name2AddrsMapItem::Name2AddrsMapItem(const NetAddr &aName, const Array<NetAddr*> &anAddrs):
AddrMapItem(aName) {
theAddrs.stretch(anAddrs.count());
for (int i = 0; i < anAddrs.count(); ++i) {
const NetAddr &addr = *anAddrs[i];
Assert(!addr.isDomainName());
theAddrs.append(new NetAddr(addr));
}
}
Name2AddrsMapItem::~Name2AddrsMapItem() {
while (theAddrs.count()) delete theAddrs.pop();
}
const NetAddr &Name2AddrsMapItem::selectAddr() const {
static RndGen rng;
const int idx = rng(0, theAddrs.count());
return addrAt(idx);
}
syntax highlighted by Code2HTML, v. 0.9.1