#include "cbdata.h"
#include "comm/forward.h"
#include "dlink.h"
-#include "ip/Address.h"
#include "HelperChildConfig.h"
+#include "HelperReply.h"
+#include "ip/Address.h"
class helper_request;
-typedef void HLPSCB(void *, void *lastserver, char *buf);
+typedef void HLPCB(void *, const HelperReply &reply);
class helper
{
public:
- inline helper(const char *name) : cmdline(NULL), id_name(name), eom('\n') {}
+ inline helper(const char *name) :
+ cmdline(NULL),
+ id_name(name),
+ ipc_type(0),
+ last_queue_warn(0),
+ last_restart(0),
+ eom('\n') {
+ memset(&stats, 0, sizeof(stats));
+ }
~helper();
public:
class statefulhelper : public helper
{
public:
- inline statefulhelper(const char *name) : helper(name) {};
+ inline statefulhelper(const char *name) : helper(name), datapool(NULL), IsAvailable(NULL), OnEmptyQueue(NULL) {};
inline ~statefulhelper() {};
public:
dlink_node link;
struct _helper_flags {
- unsigned int busy:1;
- unsigned int writing:1;
- unsigned int closing:1;
- unsigned int shutdown:1;
- unsigned int reserved:1;
+ bool busy;
+ bool writing;
+ bool closing;
+ bool shutdown;
+ bool reserved;
} flags;
struct {
public:
MEMPROXY_CLASS(helper_stateful_request);
char *buf;
- HLPSCB *callback;
+ HLPCB *callback;
int placeholder; /* if 1, this is a dummy request waiting for a stateful helper to become available */
void *data;
};
MEMPROXY_CLASS_INLINE(helper_stateful_request);
/* helper.c */
-SQUIDCEXTERN void helperOpenServers(helper * hlp);
-SQUIDCEXTERN void helperStatefulOpenServers(statefulhelper * hlp);
-SQUIDCEXTERN void helperSubmit(helper * hlp, const char *buf, HLPCB * callback, void *data);
-SQUIDCEXTERN void helperStatefulSubmit(statefulhelper * hlp, const char *buf, HLPSCB * callback, void *data, helper_stateful_server * lastserver);
-SQUIDCEXTERN void helperStats(StoreEntry * sentry, helper * hlp, const char *label = NULL);
-SQUIDCEXTERN void helperStatefulStats(StoreEntry * sentry, statefulhelper * hlp, const char *label = NULL);
-SQUIDCEXTERN void helperShutdown(helper * hlp);
-SQUIDCEXTERN void helperStatefulShutdown(statefulhelper * hlp);
-SQUIDCEXTERN void helperStatefulReleaseServer(helper_stateful_server * srv);
-SQUIDCEXTERN void *helperStatefulServerGetData(helper_stateful_server * srv);
+void helperOpenServers(helper * hlp);
+void helperStatefulOpenServers(statefulhelper * hlp);
+void helperSubmit(helper * hlp, const char *buf, HLPCB * callback, void *data);
+void helperStatefulSubmit(statefulhelper * hlp, const char *buf, HLPCB * callback, void *data, helper_stateful_server * lastserver);
+void helperStats(StoreEntry * sentry, helper * hlp, const char *label = NULL);
+void helperStatefulStats(StoreEntry * sentry, statefulhelper * hlp, const char *label = NULL);
+void helperShutdown(helper * hlp);
+void helperStatefulShutdown(statefulhelper * hlp);
+void helperStatefulReleaseServer(helper_stateful_server * srv);
+void *helperStatefulServerGetData(helper_stateful_server * srv);
#endif /* SQUID_HELPER_H */