public override RtspResponse SetUp(RtspRequest request) { var builder = RtspResponse.CreateBuilder().Status(RtspResponse.Status.Ok); var transport = request.Transport; if (transport == null) { return(builder.Status(RtspResponse.Status.BadRequest).Build()); } else if (transport.Type != TransportType.RtspInterleaved) { return(builder.Status(RtspResponse.Status.UnsupportedTransport).Build()); } lock (this) { PortPair channels = new PortPair(_currentChannel, _currentChannel + 1); _currentChannel += 2; var session = new InterleavedTestSession(request.Context, _spy, channels, PAYLOAD_TYPE); _sessionManager.RegisterSession(session); transport = TransportHeader.CreateBuilder() .Type(TransportType.RtspInterleaved) .InterleavedChannels(channels) .Build(); return(builder.AddHeader(RtspHeaders.Names.TRANSPORT, transport.ToString()) .AddHeader(RtspHeaders.Names.SESSION, session.Id) .Build()); } }
public InterleavedTestSession(RequestContext context, SessionSpy spy, PortPair ports, byte payloadType) { _payloadType = payloadType; _src = new TestSource(FRAMES_TO_SEND); _spy = spy ?? throw new ArgumentNullException("Spy cannot be null"); _ports = ports ?? throw new ArgumentNullException("Ports cannot be null"); _context = context ?? throw new ArgumentNullException("Context cannot be null"); }