public ProjectFile_v3 VisitProgram(Program program) { var dtSerializer = new DataTypeSerializer(); return new DecompilerInput_v3 { Filename = program.Filename, User = new UserData_v3 { Procedures = program.User.Procedures .Select(de => { de.Value.Address = de.Key.ToString(); return de.Value; }) .ToList(), Processor = SerializeProcessorOptions(program.User, program.Architecture), PlatformOptions = SerializePlatformOptions(program.User, program.Platform), LoadAddress = program.User.LoadAddress != null ? program.User.LoadAddress.ToString() : null, Calls = program.User.Calls .Select(uc => uc.Value) .ToList(), GlobalData = program.User.Globals .Select(de => new GlobalDataItem_v2 { Address = de.Key.ToString(), DataType = de.Value.DataType, Name = string.Format("g_{0:X}", de.Key.ToLinear()) }) .ToList(), OnLoadedScript = program.User.OnLoadedScript, Heuristics = program.User.Heuristics.Select(h => new Heuristic_v3 { Name = h }).ToList(), }, DisassemblyFilename = program.DisassemblyFilename, IntermediateFilename = program.IntermediateFilename, OutputFilename = program.OutputFilename, TypesFilename = program.TypesFilename, GlobalsFilename = program.GlobalsFilename, }; }
public ProjectFile_v2 VisitProgram(Program program) { var dtSerializer = new DataTypeSerializer(); return new DecompilerInput_v2 { Address = program.Image != null ? program.Image.BaseAddress.ToString() : null, Filename = program.Filename, UserProcedures = program.UserProcedures .Select(de => { de.Value.Address = de.Key.ToString(); return de.Value; }) .ToList(), UserCalls = program.UserCalls .Select(uc => uc.Value) .ToList(), UserGlobalData = program.UserGlobalData .Select(de => new GlobalDataItem_v2 { Address = de.Key.ToString(), DataType = de.Value.DataType, Name = string.Format("g_{0:X}", de.Key.ToLinear()) }) .ToList(), DisassemblyFilename = program.DisassemblyFilename, IntermediateFilename = program.IntermediateFilename, OutputFilename = program.OutputFilename, TypesFilename = program.TypesFilename, GlobalsFilename = program.GlobalsFilename, OnLoadedScript = program.OnLoadedScript, Options = new ProgramOptions_v2 { HeuristicScanning = program.Options.HeuristicScanning, } }; }
/// <summary> /// Creates a symbol table for this program populated with the types /// defined by the platform of the program and user-defined types. /// </summary> /// <returns>Prepopulated symbol table. /// </returns> public virtual SymbolTable CreateSymbolTable() { var namedTypes = new Dictionary <string, SerializedType>(); var typedefs = EnvironmentMetadata.Types; var dtSer = new DataTypeSerializer(); foreach (var typedef in typedefs) { namedTypes.Add(typedef.Key, typedef.Value.Accept(dtSer)); } return(new SymbolTable(Platform, namedTypes)); }
/// <summary> /// Creates a symbol table for this program populated with the types /// defined by the platform of the program and user-defined types. /// </summary> /// <returns>Prepopulated symbol table. /// </returns> public virtual SymbolTable CreateSymbolTable() { var dtSer = new DataTypeSerializer(); var primitiveTypes = PrimitiveType.AllTypes .ToDictionary(d => d.Key, d => (PrimitiveType_v1)d.Value.Accept(dtSer)); var namedTypes = new Dictionary <string, SerializedType>(); var typedefs = EnvironmentMetadata.Types; foreach (var typedef in typedefs) { namedTypes[typedef.Key] = typedef.Value.Accept(dtSer); } return(new SymbolTable(Platform, primitiveTypes, namedTypes)); }
public IEnumerable <DbColumn[]> DbListValues() { IDictionaryEnumerator itr = properties.GetEnumerator(); while (itr.MoveNext()) { byte datatype = DataTypeSerializer.Serialize(itr.Value); yield return (new[] { new DbColumn("name", itr.Key, DbType.String), new DbColumn("value", itr.Value, DbType.String), new DbColumn("datatype", datatype, DbType.Byte) }); } }
private SymbolTable CreateSymbolTable( IPlatform platform, TypeLibrary typeLib) { var dtSer = new DataTypeSerializer(); var primitiveTypes = PrimitiveType.AllTypes .ToDictionary( d => d.Key, d => (PrimitiveType_v1)d.Value.Accept(dtSer)); var namedTypes = new Dictionary <string, SerializedType>(); var typedefs = typeLib.Types; foreach (var typedef in typedefs) { namedTypes[typedef.Key] = typedef.Value.Accept(dtSer); } return(new SymbolTable(platform, primitiveTypes, namedTypes)); }
public void Init() { Configuration = new uSyncCoreConfig(); ContentTypeSerializer = new ContentTypeSerializer(Constants.Packaging.DocumentTypeNodeName); MediaTypeSerializer = new MediaTypeSerializer("MediaType"); MemberTypeSerializer = new MemberTypeSerializer("MemberType"); TemplateSerializer = new TemplateSerializer(Constants.Packaging.TemplateNodeName); LanguageSerializer = new LanguageSerializer("Language"); DictionarySerializer = new DictionarySerializer(Constants.Packaging.DictionaryItemNodeName); MacroSerializer = new MacroSerializer(Constants.Packaging.MacroNodeName); DataTypeSerializer = new DataTypeSerializer(Constants.Packaging.DataTypeNodeName); ContentSerializer = new ContentSerializer(); MediaSerializer = new MediaSerializer(); MediaFileMover = new uSyncMediaFileMover(); }
public void SetUp() { _serializer = new DataTypeSerializer(); }
/// <summary> /// Creates a symbol table for this program populated with the types /// defined by the platform of the program and user-defined types. /// </summary> /// <returns>Prepopulated symbol table. /// </returns> public virtual SymbolTable CreateSymbolTable() { var namedTypes = new Dictionary<string, SerializedType>(); var typedefs = Metadata.Types; var dtSer = new DataTypeSerializer(); foreach (var typedef in typedefs) { namedTypes.Add(typedef.Key, typedef.Value.Accept(dtSer)); } return new SymbolTable(Platform, namedTypes); }
public void Callback(object obj) { lock (objLock) { using (dbManager.GetThreadTransaction()) { DateTime now = DateTime.UtcNow; if (systemStartTime == DateTime.MinValue) { systemStartTime = now; } //System time systemVariableManager["System.time"].Value = now; dbManager.Save(systemVariableManager["System.time"]); #region 10 second updates if (DateTime.UtcNow.Subtract(lastUpdateScheduler).TotalMilliseconds < 10000) { return; } lastUpdateScheduler = now; //Scheduler info int schedulerSize; int schedulerDelta; int actionsFired; DateTime lastProbe; DateTime nextFire; int actionTotalMilliseconds; scheduler.Probe(out lastProbe, out actionsFired, out schedulerSize, out schedulerDelta, out nextFire, out actionTotalMilliseconds); int workerThreads; int completionThreads; int availableWorkerThreads; int availableCompletionThreads; ThreadPool.GetMaxThreads(out workerThreads, out completionThreads); ThreadPool.GetAvailableThreads(out availableWorkerThreads, out availableCompletionThreads); // Database info int queriesRan; DateTime lastDbProbe; dbManager.Probe(out queriesRan, out lastDbProbe); // Stronghold info int strongholdsNeutral; int strongholdsOccupied; strongholdManager.Probe(out strongholdsNeutral, out strongholdsOccupied); var uptime = now.Subtract(systemStartTime); var averageActionTime = actionsFired == 0 ? 0 : actionTotalMilliseconds / actionsFired; var variables = new List <SystemVariable> { new SystemVariable("System.uptime", string.Format("{0} days {1:D2} hrs, {2:D2} mins, {3:D2} secs", (int)(uptime.TotalDays), uptime.Hours, uptime.Minutes, uptime.Seconds)), new SystemVariable("Scheduler.size", schedulerSize), new SystemVariable("Scheduler.average_action_time", averageActionTime), new SystemVariable("Scheduler.size_change", schedulerDelta), new SystemVariable("Scheduler.actions_per_second", (int)(actionsFired / now.Subtract(lastProbe).TotalSeconds)), new SystemVariable("Scheduler.next_fire", nextFire), new SystemVariable("ThreadPool.max_worker", workerThreads), new SystemVariable("ThreadPool.max_completion", completionThreads), new SystemVariable("ThreadPool.available_worker", availableWorkerThreads), new SystemVariable("ThreadPool.available_completion", availableCompletionThreads), new SystemVariable("ThreadPool.active_worker", workerThreads - availableWorkerThreads), new SystemVariable("ThreadPool.active_completion", completionThreads - availableCompletionThreads), new SystemVariable("Process.memory_usage", (int)(Process.GetCurrentProcess().WorkingSet64 / 1048576)), new SystemVariable("Process.peak_memory_usage", (int)(Process.GetCurrentProcess().PeakWorkingSet64 / 1048576)), new SystemVariable("Database.queries_per_second", (int)(queriesRan / now.Subtract(lastDbProbe).TotalSeconds)), new SystemVariable("Players.count", world.Players.Count), new SystemVariable("Players.logged_in", networkServer.GetSessionCount()), new SystemVariable("Cities.count", world.Cities.Count), new SystemVariable("Channel.subscriptions", channel.SubscriptionCount()), new SystemVariable("Socket.buffer_manager_available", bufferManager.AvailableBuffers), new SystemVariable("Socket.awaitable_pool_length", socketAwaitablePool.Count), new SystemVariable("Tribes.count", tribeManager.TribeCount), new SystemVariable("Strongholds.neutral", strongholdsNeutral), new SystemVariable("Strongholds.occupied", strongholdsOccupied) }; // Max player logged in ever using ( DbDataReader reader = dbManager.ReaderQuery( string.Format( "SELECT * FROM `{0}` WHERE `name` = 'Players.max_logged_in' LIMIT 1", SystemVariable.DB_TABLE), new DbColumn[] {})) { if (reader.HasRows) { reader.Read(); int maxLoggedIn = (int) DataTypeSerializer.Deserialize((string)reader["value"], (byte)reader["datatype"]); int currentlyLoggedIn = networkServer.GetSessionCount(); if (currentlyLoggedIn > maxLoggedIn) { variables.AddRange(new List <SystemVariable> { new SystemVariable("Players.max_logged_in", currentlyLoggedIn), new SystemVariable("Players.max_logged_in_date", DateTime.UtcNow), }); } } else { variables.AddRange(new List <SystemVariable> { new SystemVariable("Players.max_logged_in", 0), new SystemVariable("Players.max_logged_in_date", DateTime.UtcNow), }); } } // Forest cnt variables.Add(new SystemVariable("Forests.count", forestManager.ForestCount)); // Update vars foreach (var variable in variables) { if (!systemVariableManager.ContainsKey(variable.Key)) { systemVariableManager.Add(variable.Key, variable); } else { systemVariableManager[variable.Key].Value = variable.Value; } var actualVariable = systemVariableManager[variable.Key]; dbManager.Save(actualVariable); if (!string.IsNullOrEmpty(graphiteKeyPrefix) && actualVariable.Value is int) { try { NStatsD.Client.Current.Gauge(string.Format("{0}{1}", graphiteKeyPrefix, actualVariable.Key.Replace('.', '-').ToLowerInvariant()), (int)actualVariable.Value); } catch (Exception) { } } } #endregion } } }