Gwupe.Cloud.Messaging.WebSocketMessageHandler.GetMessage C# (CSharp) Method

GetMessage() private method

private GetMessage ( MemoryStream rawData, bool finalFrame, int opCode ) : Message
rawData System.IO.MemoryStream
finalFrame bool
opCode int
return Gwupe.Cloud.Messaging.API.Message
        private Message GetMessage(MemoryStream rawData, bool finalFrame, int opCode)
        {
            MemoryStream data = null;
            if (finalFrame)
            {

                // This is a final frame
                if (opCode == 0)
                {
                    // This is the final frame of a multi framed message
                    _messageBuffer.Write(rawData.GetBuffer(), 0, (int)rawData.Length);
                    data = _messageBuffer;
                    data.Position = 0;
                }
                else
                {
                    // This frame is a single frame
                    data = rawData;
                }
                String messageString = Encoding.UTF8.GetString(data.ToArray());
                if (!Regex.Match(messageString, "\"type\":\"Ping").Success)
                {
                    Logger.Debug("Received message [" + data.Length + "] (" + (opCode == 0 ? "multi" : "single") + "): " +
                                 SanitiseMessage(messageString));
                }
            }
            else
            {
                // This is a multi framed message
                if (opCode != 0)
                {
                    // This is the first frame of the multi framed message
                    _messageBuffer = new MemoryStream();
                    rawData.WriteTo(_messageBuffer);
                    return null;
                }
                // This is an intemediary frame of a multi framed message
                // Add it to the buffer and return
                _messageBuffer.Write(rawData.GetBuffer(), 0, (int)rawData.Length);
                return null;
            }
            return ParseDataToMessage(data);
        }