Beispiel #1
0
        Stream GetBufferingStream(string streamUrl)
        {
            var memoryStream = new DualStream();

            Task.Run(() => {
                int byteCounter = 0;
                try {
                    var webClient     = new WebClient();
                    var networkStream = webClient.OpenRead(streamUrl);
                    if (networkStream == null)
                    {
                        return;
                    }
                    byte[] buffer = new byte[0x1000];
                    while (true)
                    {
                        int read = networkStream.Read(buffer, 0, buffer.Length);
                        if (read <= 0)
                        {
                            break;
                        }
                        byteCounter      += read;
                        totalSourceBytes += read;
                        memoryStream.Write(buffer, 0, read);
                    }
                } catch (Exception ex) {
                    Console.WriteLine("Exception while reading network stream: " + ex);
                }
                NetworkDone = true; Console.WriteLine("net: done. ({0} read)", byteCounter);
            });
            return(memoryStream);
        }
Beispiel #2
0
        static async Task OutputFunc(Stream sourceStream, DualStream targetBuffer, CancellationToken cancellationToken)
        {
            try {
                byte[] buffer = new byte[1024];
                while (!cancellationToken.IsCancellationRequested)
                {
                    // When there is new stuff available on the network we want to get it instantly
                    int read = await sourceStream.ReadAsync(buffer, 0, buffer.Length, cancellationToken);

                    if (read > 0)
                    {
                        targetBuffer.Write(buffer, 0, read);
                    }
                }
            } catch (Exception ex) {
                Console.WriteLine(ex.ToString());
            }

            Console.WriteLine("OutputFunc stopped");
        }
Beispiel #3
0
 Stream GetBufferingStream(string streamUrl) {
     var memoryStream = new DualStream();
     Task.Run(() => {
         int byteCounter = 0;
         try {
             var webClient = new WebClient();
             var networkStream = webClient.OpenRead(streamUrl);
             if (networkStream == null) return;
             byte[] buffer = new byte[0x1000];
             while (true) {
                 int read = networkStream.Read(buffer, 0, buffer.Length);
                 if (read <= 0) break;
                 byteCounter += read;
                 totalSourceBytes += read;
                 memoryStream.Write(buffer, 0, read);
             }
         } catch (Exception ex) {
             Console.WriteLine("Exception while reading network stream: " + ex);
         }
         NetworkDone = true; Console.WriteLine("net: done. ({0} read)", byteCounter);
     });
     return memoryStream;
 }