/// <summary> /// This test case is added to demonstrate the risk of handing a byte array to a constructor. /// A ctor can only return a single object even if the byte array it is given may contain more /// than one object. /// This violates OO as the caller is burdened with having to now about what should be a feature /// of using the class it is calling. /// </summary> public static void BackToBackRtspMessages() { System.Console.Clear(); Console.WriteLine("TestProcessFrameData Case3(): Two back to back RTSP Responses"); Console.WriteLine("Correct output would be 2 'ProcessInterleaveData():...' detailing RTSP responses CSeq 34 and 35:"); Console.WriteLine(""); TestFramework tf = new TestFramework(); Media.Rtsp.RtspMessage keepAlive = new Media.Rtsp.RtspMessage(Media.Rtsp.RtspMessageType.Response); keepAlive.RtspStatusCode = Media.Rtsp.RtspStatusCode.OK; keepAlive.CSeq = 34; keepAlive.SetHeader(Media.Rtsp.RtspHeaders.Session, "A9B8C7D6"); keepAlive.SetHeader(Media.Rtsp.RtspHeaders.Date, DateTime.Now.ToUniversalTime().ToString("r")); byte[] buffer = keepAlive.Prepare().ToArray(); tf.Send(buffer); keepAlive = new Media.Rtsp.RtspMessage(Media.Rtsp.RtspMessageType.Response); keepAlive.RtspStatusCode = Media.Rtsp.RtspStatusCode.OK; keepAlive.CSeq = 35; keepAlive.SetHeader(Media.Rtsp.RtspHeaders.Session, "A9B8C7D6"); keepAlive.SetHeader(Media.Rtsp.RtspHeaders.Date, DateTime.Now.ToUniversalTime().ToString("r")); buffer = keepAlive.Prepare().ToArray(); tf.Send(buffer); // Kick of the processing eventually ending up in RtpClient.ProcessFrameData() tf.HaveRtpClientWorkerThreadProcessSocketData(); }
private static void Issue17245_Case2(int breakingPaketLength) { int sequenceNumber = 0x3030; // "00" System.Console.Clear(); Console.WriteLine("TestProcessFrameData Issue17245_Case2(): Interleaved RTSPResponse"); Console.WriteLine("breakingPaketLength = " + breakingPaketLength); Console.WriteLine("Correct output is 3 rows saying 'ProcessRtpPacket()...', 1 yellow row, and finaly a single row 'ProcessRtpPacket()...':"); Console.WriteLine(""); TestFramework tf = new TestFramework(); //Console.WriteLine(line + sequenceNumber); byte[] buffer = GeneratePayload(1400); Media.Rtp.RtpPacket p1 = new Media.Rtp.RtpPacket(2, false, false, false, 0, 0, _senderSSRC, sequenceNumber++, _timeStamp, buffer); buffer = p1.Prepare().ToArray(); tf.Send(GenerateEncapsulatingHeader(buffer.Length)); tf.Send(buffer); //Console.WriteLine(line + sequenceNumber); buffer = GeneratePayload(1400); Media.Rtp.RtpPacket p2 = new Media.Rtp.RtpPacket(2, false, false, false, 0, 0, _senderSSRC, sequenceNumber++, _timeStamp, buffer); buffer = p2.Prepare().ToArray(); tf.Send(GenerateEncapsulatingHeader(buffer.Length)); tf.Send(buffer); //Console.WriteLine(line + sequenceNumber); buffer = GeneratePayload(breakingPaketLength); Media.Rtp.RtpPacket p3 = new Media.Rtp.RtpPacket(2, false, false, false, 0, 0, _senderSSRC, sequenceNumber++, _timeStamp, buffer); buffer = p3.Prepare().ToArray(); tf.Send(GenerateEncapsulatingHeader(buffer.Length)); tf.Send(buffer); Media.Rtsp.RtspMessage keepAlive = new Media.Rtsp.RtspMessage(Media.Rtsp.RtspMessageType.Response); keepAlive.RtspStatusCode = Media.Rtsp.RtspStatusCode.OK; keepAlive.CSeq = 34; keepAlive.SetHeader(Media.Rtsp.RtspHeaders.Session, "A9B8C7D6"); keepAlive.SetHeader(Media.Rtsp.RtspHeaders.UserAgent, "Testing $UserAgent $009\r\n$\0:\0"); keepAlive.SetHeader("Ignore", "$UserAgent $009\r\n$\0\0\aRTSP/1.0"); keepAlive.SetHeader("$", string.Empty); keepAlive.SetHeader(Media.Rtsp.RtspHeaders.Date, DateTime.Now.ToUniversalTime().ToString("r")); buffer = keepAlive.Prepare().ToArray(); tf.Send(buffer); //Console.WriteLine(line + sequenceNumber); buffer = GeneratePayload(1400); Media.Rtp.RtpPacket p4 = new Media.Rtp.RtpPacket(2, false, false, false, 0, 0, _senderSSRC, sequenceNumber++, _timeStamp, buffer); buffer = p4.Prepare().ToArray(); tf.Send(GenerateEncapsulatingHeader(buffer.Length)); tf.Send(buffer); // Kick of the processing eventually ending up in RtpClient.ProcessFrameData() tf.HaveRtpClientWorkerThreadProcessSocketData(); }
private static void Issue17245_Case2(int breakingPaketLength) { int sequenceNumber = 0x3030; // "00" System.Console.Clear(); Console.WriteLine("TestProcessFrameData Issue17245_Case2(): Interleaved RTSPResponse"); Console.WriteLine("breakingPaketLength = " + breakingPaketLength); Console.WriteLine("Correct output is 3 rows saying 'ProcessRtpPacket()...', 1 yellow row, and finaly a single row 'ProcessRtpPacket()...':"); Console.WriteLine(""); TestFramework tf = new TestFramework(); //Console.WriteLine(line + sequenceNumber); byte[] buffer = GeneratePayload(1400); Media.Rtp.RtpPacket p1 = new Media.Rtp.RtpPacket(2, false, false, false, 0, 0, _senderSSRC, sequenceNumber++, _timeStamp, buffer); buffer = p1.Prepare().ToArray(); tf.Send(GenerateEncapsulatingHeader(buffer.Length)); tf.Send(buffer); //Console.WriteLine(line + sequenceNumber); buffer = GeneratePayload(1400); Media.Rtp.RtpPacket p2 = new Media.Rtp.RtpPacket(2, false, false, false, 0, 0, _senderSSRC, sequenceNumber++, _timeStamp, buffer); buffer = p2.Prepare().ToArray(); tf.Send(GenerateEncapsulatingHeader(buffer.Length)); tf.Send(buffer); //Console.WriteLine(line + sequenceNumber); buffer = GeneratePayload(breakingPaketLength); Media.Rtp.RtpPacket p3 = new Media.Rtp.RtpPacket(2, false, false, false, 0, 0, _senderSSRC, sequenceNumber++, _timeStamp, buffer); buffer = p3.Prepare().ToArray(); tf.Send(GenerateEncapsulatingHeader(buffer.Length)); tf.Send(buffer); Media.Rtsp.RtspMessage keepAlive = new Media.Rtsp.RtspMessage(Media.Rtsp.RtspMessageType.Response); keepAlive.StatusCode = Media.Rtsp.RtspStatusCode.OK; keepAlive.CSeq = 34; keepAlive.SetHeader(Media.Rtsp.RtspHeaders.Session, "A9B8C7D6"); keepAlive.SetHeader(Media.Rtsp.RtspHeaders.UserAgent, "Testing $UserAgent $009\r\n$\0:\0"); keepAlive.SetHeader("Ignore", "$UserAgent $009\r\n$\0\0\aRTSP/1.0"); keepAlive.SetHeader("$", string.Empty); keepAlive.SetHeader(Media.Rtsp.RtspHeaders.Date, DateTime.Now.ToUniversalTime().ToString("r")); buffer = keepAlive.Prepare().ToArray(); tf.Send(buffer); //Console.WriteLine(line + sequenceNumber); buffer = GeneratePayload(1400); Media.Rtp.RtpPacket p4 = new Media.Rtp.RtpPacket(2, false, false, false, 0, 0, _senderSSRC, sequenceNumber++, _timeStamp, buffer); buffer = p4.Prepare().ToArray(); tf.Send(GenerateEncapsulatingHeader(buffer.Length)); tf.Send(buffer); // Kick of the processing eventually ending up in RtpClient.ProcessFrameData() tf.HaveRtpClientWorkerThreadProcessSocketData(); }
/// <summary> /// This test case is added to demonstrate the risk of handing a byte array to a constructor. /// A ctor can only return a single object even if the byte array it is given may contain more /// than one object. /// This violates OO as the caller is burdened with having to now about what should be a feature /// of using the class it is calling. /// </summary> public static void BackToBackRtspMessages() { System.Console.Clear(); Console.WriteLine("TestProcessFrameData Case3(): Two back to back RTSP Responses"); Console.WriteLine("Correct output would be 2 'ProcessInterleaveData():...' detailing RTSP responses CSeq 34 and 35:"); Console.WriteLine(""); TestFramework tf = new TestFramework(); Media.Rtsp.RtspMessage keepAlive = new Media.Rtsp.RtspMessage(Media.Rtsp.RtspMessageType.Response); keepAlive.StatusCode = Media.Rtsp.RtspStatusCode.OK; keepAlive.CSeq = 34; keepAlive.SetHeader(Media.Rtsp.RtspHeaders.Session, "A9B8C7D6"); keepAlive.SetHeader(Media.Rtsp.RtspHeaders.Date, DateTime.Now.ToUniversalTime().ToString("r")); byte[] buffer = keepAlive.Prepare().ToArray(); tf.Send(buffer); keepAlive = new Media.Rtsp.RtspMessage(Media.Rtsp.RtspMessageType.Response); keepAlive.StatusCode = Media.Rtsp.RtspStatusCode.OK; keepAlive.CSeq = 35; keepAlive.SetHeader(Media.Rtsp.RtspHeaders.Session, "A9B8C7D6"); keepAlive.SetHeader(Media.Rtsp.RtspHeaders.Date, DateTime.Now.ToUniversalTime().ToString("r")); buffer = keepAlive.Prepare().ToArray(); tf.Send(buffer); // Kick of the processing eventually ending up in RtpClient.ProcessFrameData() tf.HaveRtpClientWorkerThreadProcessSocketData(); }