diff options
Diffstat (limited to 'lib/ReadJob.cc')
-rw-r--r-- | lib/ReadJob.cc | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/lib/ReadJob.cc b/lib/ReadJob.cc index bd63377..d5b3212 100644 --- a/lib/ReadJob.cc +++ b/lib/ReadJob.cc @@ -1,6 +1,7 @@ #include "ReadJob.h" +#include "HttpServ.h" -ReadJob::ReadJob(Handle & as, Handle & ad) : s(as), d(ad) { } +ReadJob::ReadJob(Handle * as, Handle * ad, String regex, int flags) : s(as), d(ad), current(0) { } ReadJob::~ReadJob() { } @@ -8,9 +9,31 @@ int ReadJob::Do() { int r; String buff; - while (!s.IsClosed()) { - s >> buff; - d << buff; + cerr << "ReadJob running...\n"; + + while (!s->IsClosed()) { + if (!current) { + try { + *s >> buff; + } + catch (IOAgain) { + return TASK_WAITING_HANDLE; + } + current = 0; + } + try { + *d << buff << endnl; + } + catch (IOAgain) { + current = 1; + return TASK_WAITING_HANDLE; + } if (buff == "") return TASK_DONE; } + + return TASK_DONE; +} + +String ReadJob::GetName() { + return (String("ReadJob from ") + s->GetName() + " to " + d->GetName()); } |