Created
December 13, 2011 03:59
-
-
Save mpage/1470499 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int sd = GetSocket(); | |
<SNIP> | |
for (int i=0; i < 10; i++) { | |
// Don't read just one buffer and then move on. This is faster | |
// if there is a lot of incoming. | |
// But don't read indefinitely. Give other sockets a chance to run. | |
// NOTICE, we're reading one less than the buffer size. | |
// That's so we can put a guard byte at the end of what we send | |
// to user code. | |
int r = read (sd, readbuffer, sizeof(readbuffer) - 1); | |
//cerr << "<R:" << r << ">"; | |
if (r > 0) { | |
total_bytes_read += r; | |
// Add a null-terminator at the the end of the buffer | |
// that we will send to the callback. | |
// DO NOT EVER CHANGE THIS. We want to explicitly allow users | |
// to be able to depend on this behavior, so they will have | |
// the option to do some things faster. Additionally it's | |
// a security guard against buffer overflows. | |
readbuffer [r] = 0; | |
_DispatchInboundData (readbuffer, r); | |
} | |
else if (r == 0) { | |
break; | |
} | |
else { | |
// Basically a would-block, meaning we've read everything there is to read. | |
break; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment