12#define RESIPROCATE_SUBSYSTEM Subsystem::TRANSPORT
19 mSocket = ::socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
22 memset(&loopback, 0,
sizeof(loopback));
23 loopback.sin_family = AF_INET;
24 loopback.sin_port = 0;
25 loopback.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
27 ::bind( mSocket,
reinterpret_cast<sockaddr*
>(&loopback),
sizeof(loopback));
28 memset(&mWakeupAddr, 0,
sizeof(mWakeupAddr));
29 int len =
sizeof(mWakeupAddr);
30 int error = getsockname(mSocket, (sockaddr *)&mWakeupAddr, &len);
32 error= connect(mSocket, &mWakeupAddr,
sizeof(mWakeupAddr));
44 mReadThing = mPipe[0];
79 recv(mSocket, rdBuf,
sizeof(rdBuf), 0);
83 while ( (x=read(mPipe[0], rdBuf,
sizeof(rdBuf))) ==
sizeof(rdBuf) )
113 static char wakeUp[] =
"w";
116 ioctlsocket(mSocket, FIONREAD, &readSize);
120 int count = send(mSocket, wakeUp,
sizeof(wakeUp), 0);
124 ssize_t res = write(mPipe[1], wakeUp,
sizeof(wakeUp));
126 if ( res == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) )
#define resip_assert(x)
This file needs to work for both C and C++ code.
Object-oriented wrapper for your platform's file-descriptor set.
bool readyToRead(Socket fd)
virtual void processPollEvent(FdPollEventMask mask)
Called by PollGrp when activity is possible.
void process(FdSet &fdset)
cleanup signalled fd
virtual ~SelectInterruptor()
void interrupt()
cause the 'artificial' fd to signal
virtual void handleProcessNotification()
Called by the stack when messages are posted to it.
void buildFdSet(FdSet &fdset)
Used to add the 'artificial' fd to the fdset that will be responsible for interrupting a subsequent s...
dcm! – add UnusedChecking(_enum) below;
unsigned short FdPollEventMask
void initNetwork()
set up network - does nothing in unix but needed for windows
bool makeSocketNonBlocking(Socket fd)