Ejemplo n.º 1
0
        public void CanDeSerialize()
        {
            var session = new DeserializationSession()
            {
                ParsedValue = new SDPLib.SDP()
            };
            var version = SessionNameSerializer.Instance.ReadValue("s=Gamarjoba".ToByteArray(), session);

            Assert.Equal("Gamarjoba".ToByteArray(), session.ParsedValue.SessionName);
        }
Ejemplo n.º 2
0
        public void CanDeSerialize()
        {
            var testUrl = "https://github.com/tvildo";
            var session = new DeserializationSession()
            {
                ParsedValue = new SDPLib.SDP()
            };
            var version = UriSerializer.Instance.ReadValue($"u={testUrl}".ToByteArray(), session);

            Assert.Equal(testUrl, session.ParsedValue.Uri.AbsoluteUri);
        }
Ejemplo n.º 3
0
        public void CanDeSerialize()
        {
            var testEmail = "[email protected] (Jane Doe)";
            var session   = new DeserializationSession()
            {
                ParsedValue = new SDPLib.SDP()
            };
            var version = EmailAddressSerializer.Instance.ReadValue($"e={testEmail}".ToByteArray(), session);

            Assert.Equal(testEmail, session.ParsedValue.EmailNumbers.First());
        }
Ejemplo n.º 4
0
        public void CanDeSerialize()
        {
            var testPhone = "+1 617 555-6011";
            var session   = new DeserializationSession()
            {
                ParsedValue = new SDPLib.SDP()
            };
            var version = PhoneNumberSerializer.Instance.ReadValue($"p={testPhone}".ToByteArray(), session);

            Assert.Equal(testPhone, session.ParsedValue.PhoneNumbers.First());
        }
Ejemplo n.º 5
0
        public static async Task <SDP> ReadSDP(PipeReader reader)
        {
            var session = new DeserializationSession();

            DeserializationState stateFn = Serializer.Instance.ReadValue;

            while (true)
            {
                ReadResult result = await reader.ReadAsync();

                ReadOnlySequence <byte> buffer   = result.Buffer;
                SequencePosition?       position = null;

                do
                {
                    // Look for a EOL in the buffer
                    position = buffer.PositionOf(ByteLF);

                    if (position != null)
                    {
                        stateFn = stateFn(TrimSDPLineCR(buffer.Slice(0, position.Value)), session);

                        buffer = buffer.Slice(buffer.GetPosition(1, position.Value));
                    }
                }while (position != null);

                reader.AdvanceTo(buffer.Start, buffer.End);

                if (result.IsCompleted)
                {
                    if (!buffer.IsEmpty)
                    {
                        stateFn = stateFn(buffer.Slice(buffer.Start, buffer.End).ToSpan(), session);
                    }

                    break;
                }
            }

            EnsureWasParsed(stateFn);

            // Mark the PipeReader as complete
            reader.Complete();

            return(session.ParsedValue);
        }
Ejemplo n.º 6
0
        public static SDP ReadSDP(ReadOnlySpan <byte> data)
        {
            var session = new DeserializationSession();
            DeserializationState stateFn = Serializer.Instance.ReadValue;
            var remainingSlice           = data;
            int position = -1;

            while ((position = remainingSlice.IndexOf(ByteLF)) != -1)
            {
                stateFn        = stateFn(TrimSDPLineCR(remainingSlice.Slice(0, position)), session);
                remainingSlice = remainingSlice.Slice(position + 1);
            }

            if (remainingSlice.Length > 0)
            {
                stateFn = stateFn(remainingSlice, session);
            }

            EnsureWasParsed(stateFn);
            return(session.ParsedValue);
        }
Ejemplo n.º 7
0
        public void CanDeSerialize()
        {
            var field   = $"o=jdoe 2890844526 2890842807 IN IP4 10.47.16.5".ToByteArray();
            var session = new DeserializationSession()
            {
                ParsedValue = new SDP()
            };
            var stateFn = OriginSerializer.Instance.ReadValue(field, session);

            var value = new Origin()
            {
                UserName       = "******",
                SessionId      = 2890844526,
                SessionVersion = 2890842807,
                Nettype        = "IN",
                AddrType       = "IP4",
                UnicastAddress = "10.47.16.5"
            };

            DeserializationState nextStateFn = SessionNameSerializer.Instance.ReadValue;

            Assert.Equal(stateFn, nextStateFn);
            Assert.True(CheckIfOriginSareSame(session.ParsedValue.Origin, value));
        }