Exemplo n.º 1
0
 /// <summary>
 /// Checks availability of debugging information for given assembly.
 /// </summary>
 /// <param name="assemblyPath">
 /// File path of the assembly or null if the module is in-memory or dynamic (generated by Reflection.Emit)
 /// </param>
 /// <param name="isFileLayout">type of in-memory PE layout, if true, file based layout otherwise, loaded layout</param>
 /// <param name="loadedPeAddress">
 /// Loaded PE image address or zero if the module is dynamic (generated by Reflection.Emit).
 /// Dynamic modules have their PDBs (if any) generated to an in-memory stream
 /// (pointed to by <paramref name="inMemoryPdbAddress"/> and <paramref name="inMemoryPdbSize"/>).
 /// </param>
 /// <param name="loadedPeSize">loaded PE image size</param>
 /// <param name="inMemoryPdbAddress">in memory PDB address or zero</param>
 /// <param name="inMemoryPdbSize">in memory PDB size</param>
 /// <returns>Symbol reader handle or zero if error</returns>
 internal static IntPtr LoadSymbolsForModule(string assemblyPath, bool isFileLayout, IntPtr loadedPeAddress, int loadedPeSize,
                                             IntPtr inMemoryPdbAddress, int inMemoryPdbSize, ReadMemoryDelegate readMemory)
 {
     try
     {
         TargetStream peStream = null;
         if (assemblyPath == null && loadedPeAddress != IntPtr.Zero)
         {
             peStream = new TargetStream(loadedPeAddress, loadedPeSize, readMemory);
         }
         TargetStream pdbStream = null;
         if (inMemoryPdbAddress != IntPtr.Zero)
         {
             pdbStream = new TargetStream(inMemoryPdbAddress, inMemoryPdbSize, readMemory);
         }
         OpenedReader openedReader = GetReader(assemblyPath, isFileLayout, peStream, pdbStream);
         if (openedReader != null)
         {
             GCHandle gch = GCHandle.Alloc(openedReader);
             return(GCHandle.ToIntPtr(gch));
         }
     }
     catch
     {
     }
     return(IntPtr.Zero);
 }
Exemplo n.º 2
0
        public void Write(BinaryWriter bw)
        {
            string channel = "";

            switch (ChatChannel)
            {
            case ChatChannels2.System:
                channel = "$S";
                break;

            case ChatChannels2.NormalWithoutName:
                channel = "$A";
                break;

            case ChatChannels2.Gm:
                channel = "$I";
                break;

            case ChatChannels2.CenterScreen:
                channel = "$X";
                break;
            }
            byte[] data = Encoding.Unicode.GetBytes(channel + Text + '\0');
            bw.Write(data.Length);
            bw.Write(data);
            bw.Write((uint)AppendDataMask);
            TargetStream.Save(bw, Target);
        }
Exemplo n.º 3
0
        public void Dispose()
        {
            if (SourceReader != null)
            {
                SourceReader.Close();
                SourceReader.Dispose();
            }
            if (TargetWriter != null)
            {
                TargetWriter.Flush();
                TargetWriter.Close();
                TargetWriter.Dispose();
            }

            if (SourceStream != null)
            {
                SourceStream.Close();
                SourceStream.Dispose();
            }
            if (TargetStream != null)
            {
                TargetStream.Close();
                TargetStream.Dispose();
            }
        }
Exemplo n.º 4
0
        public Stream <TIn, TIn[]> Map <TIn> (Func <TOut, TIn> mapper)
        {
            var(Stream, Pusher) = TargetStream <TOut, TIn> .GetTargetStream(mapper, this);

            _streamer = Pusher;
            return(Stream);
        }
 public void Read(BinaryReader br)
 {
     ID   = br.ReadUInt32();
     Stop = br.ReadBoolean();
     br.ReadBytes(3);
     Target = TargetStream.Read(br);
 }
        public void Read(BinaryReader br)
        {
            int size = br.ReadInt32();

            Text   = br.ReadBytes(size).ToUnicode();
            Target = TargetStream.Read(br);
        }
 public void Write(BinaryWriter bw)
 {
     byte[] data = Encoding.Unicode.GetBytes(Text + '\0');
     bw.Write(data.Length);
     bw.Write(data);
     TargetStream.Save(bw, Target);
 }
        public void Should_Return_Valid_Result_Stream()
        {
            WorkRelationTerms TEST_CONTRACT_TYPE = WorkRelationTerms.WORKTERM_EMPLOYMENT_1;

            WorkHealthTerms TEST_HEALTH_TYPE = WorkHealthTerms.HEALTH_TERM_EMPLOYMENT;

            WorkSocialTerms TEST_SOCIAL_TYPE = WorkSocialTerms.SOCIAL_TERM_EMPLOYMENT;

            ITargetValues contractValues = TargetValueBuilder.CreateContractEmplTermValues(
                TEST_CONTRACT_TYPE, TEST_HEALTH_TYPE, TEST_SOCIAL_TYPE, null, null);

            ITargetValues positionValues = TargetValueBuilder.CreatePositionEmplTermValues(null, null);

            ITargetValues positionSalary = TargetValueBuilder.CreateSalaryBaseValues(10000m);

            ITargetValues emptyValues = TargetValueBuilder.CreateEmptyValues();

            ITargetStream targets = TargetStream.CreateEmptyStream().
                                    AddNewContractsTarget(ConfigSetCzArticleName.REF_CONTRACT_EMPL_TERM, contractValues, testConfig).
                                    AddNewPositionsTarget(ConfigSetCzArticleName.REF_POSITION_EMPL_TERM, positionValues, testConfig).
                                    AddTargetIntoPosition(ConfigSetCzArticleName.REF_SALARY_BASE, positionSalary, testConfig).
                                    AddTargetIntoPosition(ConfigSetCzArticleName.REF_INCOME_GROSS, emptyValues, testConfig);

            IEngineProfile testProfile = testEngine.BuildEngineProfile(testPeriod);

            IProcessService testModule = ProcessServiceModule.CreateModule(targets, testConfig, testProfile, serviceLog);

            IResultStream results = testModule.EvaluateTargetsToResults();

            serviceLog.CloseLogStream();

            Assert.AreEqual(0, results.Results().Keys.Count);
        }
 public void Write(BinaryWriter bw)
 {
     bw.Write(ID);
     bw.Write(Period);
     bw.Write(Counter);
     TargetStream.Save(bw, Target);
 }
 public void Read(BinaryReader br)
 {
     ID      = br.ReadUInt32();
     Period  = br.ReadUInt32();
     Counter = br.ReadUInt32();
     Target  = TargetStream.Read(br);
 }
 public void Write(BinaryWriter bw)
 {
     bw.Write(ID);
     bw.Write(Stop);
     bw.Write(new byte[] { 0, 0, 0 });
     TargetStream.Save(bw, Target);
 }
 public void Write(BinaryWriter bw)
 {
     bw.Write(RadiusValue);
     bw.Write(RadiusType);
     bw.Write(TargetID);
     bw.Write(Target_Type);
     TargetStream.Save(bw, Target);
 }
Exemplo n.º 13
0
 public void Write(BinaryWriter bw)
 {
     bw.Write(ActionName.FromGBK(128));
     bw.Write(Loop);
     bw.Write(new byte[] { 0, 0, 0 });
     bw.Write(Interval);
     TargetStream.Save(bw, Target);
 }
Exemplo n.º 14
0
 public void Read(BinaryReader br)
 {
     ActionName = br.ReadBytes(128).ToGBK();
     Loop       = br.ReadBoolean();
     br.ReadBytes(3);
     Interval = br.ReadInt32();
     Target   = TargetStream.Read(br);
 }
Exemplo n.º 15
0
 public void Write(BinaryWriter bw)
 {
     bw.Write(WorldID);
     bw.Write(PathID);
     bw.Write((int)PatrolType);
     bw.Write((int)SpeedType);
     TargetStream.Save(bw, Target);
 }
Exemplo n.º 16
0
 public void Write(BinaryWriter bw)
 {
     bw.Write(ID);
     bw.Write(IDType);
     bw.Write(Range);
     bw.Write(PlayerNum);
     TargetStream.Save(bw, Target);
 }
Exemplo n.º 17
0
 public void Read(BinaryReader br)
 {
     ID        = br.ReadUInt32();
     IDType    = br.ReadUInt32();
     Range     = br.ReadInt32();
     PlayerNum = br.ReadInt32();
     Target    = TargetStream.Read(br);
 }
Exemplo n.º 18
0
 public void Read(BinaryReader br)
 {
     WorldID    = br.ReadInt32();
     PathID     = br.ReadInt32();
     PatrolType = (MonsterPatrolType)br.ReadInt32();
     SpeedType  = (MonsterPatrolSpeedType)br.ReadInt32();
     Target     = TargetStream.Read(br);
 }
Exemplo n.º 19
0
 public void Write(BinaryWriter bw)
 {
     bw.Write(ActionName.FromGBK(128));
     bw.Write(LoopCount);
     bw.Write(Interval);
     bw.Write(PlayTime);
     TargetStream.Save(bw, Target);
 }
 public void Read(BinaryReader br)
 {
     RadiusValue = br.ReadSingle();
     RadiusType  = br.ReadUInt32();
     TargetID    = br.ReadInt32();
     Target_Type = br.ReadUInt32();
     Target      = TargetStream.Read(br);
 }
Exemplo n.º 21
0
 public void Read(BinaryReader br)
 {
     ActionName = br.ReadBytes(128).ToGBK();
     LoopCount  = br.ReadInt32();
     Interval   = br.ReadInt32();
     PlayTime   = br.ReadInt32();
     Target     = TargetStream.Read(br);
 }
Exemplo n.º 22
0
 public void Read(BinaryReader br)
 {
     ID             = br.ReadInt32();
     Value          = br.ReadInt32();
     IsHistoryValue = br.ReadBoolean();
     br.ReadBytes(3);
     Target = TargetStream.Read(br);
 }
Exemplo n.º 23
0
 public void Write(BinaryWriter bw)
 {
     bw.Write(ID);
     bw.Write(Value);
     bw.Write(IsHistoryValue);
     bw.Write(new byte[] { 0, 0, 0 });
     TargetStream.Save(bw, Target);
 }
Exemplo n.º 24
0
 public void Write(BinaryWriter bw)
 {
     bw.Write(Skill.Value);
     bw.Write(SkillType);
     bw.Write(Level);
     bw.Write(LevelType);
     TargetStream.Save(bw, Target);
 }
Exemplo n.º 25
0
 public void Read(BinaryReader br)
 {
     Skill = new SkillID()
     {
         Value = br.ReadUInt32()
     };
     Level  = br.ReadUInt32();
     Target = TargetStream.Read(br);
 }
 public void Write(BinaryWriter bw)
 {
     bw.Write(MonsterID.Value);
     bw.Write(Range);
     bw.Write(Life);
     bw.Write((int)DispearCondition);
     bw.Write(PathID);
     bw.Write(MonsterNum);
     TargetStream.Save(bw, Target);
 }
Exemplo n.º 27
0
 public void Write(BinaryWriter bw)
 {
     bw.Write(MinX);
     bw.Write(MinY);
     bw.Write(MinZ);
     bw.Write(MaxX);
     bw.Write(MaxY);
     bw.Write(MaxZ);
     TargetStream.Save(bw, Target);
 }
Exemplo n.º 28
0
 public void Read(BinaryReader br)
 {
     MinX   = br.ReadSingle();
     MinY   = br.ReadSingle();
     MinZ   = br.ReadSingle();
     MaxX   = br.ReadSingle();
     MaxY   = br.ReadSingle();
     MaxZ   = br.ReadSingle();
     Target = TargetStream.Read(br);
 }
Exemplo n.º 29
0
        /// <summary>
        /// Load native symbols and modules (i.e. dac, dbi).
        /// </summary>
        /// <param name="callback">called back for each symbol file loaded</param>
        /// <param name="parameter">callback parameter</param>
        /// <param name="tempDirectory">temp directory unique to this instance of SOS</param>
        /// <param name="moduleFilePath">module path</param>
        /// <param name="address">module base address</param>
        /// <param name="size">module size</param>
        /// <param name="readMemory">read memory callback delegate</param>
        public static void LoadNativeSymbols(SymbolFileCallback callback, IntPtr parameter, string tempDirectory, string moduleFilePath, ulong address, int size, ReadMemoryDelegate readMemory)
        {
            if (IsSymbolStoreEnabled())
            {
                Debug.Assert(s_tracer != null);
                Stream       stream    = new TargetStream(address, size, readMemory);
                KeyTypeFlags flags     = KeyTypeFlags.SymbolKey | KeyTypeFlags.ClrKeys;
                KeyGenerator generator = null;

                if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
                {
                    var elfFile = new ELFFile(new StreamAddressSpace(stream), 0, true);
                    generator = new ELFFileKeyGenerator(s_tracer, elfFile, moduleFilePath);
                }
                else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
                {
                    var machOFile = new MachOFile(new StreamAddressSpace(stream), 0, true);
                    generator = new MachOFileKeyGenerator(s_tracer, machOFile, moduleFilePath);
                }
                else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
                {
                    var peFile = new PEFile(new StreamAddressSpace(stream), true);
                    generator = new PEFileKeyGenerator(s_tracer, peFile, moduleFilePath);
                }
                else
                {
                    return;
                }

                try
                {
                    IEnumerable <SymbolStoreKey> keys = generator.GetKeys(flags);
                    foreach (SymbolStoreKey key in keys)
                    {
                        string moduleFileName = Path.GetFileName(key.FullPathName);
                        s_tracer.Verbose("{0} {1}", key.FullPathName, key.Index);

                        // Don't download the sos binaries that come with the runtime
                        if (moduleFileName != "SOS.NETCore.dll" && !moduleFileName.StartsWith("libsos."))
                        {
                            string downloadFilePath = GetSymbolFile(key, tempDirectory);
                            if (downloadFilePath != null)
                            {
                                s_tracer.Information("{0}: {1}", moduleFileName, downloadFilePath);
                                callback(parameter, moduleFileName, downloadFilePath);
                            }
                        }
                    }
                }
                catch (Exception ex) when(ex is BadInputFormatException || ex is InvalidVirtualAddressException)
                {
                    s_tracer.Error("{0}/{1:X16}: {2}", moduleFilePath, address, ex.Message);
                }
            }
        }
Exemplo n.º 30
0
 public void Write(BinaryWriter bw)
 {
     bw.Write(MonsterID.Value);
     bw.Write(Range);
     bw.Write(Life);
     bw.Write(Dispear);
     bw.Write(UsePolicyTarget);
     bw.Write(PathID);
     bw.Write(MonsterNum);
     TargetStream.Save(bw, Target);
 }
Exemplo n.º 31
0
 /// <summary>
 /// Checks availability of debugging information for given assembly.
 /// </summary>
 /// <param name="assemblyPath">
 /// File path of the assembly or null if the module is in-memory or dynamic (generated by Reflection.Emit)
 /// </param>
 /// <param name="isFileLayout">type of in-memory PE layout, if true, file based layout otherwise, loaded layout</param>
 /// <param name="loadedPeAddress">
 /// Loaded PE image address or zero if the module is dynamic (generated by Reflection.Emit). 
 /// Dynamic modules have their PDBs (if any) generated to an in-memory stream 
 /// (pointed to by <paramref name="inMemoryPdbAddress"/> and <paramref name="inMemoryPdbSize"/>).
 /// </param>
 /// <param name="loadedPeSize">loaded PE image size</param>
 /// <param name="inMemoryPdbAddress">in memory PDB address or zero</param>
 /// <param name="inMemoryPdbSize">in memory PDB size</param>
 /// <returns>Symbol reader handle or zero if error</returns>
 internal static IntPtr LoadSymbolsForModule(string assemblyPath, bool isFileLayout, IntPtr loadedPeAddress, int loadedPeSize, 
     IntPtr inMemoryPdbAddress, int inMemoryPdbSize, ReadMemoryDelegate readMemory)
 {
     try
     {
         TargetStream peStream = null;
         if (assemblyPath == null && loadedPeAddress != IntPtr.Zero)
         {
             peStream = new TargetStream(loadedPeAddress, loadedPeSize, readMemory);
         }
         TargetStream pdbStream = null;
         if (inMemoryPdbAddress != IntPtr.Zero)
         {
             pdbStream = new TargetStream(inMemoryPdbAddress, inMemoryPdbSize, readMemory);
         }
         OpenedReader openedReader = GetReader(assemblyPath, isFileLayout, peStream, pdbStream);
         if (openedReader != null)
         {
             GCHandle gch = GCHandle.Alloc(openedReader);
             return GCHandle.ToIntPtr(gch);
         }
     }
     catch
     {
     }
     return IntPtr.Zero;
 }