⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aediagnostics.java

📁 java 文件下载器。可自定义
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   AEDiagnostics.java

package org.gudy.azureus2.core3.util;

import com.aelitis.azureus.core.util.Java15Utils;
import java.io.*;
import java.lang.reflect.Method;
import java.util.*;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.logging.LogAlert;
import org.gudy.azureus2.core3.logging.Logger;
import org.gudy.azureus2.platform.*;

// Referenced classes of package org.gudy.azureus2.core3.util:
//			AEDiagnosticsEvidenceGenerator, AEDiagnosticsLogger, Debug, FileUtil, 
//			IndentWriter, SystemProperties, SystemTime, AEThread2, 
//			SimpleTimer, TimerEventPerformer, TimerEvent

public class AEDiagnostics
{

	public static final boolean ALWAYS_PASS_HASH_CHECKS = false;
	public static final boolean USE_DUMMY_FILE_DATA = false;
	public static final boolean CHECK_DUMMY_FILE_DATA = false;
	public static final boolean DEBUG_MONITOR_SEM_USAGE = false;
	public static final boolean DEBUG_THREADS = true;
	public static final boolean TRACE_DIRECT_BYTE_BUFFERS = false;
	public static final boolean TRACE_DBB_POOL_USAGE = false;
	public static final boolean PRINT_DBB_POOL_USAGE = false;
	public static final boolean TRACE_TCP_TRANSPORT_STATS = false;
	public static final boolean TRACE_CONNECTION_DROPS = false;
	private static final int MAX_FILE_SIZE;
	private static final String CONFIG_KEY = "diagnostics.tidy_close";
	private static File debug_dir;
	private static File debug_save_dir;
	private static boolean started_up;
	private static boolean startup_complete;
	private static boolean enable_pending_writes;
	private static Map loggers = new HashMap();
	protected static boolean loggers_enabled;
	private static List evidence_generators = new ArrayList();
	private static boolean load_15_tried;
	private static final String bad_dlls[][] = {
		{
			"niphk", "y"
		}, {
			"nvappfilter", "y"
		}, {
			"netdog", "y"
		}, {
			"vlsp", "y"
		}, {
			"imon", "y"
		}, {
			"sarah", "y"
		}, {
			"MxAVLsp", "y"
		}, {
			"mclsp", "y"
		}, {
			"radhslib", "y"
		}, {
			"winsflt", "y"
		}, {
			"nl_lsp", "y"
		}, {
			"AxShlex", "y"
		}, {
			"iFW_Xfilter", "y"
		}, {
			"gapsp", "y"
		}, {
			"WSOCKHK", "n"
		}
	};

	public AEDiagnostics()
	{
	}

	public static synchronized void startup(boolean _enable_pending)
	{
		if (started_up)
			return;
		started_up = true;
		enable_pending_writes = _enable_pending;
		boolean transitoryStartup = System.getProperty("transitory.startup", "0").equals("1");
		if (!transitoryStartup)
			break MISSING_BLOCK_LABEL_48;
		load_15_tried = true;
		loggers_enabled = false;
		startup_complete = true;
		load15Stuff();
		return;
		debug_dir = FileUtil.getUserFile("logs");
		debug_save_dir = new File(debug_dir, "save");
		loggers_enabled = COConfigurationManager.getBooleanParameter("Logger.DebugFiles.Enabled");
		boolean was_tidy = COConfigurationManager.getBooleanParameter("diagnostics.tidy_close");
		(new AEThread2("asyncify", true) {

			public void run()
			{
				SimpleTimer.addEvent("AEDiagnostics:logCleaner", SystemTime.getCurrentTime() + 60000L + (long)(int)(Math.random() * 15000D), new TimerEventPerformer() {

					final 1 this$0;

					public void perform(TimerEvent event)
					{
						AEDiagnostics.cleanOldLogs();
					}

					
					{
						this$0 = 1.this;
						super();
					}
				});
			}

		}).start();
		if (debug_dir.exists())
		{
			long now = SystemTime.getCurrentTime();
			debug_save_dir.mkdir();
			File files[] = debug_dir.listFiles();
			if (files != null)
			{
				boolean file_copied = false;
				for (int i = 0; i < files.length; i++)
				{
					File file = files[i];
					if (!file.isDirectory() && !was_tidy)
					{
						file_copied = true;
						FileUtil.copyFile(file, new File(debug_save_dir, (new StringBuilder()).append(now).append("_").append(file.getName()).toString()));
					}
				}

				if (file_copied)
					Logger.logTextResource(new LogAlert(false, 1, "diagnostics.log_found"), new String[] {
						debug_save_dir.toString()
					});
			}
		} else
		{
			debug_dir.mkdir();
		}
		startup_complete = true;
		load15Stuff();
		break MISSING_BLOCK_LABEL_305;
		Throwable e;
		e;
		if (!(e instanceof NoClassDefFoundError))
			Debug.printStackTrace(e);
		startup_complete = true;
		load15Stuff();
		break MISSING_BLOCK_LABEL_305;
		Exception exception;
		exception;
		startup_complete = true;
		load15Stuff();
		throw exception;
	}

	protected static void load15Stuff()
	{
		if (load_15_tried)
			return;
		load_15_tried = true;
		try
		{
			Class c = Class.forName("com.aelitis.azureus.jdk15.Java15Initialiser");
			if (c != null)
			{
				Method m = c.getDeclaredMethod("getUtilsProvider", new Class[0]);
				com.aelitis.azureus.core.util.Java15Utils.Java15UtilsProvider provider = (com.aelitis.azureus.core.util.Java15Utils.Java15UtilsProvider)m.invoke(null, new Object[0]);
				if (provider != null)
					Java15Utils.setProvider(provider);
			}
		}
		catch (Throwable e) { }
	}

	public static void dumpThreads()
	{
		Java15Utils.dumpThreads();
	}

	protected static void cleanOldLogs()
	{
		try
		{
			long now = SystemTime.getCurrentTime();
			File files[] = debug_save_dir.listFiles();
			if (files != null)
			{
				for (int i = 0; i < files.length; i++)
				{
					File file = files[i];
					if (!file.isDirectory())
					{
						long last_modified = file.lastModified();
						if (now - last_modified > 0x337f9800L)
							file.delete();
					}
				}

			}
		}
		catch (Exception e) { }
	}

	public static boolean isStartupComplete()
	{
		return startup_complete;
	}

	public static File getLogDir()
	{
		startup(false);
		return debug_dir;
	}

	public static synchronized void flushPendingLogs()
	{
		AEDiagnosticsLogger logger;
		for (Iterator i$ = loggers.values().iterator(); i$.hasNext(); logger.writePending())
			logger = (AEDiagnosticsLogger)i$.next();

		enable_pending_writes = false;
	}

	public static synchronized AEDiagnosticsLogger getLogger(String name)
	{
		AEDiagnosticsLogger logger = (AEDiagnosticsLogger)loggers.get(name);
		if (logger == null)
		{
			startup(false);
			logger = new AEDiagnosticsLogger(debug_dir, name, MAX_FILE_SIZE, !enable_pending_writes);
			loggers.put(name, logger);
		}
		return logger;
	}

	public static void logWithStack(String logger_name, String str)
	{
		log(logger_name, (new StringBuilder()).append(str).append(": ").append(Debug.getCompressedStackTrace()).toString());
	}

	public static void log(String logger_name, String str)
	{
		getLogger(logger_name).log(str);
	}

	public static void markDirty()
	{
		try
		{
			COConfigurationManager.setParameter("diagnostics.tidy_close", false);
			COConfigurationManager.save();
		}
		catch (Throwable e)
		{
			Debug.printStackTrace(e);
		}
	}

	public static boolean isDirty()
	{
		return !COConfigurationManager.getBooleanParameter("diagnostics.tidy_close");
	}

	public static void markClean()
	{
		try
		{
			COConfigurationManager.setParameter("diagnostics.tidy_close", true);
			COConfigurationManager.save();
		}
		catch (Throwable e)
		{
			Debug.printStackTrace(e);
		}
	}

	public static void checkDumpsAndNatives()
	{
		try
		{
			PlatformManager p_man = PlatformManagerFactory.getPlatformManager();
			if (p_man.getPlatformType() == 1 && p_man.hasCapability(PlatformManagerCapabilities.TestNativeAvailability))
			{
				for (int i = 0; i < bad_dlls.length; i++)
				{
					String dll = bad_dlls[i][0];
					String load = bad_dlls[i][1];
					if (load.equalsIgnoreCase("n") || COConfigurationManager.getBooleanParameter((new StringBuilder()).append("platform.win32.dll_found.").append(dll).toString(), false))
						continue;
					try
					{
						if (p_man.testNativeAvailability((new StringBuilder()).append(dll).append(".dll").toString()))
						{
							COConfigurationManager.setParameter((new StringBuilder()).append("platform.win32.dll_found.").append(dll).toString(), true);
							String detail = MessageText.getString((new StringBuilder()).append("platform.win32.baddll.").append(dll).toString());
							Logger.logTextResource(new LogAlert(true, 1, "platform.win32.baddll.info"), new String[] {
								(new StringBuilder()).append(dll).append(".dll").toString(), detail
							});
						}
					}
					catch (Throwable e)
					{
						Debug.printStackTrace(e);
					}
				}

			}
			File app_dir = new File(SystemProperties.getApplicationPath());
			if (app_dir.canRead())
			{
				File files[] = app_dir.listFiles();
				File most_recent_dump = null;
				long most_recent_time = 0L;
				long now = SystemTime.getCurrentTime();
				long one_week_ago = now - 0x240c8400L;
				for (int i = 0; i < files.length; i++)
				{
					File f = files[i];
					String name = f.getName();
					if (!name.startsWith("hs_err_pid"))
						continue;
					long last_mod = f.lastModified();
					if (last_mod > most_recent_time && last_mod > one_week_ago)
					{
						most_recent_dump = f;
						most_recent_time = last_mod;
					}
				}

				if (most_recent_dump != null)
				{
					long last_done = COConfigurationManager.getLongParameter("diagnostics.dump.lasttime", 0L);
					if (last_done < most_recent_time)
					{
						COConfigurationManager.setParameter("diagnostics.dump.lasttime", most_recent_time);
						analyseDump(most_recent_dump);
					}
				}
			}
		}
		catch (Throwable e)
		{
			Debug.printStackTrace(e);
		}
	}

	protected static void analyseDump(File file)
	{
		System.out.println((new StringBuilder()).append("Analysing ").append(file).toString());
		LineNumberReader lnr = new LineNumberReader(new FileReader(file));
		boolean float_excep = false;
		String bad_dlls_uc[] = new String[bad_dlls.length];
		for (int i = 0; i < bad_dlls.length; i++)
		{
			String dll = bad_dlls[i][0];
			bad_dlls_uc[i] = (new StringBuilder()).append(dll).append(".dll").toString().toUpperCase();
		}

		String alcohol_dll = "AxShlex";
		List matches = new ArrayList();
		do
		{
			String line = lnr.readLine();
			if (line == null)
				break;
			line = line.toUpperCase();
			if (line.indexOf("EXCEPTION_FLT") != -1)
			{
				float_excep = true;
			} else
			{
				int i = 0;
				while (i < bad_dlls_uc.length) 
				{
					String b_uc = bad_dlls_uc[i];
					if (line.indexOf(b_uc) != -1)
					{
						String dll = bad_dlls[i][0];
						if (dll.equals(alcohol_dll))
						{
							if (float_excep)
								matches.add(dll);
						} else
						{
							matches.add(dll);
						}
					}
					i++;
				}
			}
		} while (true);
		for (int i = 0; i < matches.size(); i++)
		{
			String dll = (String)matches.get(i);
			String detail = MessageText.getString((new StringBuilder()).append("platform.win32.baddll.").append(dll).toString());
			Logger.logTextResource(new LogAlert(true, 1, "platform.win32.baddll.info"), new String[] {
				(new StringBuilder()).append(dll).append(".dll").toString(), detail
			});
		}

		lnr.close();
		break MISSING_BLOCK_LABEL_369;
		Exception exception;
		exception;
		lnr.close();
		throw exception;
		Throwable e;
		e;
		Debug.printStackTrace(e);
	}

	public static void addEvidenceGenerator(AEDiagnosticsEvidenceGenerator gen)
	{
		synchronized (evidence_generators)
		{
			evidence_generators.add(gen);
		}
	}

	public static void generateEvidence(PrintWriter _writer)
	{
		IndentWriter writer;
		writer = new IndentWriter(_writer);
		synchronized (evidence_generators)
		{
			for (int i = 0; i < evidence_generators.size(); i++)
				try
				{
					((AEDiagnosticsEvidenceGenerator)evidence_generators.get(i)).generate(writer);
				}
				catch (Throwable e)
				{
					e.printStackTrace(_writer);
				}

		}
		writer.println("Memory");
		writer.indent();
		Runtime rt = Runtime.getRuntime();
		writer.println((new StringBuilder()).append("max=").append(rt.maxMemory()).append(",total=").append(rt.totalMemory()).append(",free=").append(rt.freeMemory()).toString());
		writer.exdent();
		break MISSING_BLOCK_LABEL_156;
		Exception exception1;
		exception1;
		writer.exdent();
		throw exception1;
	}

	static 
	{
		int maxFileSize = 0x40000;
		try
		{
			String logSize = System.getProperty("diag.logsize", null);
			if (logSize != null)
				if (logSize.toLowerCase().endsWith("m"))
					maxFileSize = Integer.parseInt(logSize.substring(0, logSize.length() - 1)) * 1024 * 1024;
				else
					maxFileSize = Integer.parseInt(logSize);
		}
		catch (Throwable t) { }
		MAX_FILE_SIZE = maxFileSize;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -