in src/dotnet/RiderPlugin.UnrealLink/RiderBackendToUnrealEditor.cs [129:175]
private void CreateProtocols(VirtualFileSystemPath portFileFullPath)
{
myLogger.Info($"Trying to read port file {portFileFullPath}");
if (!portFileFullPath.ExistsFile) return;
if (!ReadPortFile(portFileFullPath, out var text))
{
return;
}
if (!int.TryParse(text, out var port))
{
myLogger.Error($"[UnrealLink]: Couldn't parse port from file:{portFileFullPath}, text:{text}");
return;
}
var modelLifetime = myConnectionLifetimeProducer.Next();
var projectName = portFileFullPath.Name;
myLogger.Info($"Creating SocketWire with port = {port}");
var wire = new SocketWire.Client(modelLifetime, myDispatcher, port, "UnrealEditorClient");
wire.Connected.Advise(modelLifetime,
isConnected => myUnrealHost.PerformModelAction(riderModel =>
riderModel.IsConnectedToUnrealEditor.SetValue(isConnected)
)
);
var protocol = new Protocol("UnrealEditorPlugin", new Serializers(null, null),
new Identities(IdKind.Client), myDispatcher, wire, modelLifetime);
wire.Connected.View(modelLifetime, (lf, isConnected) =>
{
RdEditorModel model;
if (isConnected)
{
myLogger.Info("Wire connected");
model = ResetModel(lf, protocol);
}
else
{
myLogger.Info("Wire disconnected");
model = null;
}
EditorModel = model;
});
}