コード例 #1
0
ファイル: Logging.cs プロジェクト: itfenom/i2p-cs
        public static void Log(LogLevels level, string str)
        {
            if (level < LogLevel)
            {
                return;
            }

            var st = $"{DateTime.Now} /{Thread.CurrentThread.ManagedThreadId,3}/: {str.TrimEnd( TrimEndChars )}";

            lock ( Lock )
            {
                if (LogToConsole)
                {
                    Console.WriteLine(st);
                }
                if (LogToDebug)
                {
                    System.Diagnostics.Debug.WriteLine(st);
                }

                if (Store != null)
                {
                    CheckFileRotation.Do(Store.CheckStoreRotation);
                    Store.Log(st);
                }
            }
        }
コード例 #2
0
ファイル: PeriodicLogger.cs プロジェクト: glasgowdev/i2p-cs
 public void Log(MakeMessage maker)
 {
     LogAction.Do(() => DebugUtils.Log(LogLevel, maker()));
 }
コード例 #3
0
        private void Run()
        {
            var buf  = new byte[65536];
            var buf2 = new byte[65536];

            try
            {
                MulticastSocket.BeginReceiveFrom(buf, 0, buf.Length, SocketFlags.None, ref MLEp, new AsyncCallback(ReceiveMulticast), buf);

                DiscoverDevices();
                Thread.Sleep(1000);
                while (!Terminated)
                {
                    try
                    {
                        DiscoverAction.Do(DiscoverDevices);

                        GetExternalAddressAction.Do(delegate
                        {
                            if (GetExternalAddressAction.Frequency.ToSeconds < 1.0)
                            {
                                GetExternalAddressAction.Frequency = TickSpan.Seconds(60 * 30);
                                GetExternalAddressAction.Start();
                            }

                            if (WANIPConnectionsCtlInfo.Count > 0)
                            {
                                ControlInfo ci;
                                lock ( WANIPConnectionsCtlInfo )
                                {
                                    ci = WANIPConnectionsCtlInfo.Values.First();
                                }
                                RequestExternalIpAddress(ci);
                            }
                        });

                        ExternalPortMappingAction.Do(delegate
                        {
                            if (ExternalPortMappingAction.Frequency.ToSeconds < 1.0)
                            {
                                ExternalPortMappingAction.Frequency = TickSpan.Seconds(LeaseMapDurationSeconds - 200);
                                ExternalPortMappingAction.Start();
                            }

                            if (WANIPConnectionsCtlInfo.Count > 0)
                            {
                                UpdatePortMapping("TCP");
                                UpdatePortMapping("UDP");
                            }
                        });

                        Thread.Sleep(1000);
                    }
                    catch (ThreadAbortException ex)
                    {
                        Logging.Log(ex);
                    }
                    catch (Exception ex)
                    {
                        Logging.Log(ex);
                    }
                }
            }
            finally
            {
                Terminated = true;
            }
        }
コード例 #4
0
 public void Log(Func <string> maker)
 {
     LogAction.Do(() => Logging.Log(LogLevel, maker()));
 }