コード例 #1
0
        private static async void HandleConnection(Socket s)
        {
            s.NoDelay = true;
            Stream stream = new NetworkStream(s);

            if (s_traceStream)
            {
                stream = new TraceStream(stream);
            }

            if (s_useSsl)
            {
                try
                {
                    var sslStream = new SslStream(stream);
                    await sslStream.AuthenticateAsServerAsync(s_cert);

                    stream = sslStream;
                }
                catch (IOException e)
                {
                    if (s_trace)
                    {
                        Console.WriteLine($"Exception trying to establish SSL connection:\n{e}");
                    }
                }
            }

            var c = new Connection(stream);

            c.Run();
        }
コード例 #2
0
        private static async void HandleConnection(Socket s, bool isSsl)
        {
            s.NoDelay = true;
            Stream stream = new NetworkStream(s);

            if (s_traceStream)
            {
                stream = new TraceStream(stream);
            }

            if (isSsl)
            {
                try
                {
                    var sslStream = new SslStream(stream);
                    await sslStream.AuthenticateAsServerAsync(s_cert, false, SslProtocols.Tls11 | SslProtocols.Tls12, false);

                    stream = sslStream;
                }
                catch (Exception e)
                {
                    if (s_trace)
                    {
                        Console.WriteLine($"Exception trying to establish SSL connection:\n{e}");
                    }

                    return;
                }
            }

            var c = new Connection(stream);

            c.Run();
        }
コード例 #3
0
        public void Dispose()
        {
            if (SdkTracingInterceptor != null)
            {
                ServiceClientTracing.RemoveTracingInterceptor(SdkTracingInterceptor);
            }

            if (TextListener != null)
            {
                if (Trace.Listeners.Contains(TextListener))
                {
                    Trace.Listeners.Remove(TextListener);
                }

                TextListener.Dispose();
            }

            if (TraceStream != null)
            {
                TraceStream.Dispose();
            }

            Trace.AutoFlush = PreviousAutoFlush;
            AdalTrace.TraceSource.Switch.Level = PreviousAdalSourceLevel;
            AdalTrace.LegacyTraceSwitch.Level  = PreviousAdalTraceLevel;
        }
コード例 #4
0
 public void Dispose()
 {
     if (TraceStream != null)
     {
         TraceStream.Dispose();
     }
 }
コード例 #5
0
        Stream IMediaStreaming.GetMediaStream(string media)
        {
            string mediaFile = String.Format("{0}\\{1}", System.Configuration.ConfigurationManager.AppSettings["mediaPath"], media);

            FileInfo fi = new FileInfo(mediaFile);

            if (!fi.Exists)
            {
                throw new FileNotFoundException("File does not exist: {0}. Check host configuration for 'mediaPath' setting.", media);
            }

            TraceStream traceStream = null;
            FileStream  fs          = null;

            try
            {
                fs          = new FileStream(mediaFile, FileMode.Open, FileAccess.Read, FileShare.Read);
                traceStream = new TraceStream(fs);
            }
            catch
            {
                if (fs != null)
                {
                    fs.Close();
                }
            }

            return(traceStream);
        }
コード例 #6
0
ファイル: Serial.cs プロジェクト: rockxcn/CNCLib
 public void Dispose()
 {
     DisconnectAsync();
     if (_trace != null)
     {
         _trace.Dispose();
         _trace = null;
     }
 }
コード例 #7
0
            public void WriteLine(string message, TraceLevel lvl = TraceLevel.TRACE)
            {
                var timestamp = UseTimeStamp ? DateTime.Now.ToString("u") + " " : "";

                var lvlStr = lvl == TraceLevel.NONE ? "" : $"[{lvl.ToString()}]:";

                lock (TraceStream)
                {
                    TraceStream.WriteLine($"{timestamp}{lvlStr}{message}");
                }
            }
コード例 #8
0
ファイル: CloudDrive.cs プロジェクト: zhang024/DokanCloudFS
        public void SetContent(FileInfoContract target, Stream content)
        {
            ExecuteInSemaphore(() => {
                target.Size        = content.Length;
                var gatewayContent = content.EncryptOrPass(encryptionKey);

#if DEBUG
                gatewayContent = new TraceStream(nameof(target), target.Name, gatewayContent);
#endif
                gateway.SetContent(rootName, target.Id, gatewayContent, null);
            }, nameof(SetContent), true);
        }
コード例 #9
0
 /// <summary>
 /// Writes all remaining data to the underlying listener.
 /// </summary>
 public override void Flush()
 {
     base.Flush();
     if (!TraceIsForced && m_booSaveToFile)
     {
         Int64  intPosition = TraceStream.Position;
         byte[] bteData     = new byte[intPosition - m_intLastStreamPosition];
         Array.Copy(TraceStream.GetBuffer(), m_intLastStreamPosition, bteData, 0, bteData.Length);
         File.AppendAllText(FilePath, TextUtil.ByteToString(bteData));
         m_intLastStreamPosition = intPosition;
     }
 }
コード例 #10
0
        public Stream GetContent(FileInfoContract source)
        {
            return(ExecuteInSemaphore(() => {
                var gatewayContent = gateway.GetContentAsync(rootName, source.Id).Result.ToSeekableStream();

                var content = gatewayContent.DecryptOrPass(encryptionKey);

#if DEBUG
                CompositionInitializer.SatisfyImports(content = new TraceStream(nameof(GetContent), source.Name, content));
#endif
                return content;
            }, nameof(GetContent)));
        }
コード例 #11
0
        public void SetContent(FileInfoContract target, Stream content)
        {
            ExecuteInSemaphore(() => {
                target.Size        = content.Length;
                var gatewayContent = content.EncryptOrPass(encryptionKey);

#if DEBUG
                CompositionInitializer.SatisfyImports(gatewayContent = new TraceStream(nameof(SetContent), target.Name, gatewayContent));
#endif
                Func <FileSystemInfoLocator> locator = () => new FileSystemInfoLocator(target);
                gateway.SetContentAsync(rootName, target.Id, gatewayContent, null, locator).Wait();
            }, nameof(SetContent), true);
        }
コード例 #12
0
ファイル: CloudDrive.cs プロジェクト: zhang024/DokanCloudFS
        public Stream GetContent(FileInfoContract source)
        {
            return(ExecuteInSemaphore(() => {
                var gatewayContent = gateway.GetContent(rootName, source.Id).ToSeekableStream();

                var content = gatewayContent.DecryptOrPass(encryptionKey);

#if DEBUG
                content = new TraceStream(nameof(source), source.Name, content);
#endif
                return content;
            }, nameof(GetContent)));
        }
コード例 #13
0
        /// <summary>使用跟踪流。实际上是重新包装一次Stream,必须在设置Stream后,使用之前</summary>
        public virtual void EnableTrace()
        {
            var stream = Stream;

            if (stream == null || stream is TraceStream)
            {
                return;
            }

            Stream = new TraceStream(stream)
            {
                Encoding = Encoding, IsLittleEndian = IsLittleEndian
            };
        }
コード例 #14
0
        /// <summary>使用跟踪流。实际上是重新包装一次Stream,必须在设置Stream,使用之前</summary>
        public virtual void EnableTraceStream()
        {
            var stream = Stream;

            if (stream == null || stream is TraceStream)
            {
                return;
            }

            Stream = new TraceStream(stream)
            {
                Encoding = Settings.Encoding
            };
        }
コード例 #15
0
ファイル: BinaryWriterX.cs プロジェクト: yuyu2you/X_NET20
        ///// <summary>已重载。</summary>
        ///// <returns></returns>
        //public override string ToString()
        //{
        //    Byte[] buffer = ToArray();
        //    if (buffer == null || buffer.Length < 1) return base.ToString();

        //    return BitConverter.ToString(buffer);
        //}

        /// <summary>使用跟踪流</summary>
        public override void EnableTraceStream()
        {
            var stream = Stream;

            if (stream == null || stream is TraceStream)
            {
                return;
            }

            var ts = new TraceStream(stream);

            ts.IsLittleEndian = Settings.IsLittleEndian;
            Stream            = ts;
        }
コード例 #16
0
        public void SetContent(FileInfoContract target, Stream content)
        {
            ExecuteInSemaphore(() => {
                var gatewayContent = content.EncryptOrPass(encryptionKey);
                target.Size        = (FileSize)content.Length;

#if DEBUG
                CompositionInitializer.SatisfyImports(gatewayContent = new TraceStream(nameof(target), target.Name, gatewayContent));
#endif
                gateway.SetContent(rootName, target.Id, gatewayContent, null);
                if (content != gatewayContent)
                {
                    gatewayContent.Close();
                }
            }, nameof(SetContent), true);
        }
コード例 #17
0
        public async Task Connect_Works_Async()
        {
            // Sample traffic from https://www.theiphonewiki.com/wiki/Usbmux ("lockdownd protocol")
            var muxer  = new Mock <MuxerClient>();
            var device = new MuxerDevice();

            using (var traceStream = new TraceStream("Lockdown/connect-device.bin", "Lockdown/connect-host.bin"))
            {
                muxer
                .Setup(m => m.ConnectAsync(device, 0xF27E, default))
                .ReturnsAsync(traceStream);

                var factory = new LockdownClientFactory(muxer.Object, new DeviceContext()
                {
                    Device = device
                }, NullLogger <LockdownClient> .Instance);

                await using (await factory.CreateAsync(default))
コード例 #18
0
        public void SetContent(FileInfoContract target, Stream content)
        {
            ExecuteInSemaphore(() => {
                if (!string.IsNullOrEmpty(encryptionKey))
                    content = content.Encrypt(encryptionKey);

#if DEBUG
                content = new TraceStream(nameof(SetContent), target.Name, content);
#endif
                Func<FileSystemInfoLocator> locator = () => new FileSystemInfoLocator(target);
                var result = gateway.SetContentAsync(rootName, target.Id, content, null, locator).Result;
                target.Size = content.Length;
            }, nameof(SetContent), true);
        }
コード例 #19
0
        public Stream GetContent(FileInfoContract source)
        {
            return ExecuteInSemaphore(() => {
                var result = gateway.GetContentAsync(rootName, source.Id).Result;

                if (!result.CanSeek) {
                    var bufferStream = new MemoryStream();
                    result.CopyTo(bufferStream, MAX_BULKDOWNLOAD_SIZE);
                    bufferStream.Seek(0, SeekOrigin.Begin);
                    result.Dispose();
                    result = bufferStream;
                }

                if (!string.IsNullOrEmpty(encryptionKey))
                    result = result.Decrypt(encryptionKey);

#if DEBUG
                result = new TraceStream(nameof(GetContent), source.Name, result);
#endif
                return result;
            }, nameof(GetContent));
        }
コード例 #20
0
        public void SetContent(FileInfoContract target, Stream content)
        {
            ExecuteInSemaphore(() => {
                if (!string.IsNullOrEmpty(encryptionKey))
                    content = content.Encrypt(encryptionKey);

#if DEBUG
                content = new TraceStream(nameof(target), target.Name, content);
#endif
                gateway.SetContent(rootName, target.Id, content, null);
                target.Size = content.Length;
            }, nameof(SetContent), true);
        }