diff options
| author | Sam Varshavchik | 2013-08-19 16:39:41 -0400 | 
|---|---|---|
| committer | Sam Varshavchik | 2013-08-25 14:43:51 -0400 | 
| commit | 9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch) | |
| tree | 7a81a04cb51efb078ee350859a64be2ebc6b8813 /libmail/runlater.H | |
| parent | a9520698b770168d1f33d6301463bb70a19655ec (diff) | |
| download | courier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2 | |
Initial checkin
Imported from subversion report, converted to git. Updated all paths in
scripts and makefiles, reflecting the new directory hierarchy.
Diffstat (limited to 'libmail/runlater.H')
| -rw-r--r-- | libmail/runlater.H | 46 | 
1 files changed, 46 insertions, 0 deletions
| diff --git a/libmail/runlater.H b/libmail/runlater.H new file mode 100644 index 0000000..995ac02 --- /dev/null +++ b/libmail/runlater.H @@ -0,0 +1,46 @@ +/* +** Copyright 2002, Double Precision Inc. +** +** See COPYING for distribution information. +*/ +#ifndef libmail_runlater_H +#define libmail_runlater_H + +#include "libmail_config.h" +#include "objectmonitor.H" + +#include <queue> + +/* +** Local mail drivers are immediate - they implement the request and invoke +** the callback function without delay.  Some requests iterate over an entire +** message set (such as mail::copyMessages).  Each callback function +** iterates to the next message.  With large message sets the stack could +** grow quite big.  The solution is the mail::runLater interface.  After +** calling RunLater(), the caller MUST immediately terminate.  The stack +** will unwind back to mail::account::process(), which then invokes the +** checkRunLater() method. +*/ + +LIBMAIL_START + +class runLater; + +class runLater : public mail::obj { +public: +	runLater(); +	~runLater(); + +	static std::queue<mail::ptr<runLater> > runningLater; + +	void RunLater(); + +	virtual void RunningLater()=0; + +	static void checkRunLater(int &timeout); +}; + +LIBMAIL_END + +#endif + | 
