Fun.FunapiHttpTransport.DecodeMessage C# (CSharp) Méthode

DecodeMessage() private méthode

private DecodeMessage ( string header, ArraySegment body ) : void
header string
body ArraySegment
Résultat void
        private void DecodeMessage(string header, ArraySegment<byte> body)
        {
            StringBuilder headers = new StringBuilder();
            headers.AppendFormat("{0}{1}{2}{3}", kVersionHeaderField, kHeaderFieldDelimeter, FunapiVersion.kProtocolVersion, kHeaderDelimeter);

            string[] lines = header.Replace("\r", "").Split('\n');
            foreach (string n in lines)
            {
                if (n.Length > 0)
                {
                    string[] tuple = n.Split(kHeaderSeparator, StringSplitOptions.RemoveEmptyEntries);
                    string key = tuple[0].ToLower();
                    string value = "";

                    if (tuple.Length >= 2)
                        value = tuple[1];

                    switch (key)
                    {
                    case "content-type":
                        break;
                    case "set-cookie":
                        str_cookie_ = value;
                        DebugUtils.DebugLog("Set Cookie : {0}", str_cookie_);
                        break;
                    case "content-length":
                        headers.AppendFormat("{0}{1}{2}{3}", kLengthHeaderField, kHeaderFieldDelimeter, value, kHeaderDelimeter);
                        break;
                    case "x-ifun-enc":
                        headers.AppendFormat("{0}{1}{2}{3}", kEncryptionHeaderField, kHeaderFieldDelimeter, value, kHeaderDelimeter);
                        break;
                    default:
                        headers.AppendFormat("{0}{1}{2}{3}", tuple[0], kHeaderFieldDelimeter, value, kHeaderDelimeter);
                        break;
                    }
                }
                else {
                    break;
                }
            }
            headers.Append(kHeaderDelimeter);

            byte[] header_bytes = System.Text.Encoding.ASCII.GetBytes(headers.ToString());

            // Checks buffer space
            int total_size = header_bytes.Length + body.Count;
            received_size_ += total_size;
            CheckReceiveBuffer();

            // Copy to buffer
            // NOTE: offset should be calculated after CheckReceiveBuffer()
            //       (CheckReceiveBuffer() may change received_size_)
            int offset = received_size_ - total_size;
            Buffer.BlockCopy(header_bytes, 0, receive_buffer_, offset, header_bytes.Length);
            Buffer.BlockCopy(body.Array, 0, receive_buffer_, offset + header_bytes.Length, body.Count);

            // Decoding a message
            TryToDecodeMessage();
        }