コード例 #1
0
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
}
コード例 #2
0
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
}
コード例 #3
0
ファイル: json16.cpp プロジェクト: beru/json16
ArrayReader Parser::GetArray() const
{
	return ArrayReader(0, json, work);
}
コード例 #4
0
ファイル: json16.cpp プロジェクト: beru/json16
ArrayReader ObjectReader::ReadArray()
{
	uint16_t offset = readOffset;
	return ArrayReader(offset, src, parsed);
}