diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 9cb4e4799..4ba593e40 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -9,7 +9,7 @@ on:
jobs:
dotnet-bxes-unit-tests:
- runs-on: windows-latest
+ runs-on: windows-2022
steps:
- uses: actions/checkout@v4
@@ -25,7 +25,7 @@ jobs:
run: dotnet test ./bxes/src/csharp/Bxes.Tests
rust-bxes-unit-tests:
- runs-on: windows-latest
+ runs-on: windows-2022
steps:
- uses: actions/checkout@v4
@@ -37,7 +37,7 @@ jobs:
RUSTFLAGS: ""
dotnet-procfiler-unit-tests:
- runs-on: windows-latest
+ runs-on: windows-2022
steps:
- uses: actions/checkout@v4
diff --git a/.run/unix/ProcfilerOnline.sh b/.run/unix/ProcfilerOnline.sh
index 58a62d450..c77fa3e74 100755
--- a/.run/unix/ProcfilerOnline.sh
+++ b/.run/unix/ProcfilerOnline.sh
@@ -4,11 +4,12 @@ export ProduceGcEvents=false
export OnlineProcfilerSettings__KafkaSettings__TopicName=my-topic
export OnlineProcfilerSettings__KafkaSettings__BootstrapServers=localhost:9092
+dotnet clean "$PM_IDE_ROOT"/All.sln
dotnet build "$PM_IDE_ROOT"/Procfiler/src/dotnet/ProcfilerLoggerProvider/ -c Release
dotnet build "$PM_IDE_ROOT"/Procfiler/test_data/source/WFWebApp/WFWebApp.csproj -c Release
dotnet build "$PM_IDE_ROOT"/All.sln -c Release
-"$PM_IDE_ROOT"/Procfiler/src/dotnet/ProcfilerOnline/bin/Release/net9.0/ProcfilerOnline procfiler-online collect-online \
+"$PM_IDE_ROOT"/Procfiler/src/dotnet/ProcfilerOnline/bin/Release/net10.0/ProcfilerOnline procfiler-online collect-online \
-dll-path "$PM_IDE_ROOT"/Procfiler/test_data/source/WFWebApp/bin/Release/net9.0/WFWebApp.dll \
--target-methods-regex \
WFWebApp \
diff --git a/.run/windows/Procfiler.cmd b/.run/windows/Procfiler.cmd
index 463cb4663..6d2c01a79 100644
--- a/.run/windows/Procfiler.cmd
+++ b/.run/windows/Procfiler.cmd
@@ -1,6 +1,7 @@
+dotnet clean %PM_IDE_ROOT%/All.sln
dotnet build %PM_IDE_ROOT%/All.sln
-%PM_IDE_ROOT%/Procfiler/src/dotnet/Procfiler/bin/Release/net9.0/Procfiler.exe procfiler^
+%PM_IDE_ROOT%/Procfiler/src/dotnet/Procfiler/bin/Release/net10.0/Procfiler.exe procfiler^
collect-to-xes^
-csproj^
%PM_IDE_ROOT%\Procfiler\test_data\source\LOHAllocations\LOHAllocations.csproj^
diff --git a/.run/windows/ProcfilerOnline.cmd b/.run/windows/ProcfilerOnline.cmd
index 0c3acf6b1..78dfefafc 100644
--- a/.run/windows/ProcfilerOnline.cmd
+++ b/.run/windows/ProcfilerOnline.cmd
@@ -1,16 +1,17 @@
set ProduceEventsToKafka=true
set ProduceBxesKafkaEvents=true
-set ProduceGcEvents=false
+set ProduceGcEvents=true
set OnlineProcfilerSettings__KafkaSettings__TopicName=my-topic
set OnlineProcfilerSettings__KafkaSettings__BootstrapServers=localhost:9092
+dotnet clean %PM_IDE_ROOT%/All.sln
dotnet build %PM_IDE_ROOT%/All.sln -c Release
dotnet build %PM_IDE_ROOT%/Procfiler/src/dotnet/ProcfilerLoggerProvider/ -c Release
dotnet build %PM_IDE_ROOT%/Procfiler/test_data/source/WFWebApp -c Release
-%PM_IDE_ROOT%/Procfiler/src/dotnet/ProcfilerOnline/bin/Release/net9.0/ProcfilerOnline.exe procfiler-online collect-online^
- -dll-path %PM_IDE_ROOT%\Procfiler\test_data\source\WFWebApp\bin\Release\net9.0\WFWebApp.dll^
+%PM_IDE_ROOT%/Procfiler/src/dotnet/ProcfilerOnline/bin/Release/net10.0/ProcfilerOnline.exe procfiler-online collect-online^
+ -dll-path D:\work\DPN-Soundness-Verification\DPN.VerificationApp\bin\Debug\net10.0-windows\DPNVerifier.Desktop.dll^
--target-methods-regex^
- WFWebApp^
+ DPN\.Soundness^
--methods-filter-regex^
- WFWebApp^
\ No newline at end of file
+ DPN\.Soundness^
\ No newline at end of file
diff --git a/Ficus/examples/kafka_pipelines/activities_ecfg_pipeline.py b/Ficus/examples/kafka_pipelines/activities_ecfg_pipeline.py
new file mode 100644
index 000000000..830599bf2
--- /dev/null
+++ b/Ficus/examples/kafka_pipelines/activities_ecfg_pipeline.py
@@ -0,0 +1,88 @@
+from common import execute_pipeline, pipeline_with_default_cfg, PipelinePartInfo
+from ficus import *
+import os
+
+execute_pipeline(
+ 'MySubscription',
+ 'Pipeline',
+ [
+ pipeline_with_default_cfg([
+ RemainOnlyMethodStartEvents(),
+ SetMethodsDisplayName(),
+ ShortenAllocationType(),
+ PrepareSoftwareLog(time_attribute='QpcStamp'),
+ TerminateIfEmptyLog(),
+ TracesDiversityDiagramCanvas(),
+ AddStartEndArtificialEvents(),
+ DiscoverLoopsStrict(),
+ CreateLogFromActivitiesInstances(strategy=UndefinedActivityHandlingStrategy.InsertAllEvents),
+ ClearActivitiesRelatedStuff(),
+ DiscoverActivitiesForSeveralLevels(['.*'],
+ PatternsKind.MaximalRepeats,
+ activity_filter_kind=ActivityFilterKind.NoFilter),
+ DrawFullActivitiesDiagramCanvas(plot_legend=False, height_scale=10, width_scale=0.01),
+ ClusterizeActivitiesFromTracesDbscan(min_events_count_in_cluster=2,
+ tolerance=0.1,
+ activities_repr_source=ActivitiesRepresentationSource.EventClasses,
+ distance=Distance.Cosine,
+ activity_level=0,
+ view_params=(30, 60),
+ legend_cols=4,
+ visualization_method=DatasetVisualizationMethod.TSNE,
+ n_components=NComponents.Three),
+ DrawFullActivitiesDiagramCanvas(plot_legend=False, height_scale=10, width_scale=0.01),
+ CreateLogFromActivitiesInstances(strategy=UndefinedActivityHandlingStrategy.InsertAllEvents),
+ ClearActivitiesRelatedStuff(),
+ TracesDiversityDiagramCanvas(),
+ DiscoverECFG(root_sequence_kind=RootSequenceKind.FindBest,
+ merge_sequences_of_events=False),
+ AnnotateGraphWithTime(TimeAnnotationKind.Mean),
+ ]),
+ PipelinePartInfo(
+ [
+ RemainEventsByRegex('GC/'),
+ FilterEventsByRegex('GC/RestartEEStart'),
+ FilterEventsByRegex('GC/RestartEEStop'),
+ FilterEventsByRegex('GC/SuspendEEStart'),
+ FilterEventsByRegex('GC/SuspendEEStop'),
+ FilterEventsByRegex('GC/Finaliz'),
+ FilterEventsByRegex('GC/SampledObject'),
+ FilterEventsByRegex('GC/SetGCHandle'),
+ FilterEventsByRegex('GC/BGCAllocWait'),
+ FilterEventsByRegex('GC/Pin'),
+ FilterEventsByRegex('GC/CreateSegment'),
+ FilterEventsByRegex('GC/Triggered'),
+ TerminateIfEmptyLog(),
+ DiscoverCases(start_regex='GC/Start', end_regex='GC/Stop', inline_inner_cases=True, pipeline=Pipeline(
+ DiscoverMultithreadedDfg(thread_attribute='NativeThreadId'),
+ ViewGraph(export_path=os.path.join(os.path.abspath(os.curdir), 'multithreaded.png')),
+ DiscoverDirectlyFollowsGraph(),
+ ViewGraph(export_path=os.path.join(os.path.abspath(os.curdir), 'default.png')),
+ AbstractMultithreadedEventsGroups(
+ thread_attribute='NativeThreadId',
+ time_attribute='QpcStamp',
+ n_components=NComponents.Two,
+ distance=Distance.Cosine,
+ tolerance=0.1,
+ view_params=(-50, 20),
+ put_noise_events_in_one_cluster=False,
+ min_events_count_in_cluster=2,
+ feature_count_kind=FeatureCountKind.Count,
+ visualization_method=DatasetVisualizationMethod.TSNE,
+ after_clusterization_pipeline=Pipeline(
+ AddStartEndArtificialEvents(),
+ TracesDiversityDiagramCanvas(),
+ DiscoverLoopsStrict(),
+ CreateLogFromActivitiesInstances(strategy=UndefinedActivityHandlingStrategy.InsertAllEvents),
+ DiscoverECFG(root_sequence_kind=RootSequenceKind.FindBest,
+ merge_sequences_of_events=False),
+ AnnotateGraphWithTime(TimeAnnotationKind.Mean),
+ )
+ ),
+ ))
+ ],
+ os.path.join(os.path.abspath(os.curdir), 'gc_config.json'),
+ 'GC pipeline'
+ )
+ ]
+)
diff --git a/Ficus/examples/kafka_pipelines/common.py b/Ficus/examples/kafka_pipelines/common.py
index c548b05cf..d225da59b 100644
--- a/Ficus/examples/kafka_pipelines/common.py
+++ b/Ficus/examples/kafka_pipelines/common.py
@@ -1,57 +1,80 @@
+from dataclasses import dataclass
+
from ficus import *
import os
import time
+
def env_or_default(env_name: str, default: str):
- env = os.getenv(env_name)
- return env if env is not None else default
-
-def execute_pipeline(sub_name: str, pipeline_name: str, pipeline_parts: list[PipelinePart], trace_filtering_pipeline = Pipeline()):
- consumer_servers = env_or_default('CONSUMER_BOOTSTRAP_SERVERS', 'localhost:9092')
- consumer_topic = env_or_default('CONSUMER_TOPIC', 'my-topic')
- consumer_group = env_or_default('CONSUMER_GROUP_ID', 'xd')
-
- kafka_consumer_metadata = KafkaPipelineMetadata(
- topic_name=consumer_topic,
- kafka_consumer_configuration={
- 'bootstrap.servers': consumer_servers,
- 'group.id': consumer_group,
- 'auto.offset.reset': 'earliest',
- 'message.max.bytes': '25728640',
- }
- )
-
- producer_servers = env_or_default('PRODUCER_BOOTSTRAP_SERVERS', 'localhost:9092')
- producer_topic = env_or_default('PRODUCER_TOPIC', 'ficus-topic')
-
- kafka_producer_metadata = KafkaPipelineMetadata(
- topic_name=producer_topic,
- kafka_consumer_configuration={
- 'bootstrap.servers': producer_servers,
- 'message.max.bytes': '25728640',
- }
- )
-
- ficus_backend = env_or_default('FICUS_BACKEND', 'localhost:8080')
-
- subscription_id = create_kafka_subscription(sub_name, kafka_consumer_metadata, ficus_backend)
- if subscription_id is None:
- return
-
- with open(os.path.join(os.path.abspath(os.curdir), 'software_data_config.json'), "r") as f:
- software_data_config = f.read()
+ env = os.getenv(env_name)
+ return env if env is not None else default
+
+
+@dataclass
+class PipelinePartInfo:
+ parts: list[PipelinePart]
+ config_path: str
+ name: str
+
+
+def pipeline_with_default_cfg(pipeline_parts: list[PipelinePart]) -> PipelinePartInfo:
+ return PipelinePartInfo(
+ pipeline_parts,
+ os.path.join(os.path.abspath(os.curdir), 'software_data_config.json'),
+ 'Pipeline'
+ )
+
+
+def execute_pipeline(sub_name: str,
+ pipeline_name: str,
+ pipelines: list[PipelinePartInfo],
+ trace_filtering_pipeline=Pipeline()):
+ consumer_servers = env_or_default('CONSUMER_BOOTSTRAP_SERVERS', 'localhost:9092')
+ consumer_topic = env_or_default('CONSUMER_TOPIC', 'my-topic')
+ consumer_group = env_or_default('CONSUMER_GROUP_ID', 'xd')
+
+ kafka_consumer_metadata = KafkaPipelineMetadata(
+ topic_name=consumer_topic,
+ kafka_consumer_configuration={
+ 'bootstrap.servers': consumer_servers,
+ 'group.id': consumer_group,
+ 'auto.offset.reset': 'earliest',
+ 'message.max.bytes': '25728640',
+ }
+ )
+
+ producer_servers = env_or_default('PRODUCER_BOOTSTRAP_SERVERS', 'localhost:9092')
+ producer_topic = env_or_default('PRODUCER_TOPIC', 'ficus-topic')
+
+ kafka_producer_metadata = KafkaPipelineMetadata(
+ topic_name=producer_topic,
+ kafka_consumer_configuration={
+ 'bootstrap.servers': producer_servers,
+ 'message.max.bytes': '25728640',
+ }
+ )
+
+ ficus_backend = env_or_default('FICUS_BACKEND', 'localhost:8080')
+
+ subscription_id = create_kafka_subscription(sub_name, kafka_consumer_metadata, ficus_backend)
+ if subscription_id is None:
+ return
+
+ for p in pipelines:
+ with open(p.config_path, "r") as f:
+ software_data_config = f.read()
KafkaPipeline(
- pipeline_parts
- ).execute(ficus_backend,
- subscription_id,
- pipeline_name,
- kafka_producer_metadata,
+ p.parts
+ ).execute(ficus_backend,
+ subscription_id,
+ p.name,
+ kafka_producer_metadata,
initial_context={
'software_data_extraction_config': JsonContextValue(software_data_config)
},
- streaming_configuration=create_queue_traces_configuration(3))
+ streaming_configuration=create_queue_traces_configuration(100))
- if env_or_default('SLEEP', None) is not None:
- while True:
- time.sleep(10 ** 8)
+ if env_or_default('SLEEP', None) is not None:
+ while True:
+ time.sleep(10 ** 8)
diff --git a/Ficus/examples/kafka_pipelines/gc_config.json b/Ficus/examples/kafka_pipelines/gc_config.json
new file mode 100644
index 000000000..dd6f4b520
--- /dev/null
+++ b/Ficus/examples/kafka_pipelines/gc_config.json
@@ -0,0 +1,25 @@
+{
+ "pie_chart_extraction_configs": [
+ {
+ "event_class_regex": "GC\/SampledObject",
+ "info": {
+ "base": {
+ "name": "Object Allocations",
+ "units": "bytes"
+ },
+ "count_attr": "TotalSizeForTypeSample",
+ "grouping_attr": {
+ "single_attribute": {
+ "name": "TypeName",
+ "fallback_value": "UNRESOLVED"
+ }
+ }
+ }
+ }
+ ],
+ "simple_counter_configs": [],
+ "activities_duration_configs": [],
+ "raw_control_flow_regexes": [
+ "^((?!GC\\/SampledObject).)*$"
+ ]
+}
\ No newline at end of file
diff --git a/Ficus/examples/kafka_pipelines/gc_pipeline.py b/Ficus/examples/kafka_pipelines/gc_pipeline.py
index cda334b59..53efad4d3 100644
--- a/Ficus/examples/kafka_pipelines/gc_pipeline.py
+++ b/Ficus/examples/kafka_pipelines/gc_pipeline.py
@@ -1,30 +1,32 @@
-from common import execute_pipeline
+from common import execute_pipeline, pipeline_with_default_cfg
from ficus import *
execute_pipeline(
- 'MySubscription',
- 'GCPipeline',
- [
- RemainEventsByRegex('GC/'),
- FilterEventsByRegex('GC/RestartEEStart'),
- FilterEventsByRegex('GC/RestartEEStop'),
- FilterEventsByRegex('GC/SuspendEEStart'),
- FilterEventsByRegex('GC/SuspendEEStop'),
- FilterEventsByRegex('GC/Finaliz'),
- FilterEventsByRegex('GC/SampledObject'),
- FilterEventsByRegex('GC/SetGCHandle'),
- FilterEventsByRegex('GC/BGCAllocWait'),
- FilterEventsByRegex('GC/Pin'),
- FilterEventsByRegex('GC/CreateSegment'),
- FilterEventsByRegex('GC/Triggered'),
- FilterEventsByRegex('GC/Join'),
- FilterEventsByRegex('Heap'),
- FilterEventsByRegex('Bulk'),
- FilterEventsByRegex('Mark'),
- ShortenAllocationType(),
- ShortenMethodNames(),
- AddStartEndArtificialEvents(),
- DiscoverECFG(root_sequence_kind=RootSequenceKind.FindBest,
- merge_sequences_of_events=True),
- ]
+ 'MySubscription',
+ 'GCPipeline',
+ [
+ pipeline_with_default_cfg([
+ RemainEventsByRegex('GC/'),
+ FilterEventsByRegex('GC/RestartEEStart'),
+ FilterEventsByRegex('GC/RestartEEStop'),
+ FilterEventsByRegex('GC/SuspendEEStart'),
+ FilterEventsByRegex('GC/SuspendEEStop'),
+ FilterEventsByRegex('GC/Finaliz'),
+ FilterEventsByRegex('GC/SampledObject'),
+ FilterEventsByRegex('GC/SetGCHandle'),
+ FilterEventsByRegex('GC/BGCAllocWait'),
+ FilterEventsByRegex('GC/Pin'),
+ FilterEventsByRegex('GC/CreateSegment'),
+ FilterEventsByRegex('GC/Triggered'),
+ FilterEventsByRegex('GC/Join'),
+ FilterEventsByRegex('Heap'),
+ FilterEventsByRegex('Bulk'),
+ FilterEventsByRegex('Mark'),
+ ShortenAllocationType(),
+ ShortenMethodNames(),
+ AddStartEndArtificialEvents(),
+ DiscoverECFG(root_sequence_kind=RootSequenceKind.FindBest,
+ merge_sequences_of_events=True),
+ ])
+ ]
)
diff --git a/Ficus/examples/kafka_pipelines/kafka_pipeline.py b/Ficus/examples/kafka_pipelines/kafka_pipeline.py
index d33df3759..9f4c5d185 100644
--- a/Ficus/examples/kafka_pipelines/kafka_pipeline.py
+++ b/Ficus/examples/kafka_pipelines/kafka_pipeline.py
@@ -1,23 +1,25 @@
-from common import execute_pipeline
+from common import execute_pipeline, pipeline_with_default_cfg
from ficus import *
execute_pipeline(
- 'MySubscription',
- 'Pipeline',
- [
- RemainOnlyMethodStartEvents(),
- SetMethodsDisplayName(),
- ShortenAllocationType(),
- PrepareSoftwareLog(time_attribute = 'QpcStamp'),
- TerminateIfEmptyLog(),
- TracesDiversityDiagramCanvas(),
- AddStartEndArtificialEvents(),
- TracesDiversityDiagramCanvas(),
- DiscoverLoopsStrict(),
- CreateLogFromActivitiesInstances(strategy=UndefinedActivityHandlingStrategy.InsertAllEvents),
- TracesDiversityDiagramCanvas(),
- DiscoverECFG(root_sequence_kind=RootSequenceKind.FindBest,
- merge_sequences_of_events=False),
- AnnotateGraphWithTime(TimeAnnotationKind.Mean),
- ]
+ 'MySubscription',
+ 'Pipeline',
+ [
+ pipeline_with_default_cfg([
+ RemainOnlyMethodStartEvents(),
+ SetMethodsDisplayName(),
+ ShortenAllocationType(),
+ PrepareSoftwareLog(time_attribute='QpcStamp'),
+ TerminateIfEmptyLog(),
+ TracesDiversityDiagramCanvas(),
+ AddStartEndArtificialEvents(),
+ TracesDiversityDiagramCanvas(),
+ DiscoverLoopsStrict(),
+ CreateLogFromActivitiesInstances(strategy=UndefinedActivityHandlingStrategy.InsertAllEvents),
+ TracesDiversityDiagramCanvas(),
+ DiscoverECFG(root_sequence_kind=RootSequenceKind.FindBest,
+ merge_sequences_of_events=False),
+ AnnotateGraphWithTime(TimeAnnotationKind.Mean),
+ ])
+ ]
)
diff --git a/Ficus/examples/kafka_pipelines/names_log_kafka_pipeline.py b/Ficus/examples/kafka_pipelines/names_log_kafka_pipeline.py
index b760ac73b..fb9edd3fd 100644
--- a/Ficus/examples/kafka_pipelines/names_log_kafka_pipeline.py
+++ b/Ficus/examples/kafka_pipelines/names_log_kafka_pipeline.py
@@ -1,10 +1,12 @@
-from common import execute_pipeline
+from common import execute_pipeline, pipeline_with_default_cfg
from ficus import *
execute_pipeline(
- 'MySubscription',
- 'TestPipeline',
- [
- PrintEventLog()
- ]
+ 'MySubscription',
+ 'TestPipeline',
+ [
+ pipeline_with_default_cfg([
+ PrintEventLog()
+ ])
+ ]
)
diff --git a/Ficus/examples/kafka_pipelines/software_data_config.json b/Ficus/examples/kafka_pipelines/software_data_config.json
index 1e3a2cf8f..b56fbdf31 100644
--- a/Ficus/examples/kafka_pipelines/software_data_config.json
+++ b/Ficus/examples/kafka_pipelines/software_data_config.json
@@ -343,6 +343,6 @@
}
],
"raw_control_flow_regexes": [
- "BusinessEvent"
+ "ProcfilerMethod"
]
}
\ No newline at end of file
diff --git a/Ficus/examples/kafka_pipelines/streaming.py b/Ficus/examples/kafka_pipelines/streaming.py
index 3b1f327cd..3561fbe4c 100644
--- a/Ficus/examples/kafka_pipelines/streaming.py
+++ b/Ficus/examples/kafka_pipelines/streaming.py
@@ -2,12 +2,14 @@
from ficus import *
execute_pipeline(
- 'MySubscription',
- 'StreamingPipeline',
+ 'MySubscription',
+ 'StreamingPipeline',
+ [
[
- ViewDirectlyFollowsGraphStream(),
- ],
- trace_filtering_pipeline=Pipeline(
- RemainEventsByRegex('(Procfiler|Business)'),
- )
+ ViewDirectlyFollowsGraphStream(),
+ ]
+ ],
+ trace_filtering_pipeline=Pipeline(
+ RemainEventsByRegex('(Procfiler|Business)'),
+ )
)
diff --git a/Ficus/protos/backend_service.proto b/Ficus/protos/backend_service.proto
index 9fb67dec7..7880a40e8 100644
--- a/Ficus/protos/backend_service.proto
+++ b/Ficus/protos/backend_service.proto
@@ -23,12 +23,7 @@ message GrpcPipelinePartToBackends {
service GrpcBackendService {
rpc ExecutePipeline(GrpcProxyPipelineExecutionRequest) returns (stream GrpcPipelinePartExecutionResult);
-
- rpc GetContextValue(GrpcGetContextValueRequest) returns (GrpcGuid);
- rpc GetAllContextValues(GrpcGuid) returns (GrpcGetAllContextValuesResult);
-
rpc DropExecutionResult(GrpcGuid) returns (google.protobuf.Empty);
-
rpc GetBackendInfo(google.protobuf.Empty) returns (GrpcFicusBackendInfo);
}
@@ -41,11 +36,6 @@ message GrpcPipelinePartDescriptor {
string name = 1;
}
-message GrpcGetContextValueRequest {
- GrpcGuid executionId = 2;
- GrpcContextKey key = 1;
-}
-
message GrpcPipelineExecutionRequest {
GrpcPipeline pipeline = 1;
repeated GrpcContextKeyValue initialContext = 2;
@@ -70,7 +60,8 @@ message GrpcPipelinePartLogMessage {
message GrpcPipelinePartResult {
repeated GrpcContextValueWithKeyName contextValues = 1;
- GrpcGuid guid = 2;
+ GrpcGuid pipeline_part_id = 2;
+ string pipeline_part_name = 3;
}
message GrpcPipelineFinalResult {
@@ -79,7 +70,3 @@ message GrpcPipelineFinalResult {
string error = 2;
}
}
-
-message GrpcGetAllContextValuesResult {
- repeated GrpcGuid context_values = 1;
-}
\ No newline at end of file
diff --git a/Ficus/protos/context_values_service.proto b/Ficus/protos/context_values_service.proto
index 365449b98..a0abaf4aa 100644
--- a/Ficus/protos/context_values_service.proto
+++ b/Ficus/protos/context_values_service.proto
@@ -12,6 +12,9 @@ service GrpcContextValuesService {
rpc SetContextValue(stream GrpcContextValuePart) returns (GrpcGuid);
rpc GetContextValue(GrpcGuid) returns (stream GrpcContextValuePart);
rpc DropContextValues(GrpcDropContextValuesRequest) returns (google.protobuf.Empty);
+
+ rpc GetContextValueId(GrpcGetContextValueRequest) returns (GrpcGuid);
+ rpc GetAllContextValuesIds(GrpcGuid) returns (GrpcGetAllContextValuesResult);
}
message GrpcContextValuePart {
@@ -21,4 +24,13 @@ message GrpcContextValuePart {
message GrpcDropContextValuesRequest {
repeated GrpcGuid ids = 1;
-}
\ No newline at end of file
+}
+
+message GrpcGetContextValueRequest {
+ GrpcGuid executionId = 2;
+ GrpcContextKey key = 1;
+}
+
+message GrpcGetAllContextValuesResult {
+ repeated GrpcGuid context_values = 1;
+}
diff --git a/Ficus/protos/front_contract.proto b/Ficus/protos/front_contract.proto
index 7e7d392f1..49905de65 100644
--- a/Ficus/protos/front_contract.proto
+++ b/Ficus/protos/front_contract.proto
@@ -32,8 +32,16 @@ message GrpcGetPipelineCaseContextValuesRequest {
message GrpcKafkaUpdate {
GrpcProcessCaseMetadata processCaseMetadata = 1;
- GrpcPipelinePartInfo pipelinePartInfo = 2;
- repeated GrpcContextValueWithKeyName contextValues = 3;
+}
+
+message GrpcPipelinePartInfo {
+ string name = 1;
+ GrpcGuid id = 2;
+ GrpcGuid execution_id = 3;
+}
+
+message GrpcKafkaContextValues {
+ repeated GrpcContextValueWithKeyName contextValues = 1;
}
message GrpcProcessCaseMetadata {
@@ -65,9 +73,3 @@ message GrpcPipelinePartContextValues {
message GrpcCasePipelinePartExecutionResult {
repeated GrpcContextValueWithKeyName contextValues = 3;
}
-
-message GrpcPipelinePartInfo {
- string name = 1;
- GrpcGuid id = 2;
- GrpcGuid execution_id = 3;
-}
\ No newline at end of file
diff --git a/Ficus/protos/kafka_service.proto b/Ficus/protos/kafka_service.proto
index 25d948116..ba76ce791 100644
--- a/Ficus/protos/kafka_service.proto
+++ b/Ficus/protos/kafka_service.proto
@@ -13,6 +13,8 @@ service GrpcKafkaService {
rpc SubscribeForKafkaTopic(GrpcSubscribeToKafkaRequest) returns (GrpcKafkaResult);
rpc UnsubscribeFromKafkaTopic(GrpcUnsubscribeFromKafkaRequest) returns (GrpcKafkaResult);
+ rpc GetCurrentContextValues(GrpcGetCurrentContextValuesRequest) returns (stream GrpcPipelinePartExecutionResult);
+
rpc AddPipelineToSubscription(GrpcAddPipelineRequest) returns (GrpcKafkaResult);
rpc AddPipelineToSubscriptionStream(GrpcAddPipelineStreamRequest) returns (stream GrpcPipelinePartExecutionResult);
@@ -24,6 +26,12 @@ service GrpcKafkaService {
rpc ExecutePipelineAndProduceToKafka(GrpcExecutePipelineAndProduceKafkaRequest) returns (stream GrpcPipelinePartExecutionResult);
}
+message GrpcGetCurrentContextValuesRequest {
+ GrpcGuid subscriptionId = 1;
+ GrpcGuid pipelineId = 2;
+ string caseName = 3;
+}
+
message GrpcExecutePipelineAndProduceKafkaRequest {
GrpcProxyPipelineExecutionRequest pipelineRequest = 1;
GrpcKafkaConnectionMetadata producerMetadata = 2;
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/CaseInfo.razor b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/CaseInfo.razor
index 5b15a0f1f..a34e1041c 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/CaseInfo.razor
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/CaseInfo.razor
@@ -53,7 +53,7 @@
+ ProcessCaseData="myProcessCaseData!"/>
}
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/Canvas/Graph/AggregatedDataRenderer.razor b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/Canvas/Graph/AggregatedDataRenderer.razor
index aaca5ab83..83d7e4948 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/Canvas/Graph/AggregatedDataRenderer.razor
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/Canvas/Graph/AggregatedDataRenderer.razor
@@ -22,7 +22,6 @@
private class AggregatedStatDto
{
public required string Title { get; init; }
- public required double Value { get; init; }
public required string ValueStringRepresentation { get; init; }
public string? Units { get; init; }
@@ -49,7 +48,6 @@
return new AggregatedStatDto
{
- Value = value,
Title = CreateAggregatedStatTitle(counter.Key, counter.Value),
ValueStringRepresentation = value.ToString(CultureInfo.InvariantCulture),
Units = counter.Value.Units,
@@ -66,7 +64,6 @@
return new AggregatedStatDto
{
- Value = value,
Title = CreateAggregatedStatTitle(histogram.Key, histogram.Value),
ValueStringRepresentation = value.ToString(CultureInfo.InvariantCulture),
Units = histogram.Value.Units,
@@ -80,7 +77,6 @@
var value = duration.Value.Value.Value;
return new AggregatedStatDto
{
- Value = value,
Title = CreateAggregatedStatTitle(duration.Key, duration.Value),
ValueStringRepresentation = value.ToString(CultureInfo.InvariantCulture),
Units = duration.Value.Units
@@ -92,7 +88,6 @@
new()
{
Title = "Execution Time",
- Value = Data.TotalExecutionTimeNs,
ValueStringRepresentation = TimeSpan.FromTicks((long)Math.Ceiling(Data.TotalExecutionTimeNs / TimeSpan.NanosecondsPerTick)).ToString("c"),
Units = string.Empty
}
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/Canvas/Graph/GraphRenderer.razor b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/Canvas/Graph/GraphRenderer.razor
index e135f2c65..1dfdff4b0 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/Canvas/Graph/GraphRenderer.razor
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/Canvas/Graph/GraphRenderer.razor
@@ -8,7 +8,15 @@
-
+ @{
+ const int ContentHeightPercent = 85;
+
+ var hasAggregatedData = myAggregatedData is { IsEmpty: false };
+ var contentHeight = hasAggregatedData ? $"{ContentHeightPercent}%" : "100%";
+ var aggregatedDataHeight = $"{100 - ContentHeightPercent}%";
+ }
+
+
@@ -19,8 +27,8 @@
@if (mySettings is { RenderDagLcsInFlamegraphMode: true })
{
-
@@ -32,12 +40,12 @@
-
- @if (myAggregatedData is { IsEmpty: false } data)
- {
-
- }
-
+ @if (hasAggregatedData)
+ {
+
+ }
@code
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/ColorsLog/ColorsEventLogRenderer.razor b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/ColorsLog/ColorsEventLogRenderer.razor
index cc4f4d8f6..0f158c0bb 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/ColorsLog/ColorsEventLogRenderer.razor
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/ColorsLog/ColorsEventLogRenderer.razor
@@ -1,5 +1,4 @@
-@using BlazorBootstrap
-@using Ficus
+@using Ficus
@using FicusDashboard.Components.Utils
@inject IJSRuntime Js;
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/ColorsLog/Slidebar.razor b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/ColorsLog/Slidebar.razor
index 29b9f23fb..ac3a5013f 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/ColorsLog/Slidebar.razor
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/ContextValues/ColorsLog/Slidebar.razor
@@ -18,8 +18,8 @@
@code
{
- [Parameter] public TValue InitialValue { get; set; }
- [Parameter] public string Title { get; set; }
+ [Parameter] public required TValue InitialValue { get; set; }
+ [Parameter] public required string Title { get; set; }
[Parameter] public decimal Max { get; set; }
[Parameter] public decimal Min { get; set; }
[Parameter] public decimal Step { get; set; }
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/PipelinePartResultsRenderer.razor b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/PipelinePartResultsRenderer.razor
index 0aec8891a..bd9310da0 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/PipelinePartResultsRenderer.razor
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseInfo/PipelinePartResultsRenderer.razor
@@ -7,6 +7,7 @@
@using FicusDashboard.Components.CaseInfo.ContextValues.Canvas.PetriNet
@using FicusDashboard.Components.CaseInfo.ContextValues.Canvas.Graph
@using FicusDashboard.Components.CaseInfo.ContextValues
+@using FicusDashboard.Components.SidebarList
@using FicusDashboard.Components.Utils
@using FicusDashboard.Layout.Models
@using JetBrains.Lifetimes
@@ -17,7 +18,7 @@
@if (myIsLoading)
{
-
+
}
@@ -94,9 +95,6 @@
@code {
- private static readonly Key
ourExpandedKey = new(nameof(ourExpandedKey));
-
-
private readonly Guid myContainerId = Guid.NewGuid();
@@ -151,12 +149,12 @@
private static bool IsExpanded(PipelinePartExecutionResults results)
{
- return results.UserData.GetOrCreate(ourExpandedKey, static () => true);
+ return results.UserData.GetOrCreate(Keys.ExpandedKey, static () => true);
}
private void HandleExecutionResultTitleClicked(PipelinePartExecutionResults results)
{
- results.UserData.PutData(ourExpandedKey, !results.UserData.GetOrCreate(ourExpandedKey, static () => true));
+ results.UserData.PutData(Keys.ExpandedKey, !results.UserData.GetOrCreate(Keys.ExpandedKey, static () => true));
StateHasChanged();
}
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseList/CasesList.razor b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseList/CasesList.razor
index d78db6205..569882828 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseList/CasesList.razor
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/CaseList/CasesList.razor
@@ -252,8 +252,7 @@
private void RemoveCase(Case caseModel)
{
if (myRootItem is null) return;
-
- var currentItem = FindCaseItem(caseModel);
+ if (FindCaseItem(caseModel) is not { } currentItem) return;
var namePartIndex = caseModel.NameParts.Count - 1;
currentItem.Parent?.InnerItems.Remove(caseModel.NameParts[namePartIndex]);
@@ -274,16 +273,15 @@
}
}
- private TreeViewItem FindCaseItem(Case caseModel)
+ private TreeViewItem? FindCaseItem(Case caseModel)
{
Debug.Assert(myRootItem is { });
- var processItem = myRootItem.InnerItems[caseModel.ParentProcess.ProcessName];
+ if (!myRootItem.InnerItems.TryGetValue(caseModel.ParentProcess.ProcessName, out var currentItem)) return null;
- var currentItem = processItem;
foreach (var namePart in caseModel.NameParts)
{
- currentItem = currentItem.InnerItems[namePart];
+ if (!currentItem.InnerItems.TryGetValue(namePart, out currentItem)) return null;
}
return currentItem;
@@ -293,8 +291,8 @@
{
if (myRootItem is null) return;
if (ReferenceEquals(caseModel, mySelectedCase)) return;
+ if (FindCaseItem(caseModel) is not { } item) return;
- var item = FindCaseItem(caseModel);
item.UserData.PutData(ComponentsKeys.ProcessingStateKey, ItemProcessingState.Updated);
StateHasChanged();
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/SidebarList/Keys.cs b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/SidebarList/Keys.cs
new file mode 100644
index 000000000..f965475d5
--- /dev/null
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/SidebarList/Keys.cs
@@ -0,0 +1,8 @@
+using FicusDashboard.Utils;
+
+namespace FicusDashboard.Components.SidebarList;
+
+internal static class Keys
+{
+ public static readonly Key ExpandedKey = new(nameof(ExpandedKey));
+}
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/SidebarList/SidebarList.razor b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/SidebarList/SidebarList.razor
index 87ef76de8..e18c64df2 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Components/SidebarList/SidebarList.razor
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Components/SidebarList/SidebarList.razor
@@ -39,8 +39,6 @@
@code
{
- private static readonly Key ourExpandedKey = new(nameof(ourExpandedKey));
-
[Parameter] public string? ListItemIcon { get; set; }
[Parameter] public required SidebarListContainer.Style ComponentStyle { get; set; }
@@ -54,7 +52,7 @@
private bool IsExpanded(TItem item)
{
- return item.UserData.GetOrCreate(ourExpandedKey, static () => true);
+ return item.UserData.GetOrCreate(Keys.ExpandedKey, static () => true);
}
private void HandleInnerItemSelected(
@@ -69,8 +67,8 @@
private void HandleItemTitleClicked(TItem item)
{
- var expanded = item.UserData.GetOrCreate(ourExpandedKey, static () => true);
- item.UserData.PutData(ourExpandedKey, !expanded);
+ var expanded = item.UserData.GetOrCreate(Keys.ExpandedKey, static () => true);
+ item.UserData.PutData(Keys.ExpandedKey, !expanded);
StateHasChanged();
}
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Layout/MainLayout.razor b/Ficus/src/front/FicusFrontend/FicusDashboard/Layout/MainLayout.razor
index 83c3e6e89..f5bed7630 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Layout/MainLayout.razor
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Layout/MainLayout.razor
@@ -11,12 +11,12 @@
-
+
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/graph/graph_elements.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/graph/graph_elements.ts
index 69f98f2e7..af203bb08 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/graph/graph_elements.ts
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/graph/graph_elements.ts
@@ -24,8 +24,6 @@ import {createTimeSpanString} from "./labels/util";
import {GrpcDurationKind} from "../protos/ficus/GrpcDurationKind";
import {createNodeStandaloneEnhancements} from "./labels/node_html_label";
-const graphColor = graphColors(darkTheme);
-
export function createGraphElements(
graph: GrpcGraph,
annotation: GrpcAnnotation,
@@ -195,7 +193,6 @@ export function createEnhancedEdges(
let elements = createGraphEdgesElements(graph.edges, performanceEdgesMap, aggregatedData, filter);
return elements.map(e => {
-
let enhancementHtml = "";
if (e.data.enhancementData != null) {
enhancementHtml = createEdgeStandaloneEnhancements(enhancements, e.data.enhancementData, aggregatedData);
@@ -255,20 +252,8 @@ function createGraphEdgesElements(
width = 1;
}
- let blueMin = graphColor.blueMin;
- let blueMax = graphColor.blueMax;
-
- let greenMin = graphColor.greenMin;
- let greenMax = graphColor.greenMax;
-
- let redMin = graphColor.redMin;
- let redMax = graphColor.redMax;
-
let executionTime = performanceMap[edge.id] ?? calculateEdgeExecutionTime(edge);
-
- let color = executionTime == null ?
- calculateGradient(redMin, redMax, greenMin, greenMax, blueMin, blueMax, weightRatio) :
- getPerformanceAnnotationColor(executionTime / aggregatedData.totalExecutionTimeNs);
+ let color = getPerformanceAnnotationColor(executionTime / aggregatedData.totalExecutionTimeNs);
elements.push({
data: {
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/graph/labels/util.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/graph/labels/util.ts
index 69e5f152f..11082ac1e 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/graph/labels/util.ts
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/graph/labels/util.ts
@@ -230,6 +230,10 @@ function processTimeSpanString(str: string): string {
}
function createTimeSpanStringInternal(value: number, kind: GrpcDurationKind) {
+ if (!Number.isFinite(value)) {
+ return "0:0:0";
+ }
+
switch (kind) {
case GrpcDurationKind.Nanos:
return TimeSpan.fromNanoseconds(BigInt(value)).toString();
@@ -246,6 +250,6 @@ function createTimeSpanStringInternal(value: number, kind: GrpcDurationKind) {
case GrpcDurationKind.Days:
return TimeSpan.fromDays(value).toString();
default:
- console.error("Not supported timespan ")
+ console.error("Not supported timespan")
}
}
\ No newline at end of file
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/graph/util.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/graph/util.ts
index 8cbdb3772..e46b23990 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/graph/util.ts
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/graph/util.ts
@@ -253,7 +253,12 @@ export function belongsToRootSequence(node: GraphNode) {
const performanceColor = performanceColors(darkTheme);
export function getPerformanceAnnotationColor(relativeExecutionTime: number) {
- let colorName = `color${(Math.floor(relativeExecutionTime * 10) % 100).toString()}`;
+ const COLOR_PREFIX = "color"
+ if (!Number.isFinite(relativeExecutionTime)) {
+ return performanceColor[`${COLOR_PREFIX}0`];
+ }
+
+ let colorName = `${COLOR_PREFIX}${(Math.floor(relativeExecutionTime * 10) % 100).toString()}`;
return performanceColor[colorName];
}
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/backend_service.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/backend_service.ts
index 0fe6250e0..314731b4c 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/backend_service.ts
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/backend_service.ts
@@ -49,8 +49,6 @@ export interface ProtoGrpcType {
GrpcFrequenciesAnnotation: MessageTypeDefinition
GrpcGeneralHistogramData: MessageTypeDefinition
GrpcGenericEnhancementBase: MessageTypeDefinition
- GrpcGetAllContextValuesResult: MessageTypeDefinition
- GrpcGetContextValueRequest: MessageTypeDefinition
GrpcGraph: MessageTypeDefinition
GrpcGraphEdge: MessageTypeDefinition
GrpcGraphEdgeAdditionalData: MessageTypeDefinition
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/context_values_service.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/context_values_service.ts
index 4a4e99887..421a5e979 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/context_values_service.ts
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/context_values_service.ts
@@ -48,6 +48,8 @@ export interface ProtoGrpcType {
GrpcFrequenciesAnnotation: MessageTypeDefinition
GrpcGeneralHistogramData: MessageTypeDefinition
GrpcGenericEnhancementBase: MessageTypeDefinition
+ GrpcGetAllContextValuesResult: MessageTypeDefinition
+ GrpcGetContextValueRequest: MessageTypeDefinition
GrpcGraph: MessageTypeDefinition
GrpcGraphEdge: MessageTypeDefinition
GrpcGraphEdgeAdditionalData: MessageTypeDefinition
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcBackendService.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcBackendService.ts
index 3bdf76a79..a2da18968 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcBackendService.ts
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcBackendService.ts
@@ -4,8 +4,6 @@ import type * as grpc from '@grpc/grpc-js'
import type { MethodDefinition } from '@grpc/proto-loader'
import type { Empty_DONTUSE as _google_protobuf_Empty_DONTUSE, Empty as _google_protobuf_Empty } from '../google/protobuf/Empty';
import type { GrpcFicusBackendInfo_DONTUSE as _ficus_GrpcFicusBackendInfo_DONTUSE, GrpcFicusBackendInfo as _ficus_GrpcFicusBackendInfo } from '../ficus/GrpcFicusBackendInfo';
-import type { GrpcGetAllContextValuesResult_DONTUSE as _ficus_GrpcGetAllContextValuesResult_DONTUSE, GrpcGetAllContextValuesResult as _ficus_GrpcGetAllContextValuesResult } from '../ficus/GrpcGetAllContextValuesResult';
-import type { GrpcGetContextValueRequest_DONTUSE as _ficus_GrpcGetContextValueRequest_DONTUSE, GrpcGetContextValueRequest as _ficus_GrpcGetContextValueRequest } from '../ficus/GrpcGetContextValueRequest';
import type { GrpcGuid_DONTUSE as _ficus_GrpcGuid_DONTUSE, GrpcGuid as _ficus_GrpcGuid } from '../ficus/GrpcGuid';
import type { GrpcPipelinePartExecutionResult_DONTUSE as _ficus_GrpcPipelinePartExecutionResult_DONTUSE, GrpcPipelinePartExecutionResult as _ficus_GrpcPipelinePartExecutionResult } from '../ficus/GrpcPipelinePartExecutionResult';
import type { GrpcProxyPipelineExecutionRequest_DONTUSE as _ficus_GrpcProxyPipelineExecutionRequest_DONTUSE, GrpcProxyPipelineExecutionRequest as _ficus_GrpcProxyPipelineExecutionRequest } from '../ficus/GrpcProxyPipelineExecutionRequest';
@@ -25,15 +23,6 @@ export interface GrpcBackendServiceClient extends grpc.Client {
executePipeline(argument: _ficus_GrpcProxyPipelineExecutionRequest_DONTUSE, metadata: grpc.Metadata, options?: grpc.CallOptions): grpc.ClientReadableStream<_ficus_GrpcPipelinePartExecutionResult>;
executePipeline(argument: _ficus_GrpcProxyPipelineExecutionRequest_DONTUSE, options?: grpc.CallOptions): grpc.ClientReadableStream<_ficus_GrpcPipelinePartExecutionResult>;
- GetAllContextValues(argument: _ficus_GrpcGuid_DONTUSE, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
- GetAllContextValues(argument: _ficus_GrpcGuid_DONTUSE, metadata: grpc.Metadata, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
- GetAllContextValues(argument: _ficus_GrpcGuid_DONTUSE, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
- GetAllContextValues(argument: _ficus_GrpcGuid_DONTUSE, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
- getAllContextValues(argument: _ficus_GrpcGuid_DONTUSE, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
- getAllContextValues(argument: _ficus_GrpcGuid_DONTUSE, metadata: grpc.Metadata, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
- getAllContextValues(argument: _ficus_GrpcGuid_DONTUSE, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
- getAllContextValues(argument: _ficus_GrpcGuid_DONTUSE, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
-
GetBackendInfo(argument: _google_protobuf_Empty_DONTUSE, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcFicusBackendInfo>): grpc.ClientUnaryCall;
GetBackendInfo(argument: _google_protobuf_Empty_DONTUSE, metadata: grpc.Metadata, callback: grpc.requestCallback<_ficus_GrpcFicusBackendInfo>): grpc.ClientUnaryCall;
GetBackendInfo(argument: _google_protobuf_Empty_DONTUSE, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcFicusBackendInfo>): grpc.ClientUnaryCall;
@@ -43,15 +32,6 @@ export interface GrpcBackendServiceClient extends grpc.Client {
getBackendInfo(argument: _google_protobuf_Empty_DONTUSE, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcFicusBackendInfo>): grpc.ClientUnaryCall;
getBackendInfo(argument: _google_protobuf_Empty_DONTUSE, callback: grpc.requestCallback<_ficus_GrpcFicusBackendInfo>): grpc.ClientUnaryCall;
- GetContextValue(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
- GetContextValue(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, metadata: grpc.Metadata, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
- GetContextValue(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
- GetContextValue(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
- getContextValue(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
- getContextValue(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, metadata: grpc.Metadata, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
- getContextValue(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
- getContextValue(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
-
}
export interface GrpcBackendServiceHandlers extends grpc.UntypedServiceImplementation {
@@ -59,18 +39,12 @@ export interface GrpcBackendServiceHandlers extends grpc.UntypedServiceImplement
ExecutePipeline: grpc.handleServerStreamingCall<_ficus_GrpcProxyPipelineExecutionRequest, _ficus_GrpcPipelinePartExecutionResult_DONTUSE>;
- GetAllContextValues: grpc.handleUnaryCall<_ficus_GrpcGuid, _ficus_GrpcGetAllContextValuesResult_DONTUSE>;
-
GetBackendInfo: grpc.handleUnaryCall<_google_protobuf_Empty, _ficus_GrpcFicusBackendInfo_DONTUSE>;
- GetContextValue: grpc.handleUnaryCall<_ficus_GrpcGetContextValueRequest, _ficus_GrpcGuid_DONTUSE>;
-
}
export interface GrpcBackendServiceDefinition extends grpc.ServiceDefinition {
DropExecutionResult: MethodDefinition<_ficus_GrpcGuid_DONTUSE, _google_protobuf_Empty_DONTUSE, _ficus_GrpcGuid, _google_protobuf_Empty>
ExecutePipeline: MethodDefinition<_ficus_GrpcProxyPipelineExecutionRequest_DONTUSE, _ficus_GrpcPipelinePartExecutionResult_DONTUSE, _ficus_GrpcProxyPipelineExecutionRequest, _ficus_GrpcPipelinePartExecutionResult>
- GetAllContextValues: MethodDefinition<_ficus_GrpcGuid_DONTUSE, _ficus_GrpcGetAllContextValuesResult_DONTUSE, _ficus_GrpcGuid, _ficus_GrpcGetAllContextValuesResult>
GetBackendInfo: MethodDefinition<_google_protobuf_Empty_DONTUSE, _ficus_GrpcFicusBackendInfo_DONTUSE, _google_protobuf_Empty, _ficus_GrpcFicusBackendInfo>
- GetContextValue: MethodDefinition<_ficus_GrpcGetContextValueRequest_DONTUSE, _ficus_GrpcGuid_DONTUSE, _ficus_GrpcGetContextValueRequest, _ficus_GrpcGuid>
}
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcContextValuesService.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcContextValuesService.ts
index 420d752c1..e10237cda 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcContextValuesService.ts
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcContextValuesService.ts
@@ -5,6 +5,8 @@ import type { MethodDefinition } from '@grpc/proto-loader'
import type { Empty_DONTUSE as _google_protobuf_Empty_DONTUSE, Empty as _google_protobuf_Empty } from '../google/protobuf/Empty';
import type { GrpcContextValuePart_DONTUSE as _ficus_GrpcContextValuePart_DONTUSE, GrpcContextValuePart as _ficus_GrpcContextValuePart } from '../ficus/GrpcContextValuePart';
import type { GrpcDropContextValuesRequest_DONTUSE as _ficus_GrpcDropContextValuesRequest_DONTUSE, GrpcDropContextValuesRequest as _ficus_GrpcDropContextValuesRequest } from '../ficus/GrpcDropContextValuesRequest';
+import type { GrpcGetAllContextValuesResult_DONTUSE as _ficus_GrpcGetAllContextValuesResult_DONTUSE, GrpcGetAllContextValuesResult as _ficus_GrpcGetAllContextValuesResult } from '../ficus/GrpcGetAllContextValuesResult';
+import type { GrpcGetContextValueRequest_DONTUSE as _ficus_GrpcGetContextValueRequest_DONTUSE, GrpcGetContextValueRequest as _ficus_GrpcGetContextValueRequest } from '../ficus/GrpcGetContextValueRequest';
import type { GrpcGuid_DONTUSE as _ficus_GrpcGuid_DONTUSE, GrpcGuid as _ficus_GrpcGuid } from '../ficus/GrpcGuid';
export interface GrpcContextValuesServiceClient extends grpc.Client {
@@ -17,11 +19,29 @@ export interface GrpcContextValuesServiceClient extends grpc.Client {
dropContextValues(argument: _ficus_GrpcDropContextValuesRequest_DONTUSE, options: grpc.CallOptions, callback: grpc.requestCallback<_google_protobuf_Empty>): grpc.ClientUnaryCall;
dropContextValues(argument: _ficus_GrpcDropContextValuesRequest_DONTUSE, callback: grpc.requestCallback<_google_protobuf_Empty>): grpc.ClientUnaryCall;
+ GetAllContextValuesIds(argument: _ficus_GrpcGuid_DONTUSE, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
+ GetAllContextValuesIds(argument: _ficus_GrpcGuid_DONTUSE, metadata: grpc.Metadata, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
+ GetAllContextValuesIds(argument: _ficus_GrpcGuid_DONTUSE, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
+ GetAllContextValuesIds(argument: _ficus_GrpcGuid_DONTUSE, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
+ getAllContextValuesIds(argument: _ficus_GrpcGuid_DONTUSE, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
+ getAllContextValuesIds(argument: _ficus_GrpcGuid_DONTUSE, metadata: grpc.Metadata, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
+ getAllContextValuesIds(argument: _ficus_GrpcGuid_DONTUSE, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
+ getAllContextValuesIds(argument: _ficus_GrpcGuid_DONTUSE, callback: grpc.requestCallback<_ficus_GrpcGetAllContextValuesResult>): grpc.ClientUnaryCall;
+
GetContextValue(argument: _ficus_GrpcGuid_DONTUSE, metadata: grpc.Metadata, options?: grpc.CallOptions): grpc.ClientReadableStream<_ficus_GrpcContextValuePart>;
GetContextValue(argument: _ficus_GrpcGuid_DONTUSE, options?: grpc.CallOptions): grpc.ClientReadableStream<_ficus_GrpcContextValuePart>;
getContextValue(argument: _ficus_GrpcGuid_DONTUSE, metadata: grpc.Metadata, options?: grpc.CallOptions): grpc.ClientReadableStream<_ficus_GrpcContextValuePart>;
getContextValue(argument: _ficus_GrpcGuid_DONTUSE, options?: grpc.CallOptions): grpc.ClientReadableStream<_ficus_GrpcContextValuePart>;
+ GetContextValueId(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
+ GetContextValueId(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, metadata: grpc.Metadata, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
+ GetContextValueId(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
+ GetContextValueId(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
+ getContextValueId(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
+ getContextValueId(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, metadata: grpc.Metadata, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
+ getContextValueId(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
+ getContextValueId(argument: _ficus_GrpcGetContextValueRequest_DONTUSE, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientUnaryCall;
+
SetContextValue(metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientWritableStream<_ficus_GrpcContextValuePart_DONTUSE>;
SetContextValue(metadata: grpc.Metadata, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientWritableStream<_ficus_GrpcContextValuePart_DONTUSE>;
SetContextValue(options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGuid>): grpc.ClientWritableStream<_ficus_GrpcContextValuePart_DONTUSE>;
@@ -36,14 +56,20 @@ export interface GrpcContextValuesServiceClient extends grpc.Client {
export interface GrpcContextValuesServiceHandlers extends grpc.UntypedServiceImplementation {
DropContextValues: grpc.handleUnaryCall<_ficus_GrpcDropContextValuesRequest, _google_protobuf_Empty_DONTUSE>;
+ GetAllContextValuesIds: grpc.handleUnaryCall<_ficus_GrpcGuid, _ficus_GrpcGetAllContextValuesResult_DONTUSE>;
+
GetContextValue: grpc.handleServerStreamingCall<_ficus_GrpcGuid, _ficus_GrpcContextValuePart_DONTUSE>;
+ GetContextValueId: grpc.handleUnaryCall<_ficus_GrpcGetContextValueRequest, _ficus_GrpcGuid_DONTUSE>;
+
SetContextValue: grpc.handleClientStreamingCall<_ficus_GrpcContextValuePart, _ficus_GrpcGuid_DONTUSE>;
}
export interface GrpcContextValuesServiceDefinition extends grpc.ServiceDefinition {
DropContextValues: MethodDefinition<_ficus_GrpcDropContextValuesRequest_DONTUSE, _google_protobuf_Empty_DONTUSE, _ficus_GrpcDropContextValuesRequest, _google_protobuf_Empty>
+ GetAllContextValuesIds: MethodDefinition<_ficus_GrpcGuid_DONTUSE, _ficus_GrpcGetAllContextValuesResult_DONTUSE, _ficus_GrpcGuid, _ficus_GrpcGetAllContextValuesResult>
GetContextValue: MethodDefinition<_ficus_GrpcGuid_DONTUSE, _ficus_GrpcContextValuePart_DONTUSE, _ficus_GrpcGuid, _ficus_GrpcContextValuePart>
+ GetContextValueId: MethodDefinition<_ficus_GrpcGetContextValueRequest_DONTUSE, _ficus_GrpcGuid_DONTUSE, _ficus_GrpcGetContextValueRequest, _ficus_GrpcGuid>
SetContextValue: MethodDefinition<_ficus_GrpcContextValuePart_DONTUSE, _ficus_GrpcGuid_DONTUSE, _ficus_GrpcContextValuePart, _ficus_GrpcGuid>
}
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcGetAllContextValuesResult.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcGetAllContextValuesResult.ts
index 0e2903f66..104532514 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcGetAllContextValuesResult.ts
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcGetAllContextValuesResult.ts
@@ -1,4 +1,4 @@
-// Original file: ../../../../../protos/backend_service.proto
+// Original file: ../../../../../protos/context_values_service.proto
import type { GrpcGuid_DONTUSE as _ficus_GrpcGuid_DONTUSE, GrpcGuid as _ficus_GrpcGuid } from '../ficus/GrpcGuid';
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcGetContextValueRequest.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcGetContextValueRequest.ts
index 685c97066..c5f46fd28 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcGetContextValueRequest.ts
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcGetContextValueRequest.ts
@@ -1,4 +1,4 @@
-// Original file: ../../../../../protos/backend_service.proto
+// Original file: ../../../../../protos/context_values_service.proto
import type { GrpcContextKey_DONTUSE as _ficus_GrpcContextKey_DONTUSE, GrpcContextKey as _ficus_GrpcContextKey } from '../ficus/GrpcContextKey';
import type { GrpcGuid_DONTUSE as _ficus_GrpcGuid_DONTUSE, GrpcGuid as _ficus_GrpcGuid } from '../ficus/GrpcGuid';
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcGetCurrentContextValuesRequest.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcGetCurrentContextValuesRequest.ts
new file mode 100644
index 000000000..5af85db1e
--- /dev/null
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcGetCurrentContextValuesRequest.ts
@@ -0,0 +1,15 @@
+// Original file: ../../../../../protos/kafka_service.proto
+
+import type { GrpcGuid_DONTUSE as _ficus_GrpcGuid_DONTUSE, GrpcGuid as _ficus_GrpcGuid } from '../ficus/GrpcGuid';
+
+export interface GrpcGetCurrentContextValuesRequest_DONTUSE {
+ 'subscriptionId'?: (_ficus_GrpcGuid_DONTUSE | null);
+ 'pipelineId'?: (_ficus_GrpcGuid_DONTUSE | null);
+ 'caseName'?: (string);
+}
+
+export interface GrpcGetCurrentContextValuesRequest {
+ 'subscriptionId': (_ficus_GrpcGuid | null);
+ 'pipelineId': (_ficus_GrpcGuid | null);
+ 'caseName': (string);
+}
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcKafkaContextValues.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcKafkaContextValues.ts
new file mode 100644
index 000000000..8a194c055
--- /dev/null
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcKafkaContextValues.ts
@@ -0,0 +1,11 @@
+// Original file: ../../../../../protos/front_contract.proto
+
+import type { GrpcContextValueWithKeyName_DONTUSE as _ficus_GrpcContextValueWithKeyName_DONTUSE, GrpcContextValueWithKeyName as _ficus_GrpcContextValueWithKeyName } from '../ficus/GrpcContextValueWithKeyName';
+
+export interface GrpcKafkaContextValues_DONTUSE {
+ 'contextValues'?: (_ficus_GrpcContextValueWithKeyName_DONTUSE)[];
+}
+
+export interface GrpcKafkaContextValues {
+ 'contextValues': (_ficus_GrpcContextValueWithKeyName)[];
+}
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcKafkaService.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcKafkaService.ts
index da6a631ca..9b62d5c06 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcKafkaService.ts
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcKafkaService.ts
@@ -7,6 +7,7 @@ import type { GrpcAddPipelineRequest_DONTUSE as _ficus_GrpcAddPipelineRequest_DO
import type { GrpcAddPipelineStreamRequest_DONTUSE as _ficus_GrpcAddPipelineStreamRequest_DONTUSE, GrpcAddPipelineStreamRequest as _ficus_GrpcAddPipelineStreamRequest } from '../ficus/GrpcAddPipelineStreamRequest';
import type { GrpcExecutePipelineAndProduceKafkaRequest_DONTUSE as _ficus_GrpcExecutePipelineAndProduceKafkaRequest_DONTUSE, GrpcExecutePipelineAndProduceKafkaRequest as _ficus_GrpcExecutePipelineAndProduceKafkaRequest } from '../ficus/GrpcExecutePipelineAndProduceKafkaRequest';
import type { GrpcGetAllSubscriptionsAndPipelinesResponse_DONTUSE as _ficus_GrpcGetAllSubscriptionsAndPipelinesResponse_DONTUSE, GrpcGetAllSubscriptionsAndPipelinesResponse as _ficus_GrpcGetAllSubscriptionsAndPipelinesResponse } from '../ficus/GrpcGetAllSubscriptionsAndPipelinesResponse';
+import type { GrpcGetCurrentContextValuesRequest_DONTUSE as _ficus_GrpcGetCurrentContextValuesRequest_DONTUSE, GrpcGetCurrentContextValuesRequest as _ficus_GrpcGetCurrentContextValuesRequest } from '../ficus/GrpcGetCurrentContextValuesRequest';
import type { GrpcKafkaResult_DONTUSE as _ficus_GrpcKafkaResult_DONTUSE, GrpcKafkaResult as _ficus_GrpcKafkaResult } from '../ficus/GrpcKafkaResult';
import type { GrpcPipelinePartExecutionResult_DONTUSE as _ficus_GrpcPipelinePartExecutionResult_DONTUSE, GrpcPipelinePartExecutionResult as _ficus_GrpcPipelinePartExecutionResult } from '../ficus/GrpcPipelinePartExecutionResult';
import type { GrpcRemoveAllPipelinesRequest_DONTUSE as _ficus_GrpcRemoveAllPipelinesRequest_DONTUSE, GrpcRemoveAllPipelinesRequest as _ficus_GrpcRemoveAllPipelinesRequest } from '../ficus/GrpcRemoveAllPipelinesRequest';
@@ -43,6 +44,11 @@ export interface GrpcKafkaServiceClient extends grpc.Client {
getAllSubscriptionsAndPipelines(argument: _google_protobuf_Empty_DONTUSE, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcGetAllSubscriptionsAndPipelinesResponse>): grpc.ClientUnaryCall;
getAllSubscriptionsAndPipelines(argument: _google_protobuf_Empty_DONTUSE, callback: grpc.requestCallback<_ficus_GrpcGetAllSubscriptionsAndPipelinesResponse>): grpc.ClientUnaryCall;
+ GetCurrentContextValues(argument: _ficus_GrpcGetCurrentContextValuesRequest_DONTUSE, metadata: grpc.Metadata, options?: grpc.CallOptions): grpc.ClientReadableStream<_ficus_GrpcPipelinePartExecutionResult>;
+ GetCurrentContextValues(argument: _ficus_GrpcGetCurrentContextValuesRequest_DONTUSE, options?: grpc.CallOptions): grpc.ClientReadableStream<_ficus_GrpcPipelinePartExecutionResult>;
+ getCurrentContextValues(argument: _ficus_GrpcGetCurrentContextValuesRequest_DONTUSE, metadata: grpc.Metadata, options?: grpc.CallOptions): grpc.ClientReadableStream<_ficus_GrpcPipelinePartExecutionResult>;
+ getCurrentContextValues(argument: _ficus_GrpcGetCurrentContextValuesRequest_DONTUSE, options?: grpc.CallOptions): grpc.ClientReadableStream<_ficus_GrpcPipelinePartExecutionResult>;
+
RemoveAllPipelineSubscriptions(argument: _ficus_GrpcRemoveAllPipelinesRequest_DONTUSE, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcKafkaResult>): grpc.ClientUnaryCall;
RemoveAllPipelineSubscriptions(argument: _ficus_GrpcRemoveAllPipelinesRequest_DONTUSE, metadata: grpc.Metadata, callback: grpc.requestCallback<_ficus_GrpcKafkaResult>): grpc.ClientUnaryCall;
RemoveAllPipelineSubscriptions(argument: _ficus_GrpcRemoveAllPipelinesRequest_DONTUSE, options: grpc.CallOptions, callback: grpc.requestCallback<_ficus_GrpcKafkaResult>): grpc.ClientUnaryCall;
@@ -90,6 +96,8 @@ export interface GrpcKafkaServiceHandlers extends grpc.UntypedServiceImplementat
GetAllSubscriptionsAndPipelines: grpc.handleUnaryCall<_google_protobuf_Empty, _ficus_GrpcGetAllSubscriptionsAndPipelinesResponse_DONTUSE>;
+ GetCurrentContextValues: grpc.handleServerStreamingCall<_ficus_GrpcGetCurrentContextValuesRequest, _ficus_GrpcPipelinePartExecutionResult_DONTUSE>;
+
RemoveAllPipelineSubscriptions: grpc.handleUnaryCall<_ficus_GrpcRemoveAllPipelinesRequest, _ficus_GrpcKafkaResult_DONTUSE>;
RemovePipelineSubscription: grpc.handleUnaryCall<_ficus_GrpcRemovePipelineRequest, _ficus_GrpcKafkaResult_DONTUSE>;
@@ -105,6 +113,7 @@ export interface GrpcKafkaServiceDefinition extends grpc.ServiceDefinition {
AddPipelineToSubscriptionStream: MethodDefinition<_ficus_GrpcAddPipelineStreamRequest_DONTUSE, _ficus_GrpcPipelinePartExecutionResult_DONTUSE, _ficus_GrpcAddPipelineStreamRequest, _ficus_GrpcPipelinePartExecutionResult>
ExecutePipelineAndProduceToKafka: MethodDefinition<_ficus_GrpcExecutePipelineAndProduceKafkaRequest_DONTUSE, _ficus_GrpcPipelinePartExecutionResult_DONTUSE, _ficus_GrpcExecutePipelineAndProduceKafkaRequest, _ficus_GrpcPipelinePartExecutionResult>
GetAllSubscriptionsAndPipelines: MethodDefinition<_google_protobuf_Empty_DONTUSE, _ficus_GrpcGetAllSubscriptionsAndPipelinesResponse_DONTUSE, _google_protobuf_Empty, _ficus_GrpcGetAllSubscriptionsAndPipelinesResponse>
+ GetCurrentContextValues: MethodDefinition<_ficus_GrpcGetCurrentContextValuesRequest_DONTUSE, _ficus_GrpcPipelinePartExecutionResult_DONTUSE, _ficus_GrpcGetCurrentContextValuesRequest, _ficus_GrpcPipelinePartExecutionResult>
RemoveAllPipelineSubscriptions: MethodDefinition<_ficus_GrpcRemoveAllPipelinesRequest_DONTUSE, _ficus_GrpcKafkaResult_DONTUSE, _ficus_GrpcRemoveAllPipelinesRequest, _ficus_GrpcKafkaResult>
RemovePipelineSubscription: MethodDefinition<_ficus_GrpcRemovePipelineRequest_DONTUSE, _ficus_GrpcKafkaResult_DONTUSE, _ficus_GrpcRemovePipelineRequest, _ficus_GrpcKafkaResult>
SubscribeForKafkaTopic: MethodDefinition<_ficus_GrpcSubscribeToKafkaRequest_DONTUSE, _ficus_GrpcKafkaResult_DONTUSE, _ficus_GrpcSubscribeToKafkaRequest, _ficus_GrpcKafkaResult>
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcKafkaUpdate.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcKafkaUpdate.ts
index 03b7a3667..aa6ec4f2e 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcKafkaUpdate.ts
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcKafkaUpdate.ts
@@ -1,17 +1,11 @@
// Original file: ../../../../../protos/front_contract.proto
import type { GrpcProcessCaseMetadata_DONTUSE as _ficus_GrpcProcessCaseMetadata_DONTUSE, GrpcProcessCaseMetadata as _ficus_GrpcProcessCaseMetadata } from '../ficus/GrpcProcessCaseMetadata';
-import type { GrpcPipelinePartInfo_DONTUSE as _ficus_GrpcPipelinePartInfo_DONTUSE, GrpcPipelinePartInfo as _ficus_GrpcPipelinePartInfo } from '../ficus/GrpcPipelinePartInfo';
-import type { GrpcContextValueWithKeyName_DONTUSE as _ficus_GrpcContextValueWithKeyName_DONTUSE, GrpcContextValueWithKeyName as _ficus_GrpcContextValueWithKeyName } from '../ficus/GrpcContextValueWithKeyName';
export interface GrpcKafkaUpdate_DONTUSE {
'processCaseMetadata'?: (_ficus_GrpcProcessCaseMetadata_DONTUSE | null);
- 'pipelinePartInfo'?: (_ficus_GrpcPipelinePartInfo_DONTUSE | null);
- 'contextValues'?: (_ficus_GrpcContextValueWithKeyName_DONTUSE)[];
}
export interface GrpcKafkaUpdate {
'processCaseMetadata': (_ficus_GrpcProcessCaseMetadata | null);
- 'pipelinePartInfo': (_ficus_GrpcPipelinePartInfo | null);
- 'contextValues': (_ficus_GrpcContextValueWithKeyName)[];
}
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcPipelinePartResult.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcPipelinePartResult.ts
index c4315a624..3c42d21d3 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcPipelinePartResult.ts
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/ficus/GrpcPipelinePartResult.ts
@@ -5,10 +5,12 @@ import type { GrpcGuid_DONTUSE as _ficus_GrpcGuid_DONTUSE, GrpcGuid as _ficus_Gr
export interface GrpcPipelinePartResult_DONTUSE {
'contextValues'?: (_ficus_GrpcContextValueWithKeyName_DONTUSE)[];
- 'guid'?: (_ficus_GrpcGuid_DONTUSE | null);
+ 'pipelinePartId'?: (_ficus_GrpcGuid_DONTUSE | null);
+ 'pipelinePartName'?: (string);
}
export interface GrpcPipelinePartResult {
'contextValues': (_ficus_GrpcContextValueWithKeyName)[];
- 'guid': (_ficus_GrpcGuid | null);
+ 'pipelinePartId': (_ficus_GrpcGuid | null);
+ 'pipelinePartName': (string);
}
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/front_contract.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/front_contract.ts
index 095dad5cb..7072588f3 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/front_contract.ts
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/front_contract.ts
@@ -60,6 +60,7 @@ export interface ProtoGrpcType {
GrpcHashesLogTrace: MessageTypeDefinition
GrpcHistogramEntry: MessageTypeDefinition
GrpcIntArray: MessageTypeDefinition
+ GrpcKafkaContextValues: MessageTypeDefinition
GrpcKafkaUpdate: MessageTypeDefinition
GrpcLabeledDataset: MessageTypeDefinition
GrpcLogPoint: MessageTypeDefinition
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/kafka_service.ts b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/kafka_service.ts
index 96c3cba07..f150d745e 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/kafka_service.ts
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Npm/src/protos/kafka_service.ts
@@ -53,9 +53,8 @@ export interface ProtoGrpcType {
GrpcFrequenciesAnnotation: MessageTypeDefinition
GrpcGeneralHistogramData: MessageTypeDefinition
GrpcGenericEnhancementBase: MessageTypeDefinition
- GrpcGetAllContextValuesResult: MessageTypeDefinition
GrpcGetAllSubscriptionsAndPipelinesResponse: MessageTypeDefinition
- GrpcGetContextValueRequest: MessageTypeDefinition
+ GrpcGetCurrentContextValuesRequest: MessageTypeDefinition
GrpcGraph: MessageTypeDefinition
GrpcGraphEdge: MessageTypeDefinition
GrpcGraphEdgeAdditionalData: MessageTypeDefinition
diff --git a/Ficus/src/front/FicusFrontend/FicusDashboard/Utils/UserData.cs b/Ficus/src/front/FicusFrontend/FicusDashboard/Utils/UserData.cs
index f7492899b..0feca9409 100644
--- a/Ficus/src/front/FicusFrontend/FicusDashboard/Utils/UserData.cs
+++ b/Ficus/src/front/FicusFrontend/FicusDashboard/Utils/UserData.cs
@@ -1,17 +1,18 @@
namespace FicusDashboard.Utils;
+// ReSharper disable once UnusedTypeParameter
public class Key(string name)
{
public string Name => name;
}
-public abstract class UserDataHolderBase
+public sealed class UserDataHolder
{
private readonly Lock mySyncObject = new();
private readonly Dictionary