private void CreateProtocols()

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;
            });
        }