diff options
Diffstat (limited to 'lib/ReadJob.cc')
-rw-r--r-- | lib/ReadJob.cc | 104 |
1 files changed, 52 insertions, 52 deletions
diff --git a/lib/ReadJob.cc b/lib/ReadJob.cc index 63557c2..c31b894 100644 --- a/lib/ReadJob.cc +++ b/lib/ReadJob.cc @@ -1,52 +1,52 @@ -#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include "ReadJob.h"
-#include "HttpServ.h"
-#include "Regex.h"
-#include "gettext.h"
-
-ReadJob::ReadJob(Handle * as, Handle * ad, const Regex & aregex) : s(as), d(ad), regex(&aregex) {
- s->SetNonBlock();
- d->SetNonBlock();
- WaitFor(s, W4_READING);
-}
-
-ReadJob::~ReadJob() { }
-
-int ReadJob::Do() throw (GeneralException) {
- String buff;
-
- switch (current) {
- case 0:
- try {
- *s >> buff;
- }
- catch (IOAgain e) {
- WaitFor(s, W4_READING);
- Suspend(TASK_ON_HOLD);
- }
- case 1:
- try {
- *d << buff << endnl;
- }
- catch (IOAgain e) {
- current = 1;
- WaitFor(d, W4_WRITING);
- Suspend(TASK_ON_HOLD);
- }
- current = 0;
- if (regex->Match(buff)) return TASK_DONE;
- }
-
- if (!s->IsClosed()) {
- WaitFor(s, W4_READING);
- Suspend(TASK_ON_HOLD);
- }
-
- return TASK_DONE;
-}
-
-String ReadJob::GetName() {
- return (String(_("ReadJob from ")) + s->GetName() + _(" to ") + d->GetName());
-}
+#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include "ReadJob.h" +#include "HttpServ.h" +#include "Regex.h" +#include "gettext.h" + +ReadJob::ReadJob(Handle * as, Handle * ad, const Regex & aregex) : s(as), d(ad), regex(&aregex) { + s->SetNonBlock(); + d->SetNonBlock(); + WaitFor(s, W4_READING); +} + +ReadJob::~ReadJob() { } + +int ReadJob::Do() throw (GeneralException) { + String buff; + + switch (current) { + case 0: + try { + *s >> buff; + } + catch (IOAgain e) { + WaitFor(s, W4_READING); + Suspend(TASK_ON_HOLD); + } + case 1: + try { + *d << buff << endnl; + } + catch (IOAgain e) { + current = 1; + WaitFor(d, W4_WRITING); + Suspend(TASK_ON_HOLD); + } + current = 0; + if (regex->Match(buff)) return TASK_DONE; + } + + if (!s->IsClosed()) { + WaitFor(s, W4_READING); + Suspend(TASK_ON_HOLD); + } + + return TASK_DONE; +} + +String ReadJob::GetName() { + return (String(_("ReadJob from ")) + s->GetName() + _(" to ") + d->GetName()); +} |