private void FillBuffer()
{
Debug.Assert(_position == _length);
int interval;
do
{
if((interval = MicroSecondPingInterval) == 0)
{
// Wait indefinitely as we are not pinging.
interval = -1;
}
if(Socket.Poll(interval, SelectMode.SelectRead))
{
_length = Socket.Receive(_buffer);
_position = 0;
break;
}
Ping();
} while(true);
}