void FProfilerClientManager::HandleServiceMetaDataMessage( const FProfilerServiceMetaData& Message, const IMessageContextRef& Context ) { #if STATS // @TODO yrx 2014-04-14 Not used. if (ActiveSessionId.IsValid() && Connections.Find(Message.InstanceId) != nullptr) { FServiceConnection& Connection = *Connections.Find(Message.InstanceId); FArrayReader ArrayReader(true); ArrayReader.Append(Message.Data); FStatMetaData NewData; ArrayReader << NewData; // add in the new data if (NewData.StatDescriptions.Num() > 0) { Connection.MetaData.StatDescriptions.Append(NewData.StatDescriptions); } if (NewData.GroupDescriptions.Num() > 0) { Connection.MetaData.GroupDescriptions.Append(NewData.GroupDescriptions); } if (NewData.ThreadDescriptions.Num() > 0) { Connection.MetaData.ThreadDescriptions.Append(NewData.ThreadDescriptions); } Connection.MetaData.SecondsPerCycle = NewData.SecondsPerCycle; // Fire a meta data update message ProfilerMetaDataUpdatedDelegate.Broadcast(Message.InstanceId); } #endif }
void FServiceConnection::Initialize( const FProfilerServiceAuthorize2& Message, const IMessageContextRef& Context ) { #if STATS ServiceAddress = Context->GetSender(); InstanceId = Message.InstanceId; CurrentData.Frame = 0; // add the supplied meta data FArrayReader ArrayReader(true); ArrayReader.Append(Message.Data); MetaData.CriticalSection = &CriticalSection; int64 Size = ArrayReader.TotalSize(); // read in the magic, at some point may need to know what it actually is uint32 Magic = 0; ArrayReader << Magic; // read in the data TArray<FStatMessage> StatMessages; { SCOPE_CYCLE_COUNTER(STAT_PC_ReadStatMessages); while(ArrayReader.Tell() < Size) { // read the message new (StatMessages) FStatMessage(Stream.ReadMessage(ArrayReader)); } static FStatNameAndInfo Adv(NAME_AdvanceFrame, "", TEXT(""), EStatDataType::ST_int64, true, false); new (StatMessages) FStatMessage(Adv.GetEncodedName(), EStatOperation::AdvanceFrameEventGameThread, 1LL, false); } // generate a thread state from the data { SCOPE_CYCLE_COUNTER(STAT_PC_AddStatMessages); CurrentThreadState.AddMessages(StatMessages); } UpdateMetaData(); #endif }
ArrayReader Parser::GetArray() const { return ArrayReader(0, json, work); }
ArrayReader ObjectReader::ReadArray() { uint16_t offset = readOffset; return ArrayReader(offset, src, parsed); }