Lawo.EmberPlusSharp.S101.FramingStream.WriteByte C# (CSharp) Method

WriteByte() private method

private WriteByte ( byte buffer, int offset, WriteBuffer writeBuffer ) : int
buffer byte
offset int
writeBuffer WriteBuffer
return int
        private int WriteByte(byte[] buffer, int offset, WriteBuffer writeBuffer)
        {
            // The body of this method should rather be inlined where it is called, but doing so seems to cause a huge
            // (>5x) perf hit.
            var currentByte = buffer[offset];

            if (this.previousWasEscapeByte)
            {
                this.previousWasEscapeByte = false;
                this.crc = Crc.AddCrcCcitt(this.crc, currentByte);
                currentByte = (byte)(currentByte ^ Frame.EscapeXor);
                ++offset;
            }
            else
            {
                if (currentByte < Frame.InvalidStart)
                {
                    this.crc = Crc.AddCrcCcitt(this.crc, currentByte);
                    ++offset;
                }
                else
                {
                    currentByte = Frame.EscapeByte;
                    this.previousWasEscapeByte = true;
                }
            }

            writeBuffer[writeBuffer.Count++] = currentByte;
            return offset;
        }
    }