/*
- * $Id: StatHist.cc,v 1.7 1998/04/24 07:09:28 wessels Exp $
+ * $Id: StatHist.cc,v 1.8 1998/04/27 17:25:03 rousskov Exp $
*
* DEBUG: section 62 Generic Histogram
* AUTHOR: Duane Wessels
xmemcpy(Dest->bins, Orig->bins, Dest->capacity * sizeof(*Dest->bins));
}
+/*
+ * same as statHistCopy but will do nothing if capacities do not match; the
+ * latter happens, for example, when #peers changes during reconfiguration;
+ * if it happens too often we should think about more general solution..
+ */
+void
+statHistSafeCopy(StatHist * Dest, const StatHist * Orig)
+{
+ assert(Dest && Orig);
+ assert(Dest->bins);
+ if (Dest->capacity == Orig->capacity)
+ statHistCopy(Dest, Orig);
+}
+
void
statHistCount(StatHist * H, double val)
{
extern double median_svc_get(int, int);
extern void pconnHistCount(int, int);
-void statHistClean(StatHist * H);
-void statHistCount(StatHist * H, double val);
-void statHistCopy(StatHist * Dest, const StatHist * Orig);
-double statHistDeltaMedian(const StatHist * A, const StatHist * B);
-void statHistDump(const StatHist * H, StoreEntry * sentry, StatHistBinDumper bd);
-void statHistLogInit(StatHist * H, int capacity, double min, double max);
-void statHistEnumInit(StatHist * H, int last_enum);
-void statHistIntDumper(StoreEntry * sentry, int idx, double val, double size, int count);
-
+/* StatHist */
+extern void statHistClean(StatHist * H);
+extern void statHistCount(StatHist * H, double val);
+extern void statHistCopy(StatHist * Dest, const StatHist * Orig);
+extern void statHistSafeCopy(StatHist * Dest, const StatHist * Orig);
+extern double statHistDeltaMedian(const StatHist * A, const StatHist * B);
+extern void statHistDump(const StatHist * H, StoreEntry * sentry, StatHistBinDumper bd);
+extern void statHistLogInit(StatHist * H, int capacity, double min, double max);
+extern void statHistEnumInit(StatHist * H, int last_enum);
+extern void statHistIntDumper(StoreEntry * sentry, int idx, double val, double size, int count);
/* MemMeter */
extern void memMeterSyncHWater(MemMeter * m);
/*
- * $Id: stat.cc,v 1.244 1998/04/24 06:08:21 wessels Exp $
+ * $Id: stat.cc,v 1.245 1998/04/27 17:25:01 rousskov Exp $
*
* DEBUG: section 18 Cache Manager Statistics
* AUTHOR: Harvest Derived
statHistCopy(&dest->icp.client_svc_time, &orig->icp.client_svc_time);
statHistCopy(&dest->cd.server_svc_time, &orig->cd.server_svc_time);
statHistCopy(&dest->icp.server_svc_time, &orig->icp.server_svc_time);
- statHistCopy(&dest->cd.peer_choice_count, &orig->cd.peer_choice_count);
- statHistCopy(&dest->cd.peer_ichoice_count, &orig->cd.peer_ichoice_count);
+ statHistSafeCopy(&dest->cd.peer_choice_count, &orig->cd.peer_choice_count);
+ statHistSafeCopy(&dest->cd.peer_ichoice_count, &orig->cd.peer_ichoice_count);
statHistCopy(&dest->cd.on_xition_count, &orig->cd.on_xition_count);
#endif
}