Esempio n. 1
0
 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,
     };
 }
Esempio n. 2
0
 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,
         }
     };
 }
Esempio n. 3
0
        /// <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));
        }
Esempio n. 4
0
        /// <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));
        }
Esempio n. 5
0
        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)
                });
            }
        }
Esempio n. 6
0
        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));
        }
Esempio n. 7
0
        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();
 }
Esempio n. 9
0
 /// <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);
 }
Esempio n. 10
0
        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
                }
            }
        }