wvstreamfunex.cc
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
#include <wvstreamlist.h>
00008
#include <wvpipe.h>
00009
#include <wvlog.h>
00010
#include <wvmodem.h>
00011
00012 void concallback(
WvStream &con,
void *userdata)
00013 {
00014
WvStream &modem = *(
WvStream *)userdata;
00015
00016
char *str = con.
getline(0);
00017
if (str)
00018 modem.
print(
"%s\r", str);
00019 }
00020
00021 int main()
00022 {
00023
const char *argv1[] = {
"sh",
"-c",
00024
"while :; do echo foo; sleep 3; done", NULL };
00025
const char *argv2[] = {
"sh",
"-c",
00026
"while :; do echo snorkle; sleep 2; done", NULL };
00027
00028
WvLog log(
"logger", WvLog::Info);
00029
WvLog modemlog(
"modem", WvLog::Info);
00030
WvPipe pipe1(argv1[0], argv1,
false,
true,
false);
00031
WvPipe pipe2(argv2[0], argv2,
false,
true,
false);
00032
WvModem modem(
"/dev/ttyS2", O_RDWR);
00033
00034 pipe1.
autoforward(
log);
00035 pipe2.
autoforward(
log);
00036
wvcon->
setcallback(
concallback, &modem);
00037 modem.
autoforward(modemlog);
00038
00039
WvStreamList l;
00040 l.append(&pipe1,
false);
00041 l.append(&pipe2,
false);
00042 l.append(&modem,
false);
00043 l.append(
wvcon,
false);
00044
00045
if (!modem.
isok())
00046 modemlog(WvLog::Error,
"%s\n", modem.
errstr());
00047
00048
while (
wvcon->
isok())
00049 {
00050
if (l.
select(1000))
00051 l.
callback();
00052
else
00053
log(
"[TICK]\n");
00054 }
00055 }
Generated on Tue Oct 5 01:09:21 2004 for WvStreams by
1.3.7