/*
- * $Id$
+ * Copyright (C) 1996-2018 The Squid Software Foundation and contributors
*
+ * Squid software is distributed under GPLv2+ license and includes
+ * contributions from numerous individuals and organizations.
+ * Please see the COPYING and CONTRIBUTORS files for details.
*/
#ifndef SQUID_IPC_KIDS_H
#define SQUID_IPC_KIDS_H
-#include "Array.h"
#include "ipc/Kid.h"
+#include <vector>
/// a collection of kids
class Kids
Kids& operator= (const Kids&); ///< not implemented
public:
- /// maintain n kids
- void init(size_t n);
+ /// initialize all kid records based on Config
+ void init();
/// returns kid by pid
Kid* find(pid_t pid);
/// whether all kids are hopeless
bool allHopeless() const;
+ /// forgets all failures in all kids
+ void forgetAllFailures();
+
+ /// forgets all failures in hopeless kids that were dead for a long time
+ /// \returns seconds till the next check (zero if there are no hopeless kids left)
+ time_t forgetOldFailures();
+
/// whether all kids called exited happy
bool allExitedHappy() const;
size_t count() const;
private:
- Vector<Kid> storage;
+ std::vector<Kid> storage;
};
extern Kids TheKids; ///< All kids being maintained
typedef char KidName[64]; ///< Squid process name (e.g., "squid-coord")
extern KidName TheKidName; ///< current Squid process name
-
#endif /* SQUID_IPC_KIDS_H */
+