#ifndef EASY_PROPROTOCOL_H #define EASY_PROPROTOCOL_H ///C++ #include #include #include ///this #include //#include ///for actual version vistit https://github.com/yse/easy_profiler/wiki/.prof-file-format-v1.3.0 namespace profiler { namespace reader { struct BlockDescriptor; struct BlocksInfo //12 { uint32_t totalBlocksCount; //4 bytes uint64_t totalBlocksMemory; //8 bytes }; struct DescriptorsInfo //12 { uint32_t allDescriptorsCount; //4 bytes uint64_t allDescriptorsMemory; //8 bytes }; struct FileHeader //64 { uint32_t signature; //4 uint32_t version; //4 uint64_t processId; //8 int64_t cpuFrequency; //8 uint64_t beginTime; //8 uint64_t endTime; //8 BlocksInfo serializedBlocksInfo; //12 DescriptorsInfo blocksDescriptorInfo; //12 }; struct BlockInfo { uint64_t beginTime; uint64_t endTime; const BlockDescriptor* descriptor; uint32_t blockIndex; }; struct ContextSwitchEvent { uint64_t beginTime; uint64_t endTime; uint64_t targetThreadId; std::string targetProcess; ///< Contains process id and process name }; struct BlockDescriptor { uint32_t parentId; ///< This will differ from id if this descriptor was created from runtime named block uint32_t id; int lineNumber; uint32_t argbColor; uint8_t blockType; uint8_t status; std::string blockName; std::string fileName; }; } //namespace reader } //namespace profiler #endif