00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "wvloopback.h"
00010 #include "wvsocketpair.h"
00011 #include "wvmoniker.h"
00012 #include "wvlinkerhack.h"
00013
00014 WV_LINK(WvLoopback);
00015
00016 static IWvStream *create_loopback(WvStringParm, IObject *)
00017 {
00018 return new WvLoopback();
00019 }
00020
00021 static WvMoniker<IWvStream> reg("loop", create_loopback);
00022
00023
00024 WvLoopback::WvLoopback()
00025 {
00026 int socks[2];
00027
00028 if (wvsocketpair(SOCK_STREAM, socks))
00029 {
00030 seterr(errno);
00031 return;
00032 }
00033
00034 rfd = socks[0];
00035 wfd = socks[1];
00036
00037 set_close_on_exec(true);
00038 set_nonblock(true);
00039 }