Skip to content

Commit

Permalink
fix: ProgressContainer infinitive data refresh
Browse files Browse the repository at this point in the history
  • Loading branch information
Ne4to committed Jan 27, 2024
1 parent 772acbf commit a1e17b4
Show file tree
Hide file tree
Showing 35 changed files with 846 additions and 433 deletions.
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
</PropertyGroup>

<PropertyGroup>
<VersionPrefix>0.3.0</VersionPrefix>
<VersionPrefix>0.4.0</VersionPrefix>
<RepositoryUrl>https://github.com/Ne4to/Heartbeat</RepositoryUrl>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
Expand Down
11 changes: 11 additions & 0 deletions scripts/reinstall-release-tool.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
$ErrorActionPreference = "Stop"

try
{
dotnet tool uninstall -g Heartbeat
dotnet tool install --global Heartbeat
}
catch {
Write-Host 'Install global tool - FAILED!' -ForegroundColor Red
throw
}
2 changes: 1 addition & 1 deletion scripts/update-ts-client.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ try
Set-Location $FrontendRoot
$env:HEARTBEAT_GENERATE_CONTRACTS = 'true'
dotnet swagger tofile --yaml --output $ContractPath $DllPath Heartbeat
dotnet kiota generate -l typescript --openapi $ContractPath -c HeartbeatClient -o ./src/client
dotnet kiota generate -l typescript --openapi $ContractPath -c HeartbeatClient -o ./src/client --clean-output

# TODO try --serializer Microsoft.Kiota.Serialization.Json.JsonSerializationWriterFactory --deserializer Microsoft.Kiota.Serialization.Json.JsonParseNodeFactory
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,7 @@ public IReadOnlyCollection<ObjectTypeStatistics> GetObjectTypeStatistics()
{
return (
from obj in Context.EnumerateObjects(ObjectGcStatus, Generation)
let objSize = obj.Size
//group new { size = objSize } by type.Name into g
group objSize by obj.Type
group obj.Size by obj.Type
into g
let totalSize = (ulong)g.Sum(t => (long)t)
let clrType = g.Key
Expand Down
20 changes: 10 additions & 10 deletions src/Heartbeat.Runtime/Extensions/ClrValueTypeExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,16 +56,16 @@ private static bool IsValueDefault(ulong objRef, ClrInstanceField field)
{
return field.ElementType switch
{
ClrElementType.Boolean => field.Read<bool>(objRef, true) == false,
ClrElementType.Char => field.Read<char>(objRef, true) == (char)0,
ClrElementType.Int8 => field.Read<sbyte>(objRef, true) == (sbyte)0,
ClrElementType.UInt8 => field.Read<byte>(objRef, true) == (byte)0,
ClrElementType.Int16 => field.Read<short>(objRef, true) == (short)0,
ClrElementType.UInt16 => field.Read<ushort>(objRef, true) == (ushort)0,
ClrElementType.Int32 => field.Read<int>(objRef, true) == 0,
ClrElementType.UInt32 => field.Read<int>(objRef, true) == (uint)0,
ClrElementType.Int64 => field.Read<long>(objRef, true) == 0L,
ClrElementType.UInt64 => field.Read<ulong>(objRef, true) == 0UL,
ClrElementType.Boolean => field.Read<bool>(objRef, true) == default,
ClrElementType.Char => field.Read<char>(objRef, true) == default,
ClrElementType.Int8 => field.Read<sbyte>(objRef, true) == default,
ClrElementType.UInt8 => field.Read<byte>(objRef, true) == default,
ClrElementType.Int16 => field.Read<short>(objRef, true) == default,
ClrElementType.UInt16 => field.Read<ushort>(objRef, true) == default,
ClrElementType.Int32 => field.Read<int>(objRef, true) == default,
ClrElementType.UInt32 => field.Read<int>(objRef, true) == default,
ClrElementType.Int64 => field.Read<long>(objRef, true) == default,
ClrElementType.UInt64 => field.Read<ulong>(objRef, true) == default,
ClrElementType.Float => field.Read<float>(objRef, true) == 0f,
ClrElementType.Double => field.Read<double>(objRef, true) == 0d,
ClrElementType.NativeInt => field.Read<nint>(objRef, true) == nint.Zero,
Expand Down
40 changes: 35 additions & 5 deletions src/Heartbeat/ClientApp/api.yml
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,41 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'/api/dump/object/{address}/fields':
get:
tags:
- Dump
summary: Get object fields
operationId: GetClrObjectFields
parameters:
- name: address
in: path
required: true
style: simple
schema:
type: integer
format: int64
responses:
'500':
description: Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ClrObjectField'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'/api/dump/object/{address}/roots':
get:
tags:
Expand Down Expand Up @@ -513,7 +548,6 @@ components:
GetClrObjectResult:
required:
- address
- fields
- generation
- methodTable
- size
Expand All @@ -539,10 +573,6 @@ components:
value:
type: string
nullable: true
fields:
type: array
items:
$ref: '#/components/schemas/ClrObjectField'
additionalProperties: false
GetObjectInstancesResult:
required:
Expand Down
2 changes: 1 addition & 1 deletion src/Heartbeat/ClientApp/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {Home} from './pages/home'
import headDump from './pages/heapDumpStat'
import segments from './pages/segments'
import objectInstances from './pages/objectInstances'
import clrObject from './clrObject'
import clrObject from './pages/clrObject'
import roots from './pages/roots'
import modules from './pages/modules'
import arraysGrid from './pages/arraysGrid'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/* tslint:disable */
/* eslint-disable */
// Generated by Microsoft Kiota
import { createClrObjectFieldFromDiscriminatorValue, createProblemDetailsFromDiscriminatorValue, deserializeIntoProblemDetails, serializeProblemDetails, type ClrObjectField, type ProblemDetails } from '../../../../../models/';
import { BaseRequestBuilder, HttpMethod, RequestInformation, type Parsable, type ParsableFactory, type RequestAdapter, type RequestConfiguration, type RequestOption } from '@microsoft/kiota-abstractions';

/**
* Builds and executes requests for operations under /api/dump/object/{address}/fields
*/
export class FieldsRequestBuilder extends BaseRequestBuilder<FieldsRequestBuilder> {
/**
* Instantiates a new FieldsRequestBuilder and sets the default values.
* @param pathParameters The raw url or the Url template parameters for the request.
* @param requestAdapter The request adapter to use to execute the requests.
*/
public constructor(pathParameters: Record<string, unknown> | string | undefined, requestAdapter: RequestAdapter) {
super(pathParameters, requestAdapter, "{+baseurl}/api/dump/object/{address}/fields", (x, y) => new FieldsRequestBuilder(x, y));
}
/**
* Get object fields
* @param requestConfiguration Configuration for the request such as headers, query parameters, and middleware options.
* @returns a Promise of ClrObjectField
*/
public get(requestConfiguration?: RequestConfiguration<object> | undefined) : Promise<ClrObjectField[] | undefined> {
const requestInfo = this.toGetRequestInformation(
requestConfiguration
);
const errorMapping = {
"404": createProblemDetailsFromDiscriminatorValue,
"500": createProblemDetailsFromDiscriminatorValue,
} as Record<string, ParsableFactory<Parsable>>;
return this.requestAdapter.sendCollectionAsync<ClrObjectField>(requestInfo, createClrObjectFieldFromDiscriminatorValue, errorMapping);
}
/**
* Get object fields
* @param requestConfiguration Configuration for the request such as headers, query parameters, and middleware options.
* @returns a RequestInformation
*/
public toGetRequestInformation(requestConfiguration?: RequestConfiguration<object> | undefined) : RequestInformation {
const requestInfo = new RequestInformation(HttpMethod.GET, this.urlTemplate, this.pathParameters);
requestInfo.configure(requestConfiguration);
requestInfo.headers.tryAdd("Accept", "application/json");
return requestInfo;
}
}
/* tslint:enable */
/* eslint-enable */
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,20 @@
/* eslint-disable */
// Generated by Microsoft Kiota
import { createGetClrObjectResultFromDiscriminatorValue, createProblemDetailsFromDiscriminatorValue, deserializeIntoProblemDetails, serializeProblemDetails, type GetClrObjectResult, type ProblemDetails } from '../../../../models/';
import { FieldsRequestBuilder } from './fields/';
import { RootsRequestBuilder } from './roots/';
import { BaseRequestBuilder, HttpMethod, RequestInformation, type Parsable, type ParsableFactory, type RequestAdapter, type RequestConfiguration, type RequestOption } from '@microsoft/kiota-abstractions';

/**
* Builds and executes requests for operations under /api/dump/object/{address}
*/
export class WithAddressItemRequestBuilder extends BaseRequestBuilder<WithAddressItemRequestBuilder> {
/**
* The fields property
*/
public get fields(): FieldsRequestBuilder {
return new FieldsRequestBuilder(this.pathParameters, this.requestAdapter);
}
/**
* The roots property
*/
Expand Down
2 changes: 1 addition & 1 deletion src/Heartbeat/ClientApp/src/client/kiota-lock.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"descriptionHash": "C8AA6F5F9033AED37E5F620BE4B5E0F3469B936452E641FF28F0BB7C12B59F405D50EF0E1696D76A34962B94903018F34C6678287699BE4980C7FFCC7BB4EBE4",
"descriptionHash": "E058DCE3BA746E408EADE32EA9E442AFC9D72743F2398CD19A5CCA613B92AB688674BFB60B624AA3AD06461E16CA4C2EBC6F9C5C62315B4F01C073DEF44C1C6C",
"descriptionLocation": "..\\..\\api.yml",
"lockFileVersion": "1.0.0",
"kiotaVersion": "1.10.1",
Expand Down
6 changes: 0 additions & 6 deletions src/Heartbeat/ClientApp/src/client/models/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,6 @@ export function deserializeIntoDumpInfo(dumpInfo: DumpInfo | undefined = {} as D
export function deserializeIntoGetClrObjectResult(getClrObjectResult: GetClrObjectResult | undefined = {} as GetClrObjectResult) : Record<string, (node: ParseNode) => void> {
return {
"address": n => { getClrObjectResult.address = n.getNumberValue(); },
"fields": n => { getClrObjectResult.fields = n.getCollectionOfObjectValues<ClrObjectField>(createClrObjectFieldFromDiscriminatorValue); },
"generation": n => { getClrObjectResult.generation = n.getEnumValue<Generation>(GenerationObject); },
"methodTable": n => { getClrObjectResult.methodTable = n.getNumberValue(); },
"moduleName": n => { getClrObjectResult.moduleName = n.getStringValue(); },
Expand Down Expand Up @@ -304,10 +303,6 @@ export interface GetClrObjectResult extends Parsable {
* The address property
*/
address?: number;
/**
* The fields property
*/
fields?: ClrObjectField[];
/**
* The generation property
*/
Expand Down Expand Up @@ -516,7 +511,6 @@ export function serializeDumpInfo(writer: SerializationWriter, dumpInfo: DumpInf
}
export function serializeGetClrObjectResult(writer: SerializationWriter, getClrObjectResult: GetClrObjectResult | undefined = {} as GetClrObjectResult) : void {
writer.writeNumberValue("address", getClrObjectResult.address);
writer.writeCollectionOfObjectValues<ClrObjectField>("fields", getClrObjectResult.fields, serializeClrObjectField);
writer.writeEnumValue<Generation>("generation", getClrObjectResult.generation);
writer.writeNumberValue("methodTable", getClrObjectResult.methodTable);
writer.writeStringValue("moduleName", getClrObjectResult.moduleName);
Expand Down
146 changes: 0 additions & 146 deletions src/Heartbeat/ClientApp/src/clrObject/ClrObject.tsx

This file was deleted.

Loading

0 comments on commit a1e17b4

Please sign in to comment.