summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas "Pixel" Noble <pixel@nobis-crew.org>2013-08-02 10:28:37 +0200
committerNicolas "Pixel" Noble <pixel@nobis-crew.org>2013-08-02 10:28:37 +0200
commit07f5a2245d7c15dfb6d716e307d2618a498886d9 (patch)
treeb68f8f80adb4e69f61d2ffb698e953311db1693c
parent11e1cea6667467b2fa5b5791c86b64444420a16a (diff)
Switching Handle's readU8() to be a Future, and using it in SimpleMustache.
-rw-r--r--src/Handle.cc12
-rw-r--r--src/SimpleMustache.cc2
2 files changed, 13 insertions, 1 deletions
diff --git a/src/Handle.cc b/src/Handle.cc
index 67eb412..361561a 100644
--- a/src/Handle.cc
+++ b/src/Handle.cc
@@ -94,6 +94,18 @@ ssize_t Balau::Handle::forceWrite(const void * _buf, size_t count, Events::BaseE
return total;
}
+Balau::Future<uint8_t> Balau::Handle::readU8() {
+ IO<Handle> t(this);
+ auto func = [t]() mutable -> uint8_t {
+ uint8_t r;
+ t->read(&r, 1);
+ return r;
+ };
+ Future<uint8_t> r;
+ r.m_run = func;
+ return r;
+}
+
void Balau::Handle::rseek(off_t offset, int whence) throw (GeneralException) {
if (canSeek())
throw GeneralException(String("Handle ") + getName() + " can seek, but rseek() not implemented (missing in class " + ClassName(this).c_str() + ")");
diff --git a/src/SimpleMustache.cc b/src/SimpleMustache.cc
index 6f7acdc..eef4b01 100644
--- a/src/SimpleMustache.cc
+++ b/src/SimpleMustache.cc
@@ -149,7 +149,7 @@ void Balau::SimpleMustache::setTemplate(IO<Handle> _h) {
bool beginning = false;
while (!h->isEOF()) {
- uint8_t c = h->readU8();
+ uint8_t c = h->readU8().get();
switch (state) {
case PLAIN:
if (c != srtMarker[0]) {