better perf

This commit is contained in:
Martino Ferrari
2026-02-25 16:51:07 +01:00
parent aaf69c0949
commit dfb399bbba
12 changed files with 713 additions and 633 deletions

View File

@@ -13,13 +13,26 @@
namespace MARTe {
class MemoryMapBroker;
struct SignalAlias {
StreamString name;
uint32 signalIndex;
};
struct BrokerInfo {
DebugSignalInfo** signalPointers;
uint32 numSignals;
MemoryMapBroker* broker;
volatile bool* anyActiveFlag;
Vector<uint32>* activeIndices;
Vector<uint32>* activeSizes;
FastPollingMutexSem* activeMutex;
};
class DebugService : public ReferenceContainer, public MessageI, public EmbeddedServiceMethodBinderI {
public:
friend class DebugServiceTest;
CLASS_REGISTER_DECLARATION()
DebugService();
@@ -28,7 +41,9 @@ public:
virtual bool Initialise(StructuredDataI & data);
DebugSignalInfo* RegisterSignal(void* memoryAddress, TypeDescriptor type, const char8* name);
void ProcessSignal(DebugSignalInfo* signalInfo, uint32 size);
void ProcessSignal(DebugSignalInfo* signalInfo, uint32 size, uint64 timestamp);
void RegisterBroker(DebugSignalInfo** signalPointers, uint32 numSignals, MemoryMapBroker* broker, volatile bool* anyActiveFlag, Vector<uint32>* activeIndices, Vector<uint32>* activeSizes, FastPollingMutexSem* activeMutex);
virtual ErrorManagement::ErrorType Execute(ExecutionInfo & info);
@@ -41,11 +56,11 @@ public:
uint32 UnforceSignal(const char8* name);
uint32 TraceSignal(const char8* name, bool enable, uint32 decimation = 1);
void Discover(BasicTCPSocket *client);
void ListNodes(const char8* path, BasicTCPSocket *client);
void InfoNode(const char8* path, BasicTCPSocket *client);
private:
void HandleCommand(StreamString cmd, BasicTCPSocket *client);
void UpdateBrokersActiveStatus();
uint32 ExportTree(ReferenceContainer *container, StreamString &json);
void PatchRegistry();
@@ -93,6 +108,10 @@ private:
SignalAlias aliases[MAX_ALIASES];
uint32 numberOfAliases;
static const uint32 MAX_BROKERS = 1024;
BrokerInfo brokers[MAX_BROKERS];
uint32 numberOfBrokers;
FastPollingMutexSem mutex;
TraceRingBuffer traceBuffer;