/*
- * $Id$
+ * Copyright (C) 1996-2017 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_ASYNCCALL_H
#define SQUID_ASYNCCALL_H
-//#include "cbdata.h"
#include "base/InstanceId.h"
#include "event.h"
-//#include "TextException.h"
+#include "RefCount.h"
/**
\defgroup AsynCallsAPI Async-Calls API
/**
\todo add unique call IDs
- \todo CBDATA_CLASS2 kids
+ \todo CBDATA_CLASS kids
\ingroup AsyncCallsAPI
*/
class AsyncCall: public RefCountable
friend class AsyncCallQueue;
AsyncCall(int aDebugSection, int aDebugLevel, const char *aName);
- AsyncCall();
- AsyncCall(const AsyncCall &);
virtual ~AsyncCall();
void make(); // fire if we can; handles general call debugging
private:
const char *isCanceled; // set to the cancelation reason by cancel()
+
+ // not implemented to prevent nil calls from being passed around and unknowingly scheduled, for now.
+ AsyncCall();
+ AsyncCall(const AsyncCall &);
};
inline
public:
AsyncCallT(int aDebugSection, int aDebugLevel, const char *aName,
const Dialer &aDialer): AsyncCall(aDebugSection, aDebugLevel, aName),
- dialer(aDialer) {}
+ dialer(aDialer) {}
- AsyncCallT(const RefCount<AsyncCallT<Dialer> > &o):
- AsyncCall(o->debugSection, o->debugLevel, o->name),
- dialer(o->dialer) {}
+ AsyncCallT(const AsyncCallT<Dialer> &o):
+ AsyncCall(o.debugSection, o.debugLevel, o.name),
+ dialer(o.dialer) {}
+
+ ~AsyncCallT() {}
CallDialer *getDialer() { return &dialer; }
virtual void fire() { dialer.dial(*this); }
Dialer dialer;
+
+private:
+ AsyncCallT & operator=(const AsyncCallT &); // not defined. call assignments not permitted.
};
template <class Dialer>
}
/** Call scheduling helper. Use ScheduleCallHere if you can. */
-extern bool ScheduleCall(const char *fileName, int fileLine, AsyncCall::Pointer &call);
+bool ScheduleCall(const char *fileName, int fileLine, AsyncCall::Pointer &call);
/** Call scheduling helper. */
#define ScheduleCallHere(call) ScheduleCall(__FILE__, __LINE__, (call))
-
#endif /* SQUID_ASYNCCALL_H */
+