configure.ac: if neither boost nor tr1 is available, die right away.
[wvstreams.git] / streams / wvmagicloopback.cc
blobe298bb0ec5e4987c928a5895212e3ec209cd854c
1 /*
2 * Worldvisions Weaver Software:
3 * Copyright (C) 1997-2004 Net Integration Technologies, Inc.
4 */
6 #include "wvmagicloopback.h"
8 WvMagicLoopback::WvMagicLoopback(size_t size)
9 : circle(size), loop()
14 void WvMagicLoopback::pre_select(SelectInfo &si)
16 loop.drain();
18 loop.pre_select(si);
20 if ((si.wants.readable && circle.used() > 0) ||
21 (si.wants.writable && circle.left() > 0))
22 si.msec_timeout = 0;
26 bool WvMagicLoopback::post_select(SelectInfo &si)
28 bool ret = WvStream::post_select(si);
30 if ((si.wants.readable && circle.used() > 0) ||
31 (si.wants.writable && circle.left() > 0))
32 ret = true;
34 return ret;
38 size_t WvMagicLoopback::uread(void *buf, size_t len)
40 return circle.get(buf, len);
44 size_t WvMagicLoopback::uwrite(const void *buf, size_t len)
46 len = circle.put(buf, len);
48 if (len > 0)
49 loop.uwrite("", 1); // Make select wake up
51 return len;