Beispiel #1
0
 ReturnCode receive(IOBuffer &buffer)
 {
     MSS_BEGIN(ReturnCode);
     MSS(state == Connected, InvalidState);
     MSS(!buffer.full());
     auto nrReceived = ::recv(fid, buffer.freeData(), buffer.freeSize(), 0);
     MSS(nrReceived != -1, CouldNotReceive);
     if (nrReceived == 0)
     {
         //Peer closed connection
         changeState(Closed);
         MSS_Q(ReturnCode::ConnectionWasClosed);
     }
     else
         MSS(buffer.scrollEnd(nrReceived));
     MSS_END();
 }