public ServerModel(StringManager stringManager, Ide.Config config, IServiceProvider serviceProvider) { Contract.Requires(stringManager != null); Contract.Requires(config != null); Contract.Requires(serviceProvider != null); ServiceProvider = serviceProvider; var client = new NitraClient(stringManager); client.Send(new ClientMessage.CheckVersion(M.Constants.AssemblyVersionGuid)); var responseMap = client.ResponseMap; responseMap[-1] = Response; _config = config; Client = client; var builder = ImmutableHashSet.CreateBuilder <string>(StringComparer.OrdinalIgnoreCase); foreach (var lang in config.Languages) { builder.UnionWith(lang.Extensions); } Extensions = builder.ToImmutable(); }
public TestSuiteCreateOrEditViewModel(NitraClient client) { Languages = new ReactiveList <LanguageInfo>(); ParserLibs = new ReactiveList <ParserLibViewModel>(); ProjectSupports = new ReactiveList <ProjectSupportViewModel>(); References = new ReactiveList <string>(); DynamicExtensions = new ReactiveList <DynamicExtensionViewModel>(); ParserLibs.Changed .Subscribe(_ => UpdateParserLibs(client)); Languages.Changed.Subscribe(_ => RemoveDuplicates(Languages, li => ToFullSuitePath(li.Path))); ProjectSupports.Changed .Subscribe(_ => { if (!ProjectSupports.Any(ps => ps.IsSelected) && ProjectSupports.Count > 0) { ProjectSupports[0].IsSelected = true; } }); this.WhenAnyValue(vm => vm.SelectedLanguage) .Subscribe(UpdateSelectedLanguage); this.WhenAnyValue(vm => vm.RootFolder, vm => vm.SuiteName) .Where(t => t.Item1 != null && t.Item2 != null) .Select(t => Path.Combine(Path.GetFullPath(t.Item1), t.Item2)) .Subscribe(path => SuitPath = path); }
public AstContext(NitraClient client, SolutionId solutionId, ProjectId projectId, FileId fileId, FileVersion fileVersion) { Client = client; SolutionId = solutionId; ProjectId = projectId; FileId = fileId; FileVersion = fileVersion; }
public Server(StringManager stringManager, Ide.Config config, IServiceProvider serviceProvider) { Contract.Requires(ServiceProvider != null); ServiceProvider = serviceProvider; var client = new NitraClient(stringManager); client.Send(new ClientMessage.CheckVersion(M.Constants.AssemblyVersionGuid)); var responseMap = client.ResponseMap; responseMap[-1] = Response; _config = config; Client = client; }
private void UpdateParserLibs(NitraClient client) { try { RemoveDuplicates(ParserLibs, pl => ToFullSuitePath(pl.Path)); var libsArray = ParserLibs.Select(vm => ToFullSuitePath(vm.Path)).ToImmutableArray(); client.Send(new ClientMessage.GetLibsMetadata(libsArray)); var libsMetadata = client.Receive <ServerMessage.LibsMetadata>().metadatas; client.Send(new ClientMessage.GetLibsSyntaxModules(libsArray)); var libsSyntaxModules = client.Receive <ServerMessage.LibsSyntaxModules>().modules; client.Send(new ClientMessage.GetLibsProjectSupports(libsArray)); var libsProjectSupports = client.Receive <ServerMessage.LibsProjectSupports>().libs; Languages.Clear(); DynamicExtensions.Clear(); ProjectSupports.Clear(); for (int i = 0; i < libsMetadata.Length; i++) { var languages = libsMetadata[i].Languages; var syntaxModules = libsSyntaxModules[i].Modules; var projectSupports = libsProjectSupports[i].ProjectSupports; foreach (var language in languages) { Languages.Add(language); } if (!Languages.IsEmpty) { SelectedLanguage = Languages[0]; } foreach (var syntaxModule in syntaxModules) { DynamicExtensions.Add(new DynamicExtensionViewModel(syntaxModule)); } foreach (var projectSupport in projectSupports) { ProjectSupports.Add(new ProjectSupportViewModel(projectSupport.Caption, projectSupport.Path, projectSupport)); } } } catch (Exception e) { Debug.WriteLine("Failed to update parser lib metadata" + Environment.NewLine + e); } }
public NitraClientAsync() { _nitraClient = new NitraClient(new StringManager()); var subject = new Subject <MessageWithId <ClientMessage> >(); // Synchronize makes sure that all messages are processed one after another _syncedOutbox = Subject.Synchronize(subject); // Received messages are processed by SendReceive if there is someone waiting for a result // SendReceive is called on TaskPool _inbox = _syncedOutbox.ObserveOn(RxApp.TaskpoolScheduler) .Select(SendReceive) .Publish() .RefCount(); }
public Server(StringManager stringManager, Ide.Config config, IServiceProvider serviceProvider) { Contract.Requires(ServiceProvider != null); ServiceProvider = serviceProvider; var client = new NitraClient(stringManager); client.Send(new ClientMessage.CheckVersion(M.Constants.AssemblyVersionGuid)); var responseMap = client.ResponseMap; responseMap[-1] = Response; _config = config; Client = client; var builder = ImmutableHashSet.CreateBuilder<string>(StringComparer.OrdinalIgnoreCase); foreach (var lang in config.Languages) builder.UnionWith(lang.Extensions); Extensions = builder.ToImmutable(); }