Griffin.Net.Protocols.MicroMsg.MicroMessageDecoder.ProcessContent C# (CSharp) Method

ProcessContent() private method

private ProcessContent ( ISocketBuffer arg ) : bool
arg ISocketBuffer
return bool
        private bool ProcessContent(ISocketBuffer arg)
        {
            if (_bytesLeftForCurrentState == 0 || _bytesLeftInSocketBuffer == 0)
                return false;

            var bytesToCopy = Math.Min(_bytesLeftForCurrentState, _bytesLeftInSocketBuffer);
            _contentStream.Write(arg.Buffer, _socketBufferOffset, bytesToCopy);
            _bytesLeftInSocketBuffer -= bytesToCopy;
            _bytesLeftForCurrentState -= bytesToCopy;
            _socketBufferOffset += bytesToCopy;

            if (_bytesLeftForCurrentState > 0)
            {
                return false;
            }

            _bytesLeftForCurrentState = sizeof(short);
            _headerOffset = 0;
            _stateMethod = ReadHeaderLength;
            _contentStream.Position = 0;

            
            if (_contentName == "stream")
                MessageReceived(_contentStream);
            else if (_contentName == "byte[]")
            {
                MessageReceived(_contentStream);
            }
            else
            {
                var message = _serializer.Deserialize(_contentName, _contentStream);
                MessageReceived(message);
            }

            return true;
        }