예제 #1
0
        public object Post(ReqComplexDataAsStringDTO request)
        {
            Log.Debug("entering PostComplexDataAsString Post");
            Log.Debug($"in PostComplexDataAsString Post; request: {request.Dump()}");
            // do some simple processing on the request data, then send both the original and the modified complex data objects back in the response.
            // For demo02, expect to get a string that has the ComplexData serialized into it.
            string reqComplexDataAsString = request.ComplexDataAsString;

            Log.Debug($"in PostComplexDataAsString Post; reqComplexDataAsString: {reqComplexDataAsString}");
            // Deserialize the data from the request to a ComplexData using the ServiceStack Json-deserializer
            ComplexData reqComplexData = ServiceStack.Text.JsonSerializer.DeserializeFromString <ComplexData>(reqComplexDataAsString);

            Log.Debug($"in PostComplexDataAsString Post; reqComplexData: {reqComplexData}");
            // Create a response ComplexData
            var         now            = DateTime.UtcNow;
            ComplexData rspComplexData = new ComplexData()
            {
                StringData = reqComplexData.StringData + "... Right Back At Ya", DateTimeData = now, TimeSpanData = now - reqComplexData.DateTimeData, DoubleData = reqComplexData.DoubleData * 2, IntData = reqComplexData.IntData + 1, DecimalData = reqComplexData.DecimalData / 10
            };

            Log.Debug($"in PostComplexDataAsString Post; rspComplexData: {rspComplexData}");
            // Serialize it to a string using ServiceStack Serializer
            string rspComplexDataAsString = ServiceStack.Text.JsonSerializer.SerializeToString <ComplexData>(rspComplexData);

            Log.Debug($"in PostComplexDataAsString Post; rspComplexDataAsString: {rspComplexDataAsString}");
            // Create a responseDTO object
            RspComplexDataAsStringDTO rspComplexDataAsStringDTO = new RspComplexDataAsStringDTO()
            {
                ComplexDataAsString = rspComplexDataAsString
            };

            Log.Debug($"in PostComplexDataAsString Post; rspComplexDataAsStringDTO = {rspComplexDataAsStringDTO}");
            Log.Debug("leaving PostComplexDataAsString Post");
            return(rspComplexDataAsStringDTO);
        }
예제 #2
0
        public override void WriteValue(ComplexData structure, HexPosition position)
        {
            if (structure == null)
            {
                throw new ArgumentNullException(nameof(structure));
            }
            if (!structure.Span.Span.Contains(position))
            {
                throw new ArgumentOutOfRangeException(nameof(position));
            }
            var field = structure.GetSimpleField(position);

            Debug.Assert(field != null);
            if (field == null)
            {
                return;
            }
            var data = field.Data as SimpleData;

            Debug.Assert(data != null);
            if (data == null)
            {
                return;
            }
            try {
                data.WriteValue(this);
                return;
            }
            catch (ArithmeticException) {
            }
            catch (OutOfMemoryException) {
            }
            WriteUnknownValue();
        }
        public override object GetToolTip(HexBufferFile file, ComplexData structure, HexPosition position)
        {
            var body = structure as DotNetMethodBody;

            if (body != null)
            {
                return(GetToolTip(body, position));
            }

            var resource = structure as DotNetEmbeddedResource;

            if (resource != null)
            {
                return(GetToolTip(resource, position));
            }

            var resDataHdr = structure as MultiResourceDataHeaderData;

            if (resDataHdr != null)
            {
                return(GetToolTip(resDataHdr, position));
            }

            var guidRecord = structure as GuidHeapRecordData;

            if (guidRecord != null)
            {
                return(GetToolTip(guidRecord, position));
            }

            var stringsRecord = structure as StringsHeapRecordData;

            if (stringsRecord != null)
            {
                return(GetToolTip(stringsRecord, position));
            }

            var usRecord = structure as USHeapRecordData;

            if (usRecord != null)
            {
                return(GetToolTip(usRecord, position));
            }

            var blobRecord = structure as BlobHeapRecordData;

            if (blobRecord != null)
            {
                return(GetToolTip(blobRecord, position));
            }

            var tableRecord = structure as TableRecordData;

            if (tableRecord != null)
            {
                return(GetToolTip(tableRecord, position));
            }

            return(null);
        }
예제 #4
0
    public void div(ComplexData comp1, ComplexData comp2, ComplexData compAns)
    {
        Double numerFirstReal     = comp1.getRealNumber() * comp2.getRealNumber();
        Double numerOuterConjImag = comp1.getRealNumber() * (comp2.getImagNumber() * -1);
        Double numerInnerImag     = comp1.getImagNumber() * comp2.getRealNumber();
        Double numerLastConjReal  = comp1.getImagNumber() * (comp2.getImagNumber() * -1) * -1;
        Double denomFirstReal     = comp2.getRealNumber() * comp2.getRealNumber();
        Double denomOuterConjImag = comp2.getRealNumber() * (comp2.getImagNumber() * -1);
        Double denomInnerImag     = comp2.getImagNumber() * comp2.getRealNumber();
        Double denomLastConjReal  = comp2.getImagNumber() * (comp2.getImagNumber() * -1) * -1;

        Double realAns;
        Double imagAns;

        if (denomFirstReal + denomLastConjReal != 0)
        {
            realAns = (numerFirstReal + numerLastConjReal) / (denomFirstReal + denomLastConjReal);
            imagAns = (numerOuterConjImag + numerInnerImag) / (denomFirstReal + denomLastConjReal);
        }
        else
        {
            realAns = (numerFirstReal + numerLastConjReal);
            imagAns = (numerOuterConjImag + numerInnerImag);
        }

        compAns.setRealNumber(realAns);
        compAns.setImagNumber(imagAns);
    }
예제 #5
0
 public override void WriteField(ComplexData structure, HexPosition position)
 {
     if (structure == null)
     {
         throw new ArgumentNullException(nameof(structure));
     }
     if (!structure.Span.Span.Contains(position))
     {
         throw new ArgumentOutOfRangeException(nameof(position));
     }
     structure.WriteName(this);
     for (;;)
     {
         var field = structure.GetFieldByPosition(position);
         if (field == null)
         {
             break;
         }
         field.WriteName(this);
         structure = field.Data as ComplexData;
         if (structure == null)
         {
             break;
         }
     }
 }
예제 #6
0
    public Task ComplexMemberData(ComplexData arg)
    {
        VerifySettings settings = new();

        settings.UseParameters(arg);
        return(Verifier.Verify(arg, settings));
    }
예제 #7
0
 static bool IsValidIndexes(HexIndexes[] indexes, ComplexData structure)
 {
     if (indexes == null)
     {
         return(false);
     }
     if (indexes.Length == 0)
     {
         return(true);
     }
     if ((uint)indexes[0].End > (uint)structure.FieldCount)
     {
         return(false);
     }
     if (indexes[0].IsEmpty)
     {
         return(false);
     }
     for (int i = 1; i < indexes.Length; i++)
     {
         if (indexes[i - 1].End > indexes[i].Start)
         {
             return(false);
         }
         if ((uint)indexes[i].End > (uint)structure.FieldCount)
         {
             return(false);
         }
         if (indexes[i].IsEmpty)
         {
             return(false);
         }
     }
     return(true);
 }
예제 #8
0
        public override HexSpan?GetFieldReferenceSpan(HexBufferFile file, ComplexData structure, HexPosition position)
        {
            if (structure is MultiResourceUnicodeNameAndOffsetData resourceNameOffs)
            {
                return(GetFieldReferenceSpan(file, resourceNameOffs, position));
            }

            if (structure is DotNetCor20Data cor20)
            {
                return(GetFieldReferenceSpan(file, cor20, position));
            }

            if (structure is DotNetMultiFileResourceHeaderData multiResourceHeader)
            {
                return(GetFieldReferenceSpan(file, multiResourceHeader, position));
            }

            if (structure is DotNetMetadataHeaderData mdHeader)
            {
                return(GetFieldReferenceSpan(file, mdHeader, position));
            }

            if (structure is FatMethodBody fatBody)
            {
                return(GetFieldReferenceSpan(file, fatBody, position));
            }

            if (structure is TableRecordData record)
            {
                return(GetFieldReferenceSpan(file, record, position));
            }

            return(null);
        }
예제 #9
0
        public override HexIndexes[] GetSubStructureIndexes(HexBufferFile file, ComplexData structure, HexPosition position)
        {
            if (structure is DotNetMethodBody body)
            {
                if (body.Kind == DotNetMethodBodyKind.Tiny)
                {
                    return(Array.Empty <HexIndexes>());
                }
                if (body is FatMethodBody fatBody)
                {
                    if (fatBody.EHTable == null)
                    {
                        return(subStructFatWithoutEH);
                    }
                    return(subStructFatWithEH);
                }
            }

            if (structure is DotNetEmbeddedResource)
            {
                return(Array.Empty <HexIndexes>());
            }

            if (structure is MultiResourceDataHeaderData multiResource)
            {
                if (multiResource is MultiResourceSimplDataHeaderData || multiResource is MultiResourceStringDataHeaderData)
                {
                    return(multiResourceFields2);
                }
                if (multiResource is MultiResourceArrayDataHeaderData)
                {
                    return(multiResourceFields3);
                }
                Debug.Fail($"Unknown multi res type: {multiResource.GetType()}");
            }

            var stringsRec = structure as StringsHeapRecordData;

            if (stringsRec?.Terminator != null)
            {
                return(stringsRecordIndexes);
            }

            if (structure is USHeapRecordData usRec)
            {
                if (usRec.TerminalByte != null)
                {
                    return(usRecordIndexes3);
                }
                return(usRecordIndexes2);
            }

            if (structure is BlobHeapRecordData)
            {
                return(blobRecordIndexes2);
            }

            return(null);
        }
        public override ImageReference?GetImage(ComplexData structure, HexPosition position)
        {
            if (structure is MultiResourceUnicodeNameAndOffsetData nameOffset)
            {
                return(GetImageReference(nameOffset));
            }

            return(null);
        }
예제 #11
0
        public override object GetToolTip(HexBufferFile file, ComplexData structure, HexPosition position)
        {
            var toolTipCreator = toolTipCreatorFactory.Create();
            var contentCreator = toolTipCreator.ToolTipContentCreator;

            contentCreator.Image = GetImage(structure, position);
            contentCreator.Writer.WriteFieldAndValue(structure, position);

            return(toolTipCreator.Create());
        }
        public override object GetReference(HexBufferFile file, ComplexData structure, HexPosition position)
        {
            var body = structure as DotNetMethodBody;

            if (body != null)
            {
                return(GetReference(file, body, position));
            }
            return(null);
        }
        public override HexIndexes[] GetSubStructureIndexes(HexBufferFile file, ComplexData structure, HexPosition position)
        {
            var sections = structure as PeSectionsData;

            if (sections != null)
            {
                return(Array.Empty <HexIndexes>());
            }

            return(null);
        }
예제 #14
0
    public void mult(ComplexData comp1, ComplexData comp2, ComplexData compAns)
    {
        Double firstReal = comp1.getRealNumber() * comp2.getRealNumber();
        Double outerImag = comp1.getRealNumber() * comp2.getImagNumber();
        Double innerImag = comp1.getImagNumber() * comp2.getRealNumber();
        Double lastReal  = comp1.getImagNumber() * comp2.getImagNumber() * -1;
        Double realAns   = firstReal + lastReal;
        Double imagAns   = outerImag + innerImag;

        compAns.setRealNumber(realAns);
        compAns.setImagNumber(imagAns);
    }
예제 #15
0
 ImageReference GetImage(ComplexData structure, HexPosition position)
 {
     foreach (var lz in hexFileImageReferenceProviders)
     {
         var imgRef = lz.Value.GetImage(structure, position);
         if (imgRef != null)
         {
             return(imgRef.Value);
         }
     }
     return(DsImages.FieldPublic);
 }
예제 #16
0
        public async Task SaveComplex()
        {
            Redis.PersistencyRegistration.RegisterHashSet <ComplexData>();
            var data = new ComplexData();

            data.Date = new DateTime(2012, 02, 02);
            var newKey = new ObjectKey("Complex");
            await Redis.Client.AddRecord(newKey, data).ConfigureAwait(false);

            var result = await Redis.Client.GetRecords <ComplexData>(newKey).FirstAsync();

            Assert.AreEqual(data.Date, result.Date);
        }
예제 #17
0
        public ComplexData GetDTO()
        {
            var dto = new ComplexData()
            {
                String1 = "First",
                String2 = "Second",
                Int1    = 1111,
                Int2    = 2222,
                Date1   = DateTime.Now
            };

            return(dto);
        }
예제 #18
0
        public ComplexData GetDTOError()
        {
            var dto = new ComplexData()
            {
                String1 = "First",
                String2 = "Second",
                Int1    = 1111,
                Int2    = 2222,
                Date1   = DateTime.Now
            };

            throw new InvalidOperationException("Testing exceptions");
        }
예제 #19
0
        public HttpResponseMessage GetDTOErrorAsRequested()
        {
            var dto = new ComplexData()
            {
                String1 = "First",
                String2 = "Second",
                Int1    = 1111,
                Int2    = 2222,
                Date1   = DateTime.Now
            };
            var response = Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Something else did not work");

            return(response);
        }
예제 #20
0
 public Task <ComplexData> Complex(int requestId, ComplexData data, string name, List <SubData> datas)
 {
     return(Task.FromResult(
                new ComplexData
     {
         SomeInt = requestId,
         SomeULong = 0,
         SomeString = name,
         SomeArrString = new List <string> {
             "Test1", "Test2"
         },
         SomeArrRec = datas
     }));
 }
예제 #21
0
        public override HexSpan?GetFieldReferenceSpan(HexBufferFile file, ComplexData structure, HexPosition position)
        {
            if (structure is PeOptionalHeaderData optHdr)
            {
                return(GetFieldReferenceSpan(file, optHdr, position));
            }

            if (structure is PeSectionsData sections)
            {
                return(GetFieldReferenceSpan(file, sections, position));
            }

            return(null);
        }
예제 #22
0
        public HttpResponseMessage GetDTOAsRequested()
        {
            var dto = new ComplexData()
            {
                String1 = "First",
                String2 = "Second",
                Int1    = 1111,
                Int2    = 2222,
                Date1   = DateTime.Now
            };
            var response = Request.CreateResponse(dto);

            response.Headers.Add("Some Header", "Has Some Value");
            return(response);
        }
예제 #23
0
        public override HexSpan?GetFieldReferenceSpan(HexBufferFile file, ComplexData structure, HexPosition position)
        {
            var resourceNameOffs = structure as MultiResourceUnicodeNameAndOffsetData;

            if (resourceNameOffs != null)
            {
                return(GetFieldReferenceSpan(file, resourceNameOffs, position));
            }

            var cor20 = structure as DotNetCor20Data;

            if (cor20 != null)
            {
                return(GetFieldReferenceSpan(file, cor20, position));
            }

            var multiResourceHeader = structure as DotNetMultiFileResourceHeaderData;

            if (multiResourceHeader != null)
            {
                return(GetFieldReferenceSpan(file, multiResourceHeader, position));
            }

            var mdHeader = structure as DotNetMetadataHeaderData;

            if (mdHeader != null)
            {
                return(GetFieldReferenceSpan(file, mdHeader, position));
            }

            var fatBody = structure as FatMethodBody;

            if (fatBody != null)
            {
                return(GetFieldReferenceSpan(file, fatBody, position));
            }

            var record = structure as TableRecordData;

            if (record != null)
            {
                return(GetFieldReferenceSpan(file, record, position));
            }

            return(null);
        }
        public void AddProject(NuGetProjectType projectType, string projectId, int nullCount, int totalCount)
        {
            ProjectTypeAndData projectTypeAndData;

            if (ComplexData.TryGetValue(Data, out object value) && value is ProjectTypeAndData data)
            {
                projectTypeAndData = data;
            }
            else
            {
                projectTypeAndData = new ProjectTypeAndData(projectType.ToString());

                ComplexData[Data] = projectTypeAndData;
            }

            projectTypeAndData.Projects.Add(new ProjectData(projectId, nullCount, totalCount));
        }
예제 #25
0
        public HttpResponseMessage GetDTOAsJason()
        {
            var dto = new ComplexData()
            {
                String1 = "First",
                String2 = "Second",
                Int1    = 1111,
                Int2    = 2222,
                Date1   = DateTime.Now
            };
            var response = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(JsonConvert.SerializeObject(dto), Encoding.UTF8, "application/json")
            };

            return(response);
        }
예제 #26
0
        public void AddProject(NuGetProjectType projectType, string projectId, int nullCount, int totalCount)
        {
            List <ProjectData> projectDatas;

            if (ComplexData.TryGetValue(Data, out object value) && value is List <ProjectData> data)
            {
                projectDatas = data;
            }
            else
            {
                projectDatas = new List <ProjectData>();

                ComplexData[Data] = projectDatas;
            }

            projectDatas.Add(new ProjectData(projectId, projectType, nullCount, totalCount));
        }
예제 #27
0
        public override HexSpan?GetFieldReferenceSpan(HexBufferFile file, ComplexData structure, HexPosition position)
        {
            var optHdr = structure as PeOptionalHeaderData;

            if (optHdr != null)
            {
                return(GetFieldReferenceSpan(file, optHdr, position));
            }

            var sections = structure as PeSectionsData;

            if (sections != null)
            {
                return(GetFieldReferenceSpan(file, sections, position));
            }

            return(null);
        }
예제 #28
0
 public EditFieldCommandContext(HexView hexView, ComplexData structure, SimpleData field)
 {
     if (hexView == null)
     {
         throw new ArgumentNullException(nameof(hexView));
     }
     if (structure == null)
     {
         throw new ArgumentNullException(nameof(structure));
     }
     if (field == null)
     {
         throw new ArgumentNullException(nameof(field));
     }
     HexView   = hexView;
     Structure = structure;
     Field     = field;
 }
        public override object GetReference(HexBufferFile file, ComplexData structure, HexPosition position)
        {
            var peStructure = PEStructure.TryCreate(peStructureProviderFactory, file);

            if (peStructure == null)
            {
                return(null);
            }

            var info = peStructure.GetField(position);

            if (info != null)
            {
                return(new HexFieldReference(file, info.Value.Structure, info.Value.Field));
            }

            return(null);
        }
예제 #30
0
        public async Task ReturnResult8WhenMultiply124()
        {
            var operation = new ComplexData
            {
                What    = "multiply",
                Numbers = new int?[] { 1, 2, 4 }
            };

            var ops = JsonConvert.SerializeObject(operation);

            var stringContent = new StringContent(ops.ToString(), Encoding.UTF8, "application/json");

            var response = await Client.PostAsync("/arrays", stringContent);

            string responseJson = await response.Content.ReadAsStringAsync();

            Assert.Equal("{\"result\":8}", responseJson);
        }
예제 #31
0
 public BranchComplexData(ComplexData left, ComplexData right)
 {
     Left = left;
     Right = right;
 }