Esempio n. 1
0
void FLiveEditorManager::BroadcastValueUpdate( const FString &ClassName, const FString &PropertyName, const FString &PropertyValue )
{
	// remove closed connections
	for ( TMap<FString, class FSocket *>::TIterator ConnectionIt(RemoteConnections); ConnectionIt; ++ConnectionIt )
	{
		FSocket *Connection = (*ConnectionIt).Value;
		if ( Connection->GetConnectionState() != SCS_Connected )
		{
			RemoteConnections.Remove( (*ConnectionIt).Key );
		}
	}

	//no one to talk to, exit
	if ( RemoteConnections.Num() == 0 )
	{
		return;
	}

	nLiveEditorListenServer::FNetworkMessage Message;
	Message.Type = nLiveEditorListenServer::CLASSDEFAULT_OBJECT_PROPERTY;
	Message.Payload.ClassName = ClassName;
	Message.Payload.PropertyName = PropertyName;
	Message.Payload.PropertyValue = PropertyValue;

	TSharedPtr<FArrayWriter> Datagram = MakeShareable(new FArrayWriter(true));
	*Datagram << Message;

	for ( TMap<FString, class FSocket *>::TIterator ConnectionIt(RemoteConnections); ConnectionIt; ++ConnectionIt )
	{
		FSocket *Connection = (*ConnectionIt).Value;
		int32 BytesSent = 0;
		Connection->Send( Datagram->GetData(), Datagram->Num(), BytesSent );
	}
}