Exemple #1
0
        public void TestConnectionStreamLotsOfData()
        {
            var connStream     = new ConnectionStream();
            var producerStream = new ProducerStream(connStream);
            var consumerStream = new ConsumerStream(connStream);
            var t = new Task(() =>
            {
                var streamWriter = new StreamWriter(producerStream);
                for (int i = 0; i < 1000; i++)
                {
                    streamWriter.WriteLine("mother f*****g stream crap " + i);
                }
                streamWriter.Close();
            });

            t.Start();

            Thread.Sleep(1000);

            var sr     = new StreamReader(consumerStream);
            var result = sr.ReadToEnd();

            Assert.IsTrue(result.StartsWith("mother f*****g stream crap 0"));
            Assert.IsTrue(result.EndsWith("mother f*****g stream crap 999\r\n"));

            Task.WaitAll(t);
        }
 public override IOutputStream Create(
     ConnectionStream connection,
     AccessControlInfo access_control,
     Guid channel_id)
 {
     return(new PCPPongOutputStream(PeerCast, connection, access_control));
 }
Exemple #3
0
        public void TestConnectionStreamLotsOfDataAndCheckAllReads()
        {
            var connStream     = new ConnectionStream();
            var producerStream = new ProducerStream(connStream);
            var consumerStream = new ConsumerStream(connStream);
            var t = new Task(() =>
            {
                var streamWriter = new StreamWriter(producerStream);
                for (int i = 0; i < 1000; i++)
                {
                    streamWriter.WriteLine("mother f*****g stream crap " + i);
                }
                streamWriter.Close();
            });

            t.Start();

            Thread.Sleep(1000);

            int j = 0;

            using (var sr = new StreamReader(consumerStream))
            {
                var result = sr.ReadLine();
                Assert.AreEqual(result, "mother f*****g stream crap " + j);
                j++;
            }

            Task.WaitAll(t);
        }
Exemple #4
0
        public void TestConnectionClientTermination()
        {
            var connStream     = new ConnectionStream();
            var producerStream = new ProducerStream(connStream);
            var consumerStream = new ConsumerStream(connStream);
            var t = new Task(() =>
            {
                var streamWriter = new StreamWriter(producerStream);
                for (int i = 0; i < 1000; i++)
                {
                    streamWriter.WriteLine("mother f*****g stream crap " + i);
                }
                streamWriter.Close();
            });

            t.Start();

            // Thread.Sleep(1000);

            var sr = new StreamReader(consumerStream);

            sr.Close();

            Task.WaitAll(t);
        }
Exemple #5
0
        public void TestConnectionStreamBuffering()
        {
            var connStream     = new ConnectionStream();
            var producerStream = new ProducerStream(connStream);
            var consumerStream = new ConsumerStream(connStream);
            var t = new Task(() =>
            {
                var streamWriter = new StreamWriter(producerStream);
                for (int i = 0; i < 1000; i++)
                {
                    streamWriter.WriteLine("mother f*****g stream crap " + i);
                }
                streamWriter.Close();
            });

            t.Start();
            Task.WaitAll(t);

            using (var sr = new StreamReader(consumerStream))
            {
                // read one line
                var line = sr.ReadLine();
                Assert.AreEqual("mother f*****g stream crap 0", line);
            }
        }
 public PCPPongOutputStream(
     PeerCast peercast,
     ConnectionStream connection,
     AccessControlInfo access_control)
     : base(peercast, connection, access_control, null)
 {
     Logger.Debug("Initialized: Remote {0}", RemoteEndPoint);
 }
Exemple #7
0
        private void SendFile(object obj)
        {
            Connection       c      = (Connection)obj;
            ConnectionStream stream = new ConnectionStream(c);

            using (FileStream fs = File.OpenRead(_answerSoundFileName)) {
                using (ConnectionWriter writer = new ConnectionWriter(stream)) {
                    writer.Write(fs);
                }
            }
        }
        public Task Invoke(
            HttpRequest req,
            ConnectionStream stream,
            IPEndPoint localEndPoint,
            IPEndPoint remoteEndPoint,
            AccessControlInfo accessControlInfo,
            CancellationToken cancellationToken)
        {
            var ctx = new OwinContext(PeerCast, req, stream, localEndPoint, remoteEndPoint, accessControlInfo);

            return(ctx.Invoke(OwinApp, cancellationToken));
        }
Exemple #9
0
 public RTMPOutputStream(
     PeerCast peercast,
     ConnectionStream connection,
     AccessControlInfo access_control,
     Guid channel_id)
 {
     connection.ReadTimeout  = Timeout.Infinite;
     connection.WriteTimeout = 10000;
     this.peerCast           = peercast;
     this.inputStream        = connection;
     this.outputStream       = connection;
     this.accessControl      = access_control;
     this.connection         = new RTMPPlayConnection(this, this.inputStream, this.outputStream);
 }
Exemple #10
0
 /// <summary>
 /// Parse connection information.
 /// </summary>
 /// <param name="direction">In or out connections.</param>
 private void ParseConnections(ConnectionDirection direction)
 {
     try
     {
         ConnectionStream cs = new ConnectionStream(Profile.UserName, HashKey, direction, DelayBetweenAPIRequests);
         cs.Read();
         if (cs.Connections != null && cs.Connections.Count > 0)
         {
             Profile.Connections.AddRange(cs.Connections);
         }
     }
     catch (Exception e)
     {
     }
 }
Exemple #11
0
            protected override IEnumerator <IteratorAsyncResult <SecureSocketUtil.InitiateSecureClientUpgradeClientSideAsyncResult> .AsyncStep> GetAsyncSteps()
            {
                ConnectionStream connectionStream1;

                if (this.socketSecurityMode != SocketSecurityRole.SslClient)
                {
                    this.ResultConnection = this.connection;
                    SecureSocketUtil.InitiateSecureClientUpgradeClientSideAsyncResult initiateSecureClientUpgradeClientSideAsyncResult = this;
                    IteratorAsyncResult <SecureSocketUtil.InitiateSecureClientUpgradeClientSideAsyncResult> .BeginCall beginCall       = (SecureSocketUtil.InitiateSecureClientUpgradeClientSideAsyncResult thisRef, TimeSpan t, AsyncCallback c, object s) => thisRef.ResultConnection.BeginWrite(ConnectConstants.NoSsl, 0, 1, true, t, c, s);
                    yield return(initiateSecureClientUpgradeClientSideAsyncResult.CallAsync(beginCall, (SecureSocketUtil.InitiateSecureClientUpgradeClientSideAsyncResult thisRef, IAsyncResult r) => thisRef.ResultConnection.EndWrite(r), IteratorAsyncResult <TIteratorAsyncResult> .ExceptionPolicy.Transfer));
                }
                else
                {
                    connectionStream1 = (this.defaultTimeouts == null ? new ConnectionStream(this.connection) : new ConnectionStream(this.connection, this.defaultTimeouts));
                    ConnectionStream connectionStream = connectionStream1;
                    SecureSocketUtil.InitiateSecureClientUpgradeClientSideAsyncResult initiateSecureClientUpgradeClientSideAsyncResult1 = this;
                    IteratorAsyncResult <SecureSocketUtil.InitiateSecureClientUpgradeClientSideAsyncResult> .BeginCall beginCall1       = (SecureSocketUtil.InitiateSecureClientUpgradeClientSideAsyncResult thisRef, TimeSpan t, AsyncCallback c, object s) => thisRef.connection.BeginWrite(ConnectConstants.UseSsl, 0, 1, true, t, c, s);
                    yield return(initiateSecureClientUpgradeClientSideAsyncResult1.CallAsync(beginCall1, (SecureSocketUtil.InitiateSecureClientUpgradeClientSideAsyncResult thisRef, IAsyncResult r) => thisRef.connection.EndWrite(r), IteratorAsyncResult <TIteratorAsyncResult> .ExceptionPolicy.Transfer));

                    this.sslStream = new SslStream(connectionStream, false, new RemoteCertificateValidationCallback(SecureSocketUtil.ValidateServerCertificate), null);
                    SecureSocketUtil.InitiateSecureClientUpgradeClientSideAsyncResult initiateSecureClientUpgradeClientSideAsyncResult2 = this;
                    IteratorAsyncResult <SecureSocketUtil.InitiateSecureClientUpgradeClientSideAsyncResult> .BeginCall beginCall2       = (SecureSocketUtil.InitiateSecureClientUpgradeClientSideAsyncResult thisRef, TimeSpan t, AsyncCallback c, object s) => thisRef.sslStream.BeginAuthenticateAsClient(this.targetHost, c, s);
                    yield return(initiateSecureClientUpgradeClientSideAsyncResult2.CallAsync(beginCall2, (SecureSocketUtil.InitiateSecureClientUpgradeClientSideAsyncResult thisRef, IAsyncResult r) => thisRef.sslStream.EndAuthenticateAsClient(r), IteratorAsyncResult <TIteratorAsyncResult> .ExceptionPolicy.Continue));

                    if (base.LastAsyncStepException == null)
                    {
                        this.ResultConnection = new StreamConnection(this.sslStream, connectionStream);
                    }
                    else
                    {
                        try
                        {
                            this.sslStream.Close();
                        }
                        catch (Exception exception1)
                        {
                            Exception exception = exception1;
                            if (Fx.IsFatal(exception))
                            {
                                throw;
                            }
                            Fx.Exception.TraceHandled(exception, "SecureSocketUtil.InitiateSecureClientUpgradeClientSideAsyncResult", null);
                        }
                        base.Complete(base.LastAsyncStepException);
                    }
                }
            }
Exemple #12
0
        private void SendTextToSpeech(object obj)
        {
            Connection        c      = (Connection)obj;
            ConnectionStream  stream = new ConnectionStream(c);
            SpeechSynthesizer s      = new SpeechSynthesizer();

            using (MemoryStream memStream = new MemoryStream()) {
                s.SetOutputToAudioStream(memStream, new SpeechAudioFormatInfo(EncodingFormat.ALaw,
                                                                              8000, 8, 1, 8000, 1, null));
                s.Speak(_textToSpeak);
                memStream.Seek(0, SeekOrigin.Begin);

                using (ConnectionWriter writer = new ConnectionWriter(stream)) {
                    writer.Reverse = true;
                    writer.Write(memStream);
                }
            }
        }
Exemple #13
0
        public OwinContext(
            PeerCast peerCast,
            HttpRequest req,
            ConnectionStream stream,
            IPEndPoint localEndPoint,
            IPEndPoint remoteEndPoint,
            AccessControlInfo accessControlInfo)
        {
            Environment      = new OwinEnvironment();
            ConnectionStream = stream;
            RequestBody      = new OwinRequestBodyStream(this, ConnectionStream);
            ResponseBody     = new OwinResponseBodyStream(this, ConnectionStream);
            Environment.Environment[OwinEnvironment.Owin.Version]     = "1.0.1";
            Environment.Environment[OwinEnvironment.Host.TraceOutput] = TextWriter.Null;
            Environment.Environment[OwinEnvironment.Owin.RequestBody] = RequestBody;
            var requestHeaders = req.Headers.ToDictionary();

            if (!requestHeaders.TryGetValue("Host", out var values) || values.Length == 0 || String.IsNullOrEmpty(values[0]))
            {
                requestHeaders["Host"] = new string[] { localEndPoint.ToString() };
            }
            Environment.Environment[OwinEnvironment.Owin.RequestHeaders]               = requestHeaders;
            Environment.Environment[OwinEnvironment.Owin.RequestPath]                  = req.Path;
            Environment.Environment[OwinEnvironment.Owin.RequestPathBase]              = "";
            Environment.Environment[OwinEnvironment.Owin.RequestProtocol]              = req.Protocol;
            Environment.Environment[OwinEnvironment.Owin.RequestQueryString]           = req.QueryString;
            Environment.Environment[OwinEnvironment.Owin.RequestScheme]                = "http";
            Environment.Environment[OwinEnvironment.Owin.RequestMethod]                = req.Method;
            Environment.Environment[OwinEnvironment.Owin.ResponseBody]                 = ResponseBody;
            Environment.Environment[OwinEnvironment.Owin.ResponseHeaders]              = new Dictionary <string, string[]>(StringComparer.OrdinalIgnoreCase);
            Environment.Environment[OwinEnvironment.Server.RemoteIpAddress]            = remoteEndPoint.Address.ToString();
            Environment.Environment[OwinEnvironment.Server.RemotePort]                 = remoteEndPoint.Port.ToString();
            Environment.Environment[OwinEnvironment.Server.IsLocal]                    = remoteEndPoint.Address.GetAddressLocality() == 0;
            Environment.Environment[OwinEnvironment.Server.LocalIpAddress]             = localEndPoint.Address.ToString();
            Environment.Environment[OwinEnvironment.Server.LocalPort]                  = localEndPoint.Port.ToString();
            Environment.Environment[OwinEnvironment.Server.OnSendingHeaders]           = new Action <Action <object>, object>(OnSendingHeaders.Add);
            Environment.Environment[OwinEnvironment.PeerCastStation.PeerCast]          = peerCast;
            Environment.Environment[OwinEnvironment.PeerCastStation.AccessControlInfo] = accessControlInfo;
            Environment.Environment[OwinEnvironment.PeerCastStation.GetRecvRate]       = new Func <float>(() => stream.ReadRate);
            Environment.Environment[OwinEnvironment.PeerCastStation.GetSendRate]       = new Func <float>(() => stream.WriteRate);
            Environment.Environment[OwinEnvironment.Opaque.Upgrade]                    = new Action <IDictionary <string, object>, Func <IDictionary <string, object>, Task> >(OpaqueUpgrade);
        }
        public RTMPOutputStream(
            PeerCast peercast,
            System.IO.Stream input_stream,
            System.IO.Stream output_stream,
            System.Net.EndPoint remote_endpoint,
            AccessControlInfo access_control,
            Guid channel_id,
            byte[] header)
        {
            input_stream.ReadTimeout = System.Threading.Timeout.Infinite;
            this.peerCast            = peercast;
            var stream = new ConnectionStream(new BufferedReadStream(input_stream, 8192, header), output_stream);

            this.inputStream    = stream;
            this.outputStream   = stream;
            stream.WriteTimeout = 10000;
            this.remoteEndPoint = remote_endpoint;
            this.accessControl  = access_control;
            this.connection     = new RTMPPlayConnection(this, this.inputStream, this.outputStream);
        }
Exemple #15
0
        public void TestConnectionStream()
        {
            var connStream     = new ConnectionStream();
            var producerStream = new ProducerStream(connStream);
            var consumerStream = new ConsumerStream(connStream);

            var t = new Task(() =>
            {
                var streamWriter = new StreamWriter(producerStream);
                streamWriter.WriteLine("mother f*****g stream crap");
                streamWriter.Close();
            });

            t.Start();

            var sr     = new StreamReader(consumerStream);
            var result = sr.ReadToEnd();

            Assert.AreEqual("mother f*****g stream crap\r\n", result);

            Task.WaitAll(t);
        }
Exemple #16
0
        private void SendTextToSpeech(object obj) {
            Connection c = (Connection)obj;
            ConnectionStream stream = new ConnectionStream(c);
            SpeechSynthesizer s = new SpeechSynthesizer();
            using (MemoryStream memStream = new MemoryStream()) {
                s.SetOutputToAudioStream(memStream, new SpeechAudioFormatInfo(EncodingFormat.ALaw,
                    8000, 8, 1, 8000, 1, null));
                s.Speak(_textToSpeak);
                memStream.Seek(0, SeekOrigin.Begin);

                using (ConnectionWriter writer = new ConnectionWriter(stream)) {
                    writer.Reverse = true;
                    writer.Write(memStream);
                }
            }
        }
 public OpaqueEnvironment(ConnectionStream stream, CancellationToken cancellationToken)
 {
     Environment[OwinEnvironment.Opaque.Version]       = "1.0";
     Environment[OwinEnvironment.Opaque.Stream]        = stream;
     Environment[OwinEnvironment.Opaque.CallCancelled] = cancellationToken;
 }
Exemple #18
0
 public OwinHostOutputStream(PeerCast peercast, OwinHost host, ConnectionStream connection, AccessControlInfo access_control, Channel channel)
     : base(peercast, connection, access_control, channel)
 {
     owinHost = host;
 }
Exemple #19
0
 private void SendFile(object obj) {
     Connection c = (Connection)obj;
     ConnectionStream stream = new ConnectionStream(c);
     using (FileStream fs = File.OpenRead(_answerSoundFileName)) {
         using (ConnectionWriter writer = new ConnectionWriter(stream)) {
             writer.Write(fs);
         }
     }
 }
Exemple #20
0
        public override IOutputStream Create(ConnectionStream connection, AccessControlInfo access_control, Guid channel_id)
        {
            var channel = channel_id != Guid.Empty ? PeerCast.Channels.FirstOrDefault(c => c.ChannelID == channel_id) : null;

            return(new OwinHostOutputStream(PeerCast, owinHost, connection, access_control, channel));
        }