Exemple #1
0
        internal virtual int Receive(byte[] buffer, SocketFlags flags)
        {
            EnsureNotDisposed();

            if (buffer == null)
            {
                throw new ArgumentNullException("buffer");
            }

            int receivedBytes = _socketProxy.Receive(buffer, (int)flags);

            if (receivedBytes >= 0)
            {
                ReceiveStatus = ReceiveStatus.Received;
                return(receivedBytes);
            }

            if (ErrorProxy.ShouldTryAgain)
            {
                ReceiveStatus = ReceiveStatus.TryAgain;
                return(-1);
            }

            if (ErrorProxy.ContextWasTerminated)
            {
                ReceiveStatus = ReceiveStatus.Interrupted;
                return(-1);
            }

            throw new ZmqSocketException(ErrorProxy.GetLastError());
        }
        private void TryReadAvailableData()
        {
            int available = Math.Min(_connection.Available, RecvSize - _firstPacketLength);

            if (available > 0)
            {
                var size = _connection.Receive(_connetionRecvBuffer, _firstPacketLength, available,
                                               SocketFlags.None);

                _firstPacketLength += size;
            }
        }