public void Init(DeviceDescriptionHolder devHolder, NvtSessionFactory sessionFactory, IUnityContainer container) { this.container = container; //Add device section (all devices must have this section) parent.Title = devHolder.Name; //Display progress bar devicePanel.Content = new ProgressView("Loading ..."); //Begin load device section disposables.Add(SectionDevice.Load(devHolder, sessionFactory) .ObserveOnCurrentDispatcher() .Subscribe( args => { invtSession = args.nvtSession; SectionDevice devView = container.Resolve<SectionDevice>(); disposables.Add(devView); devView.Init(args); devicePanel.Content = devView; //Load sections LoadSections(args); }, err => { ErrorView errorView = new ErrorView(err); disposables.Add(errorView); devicePanel.Content = errorView; } )); }
public static FSharpAsync<DeviceViewArgs> Load(DeviceDescriptionHolder devHolder, NvtSessionFactory sessionFactory) { DeviceViewArgs args = new DeviceViewArgs(); args.deviceIconUri = devHolder.DeviceIconUri; args.deviceModel = devHolder.DeviceModel; args.manufacturer = devHolder.Manufacturer; return Apm.Iterate(LoadImpl(devHolder, sessionFactory, args)).Select(f => { return args; }); }
static IEnumerable<FSharpAsync<Unit>> LoadImpl(DeviceDescriptionHolder devHolder, NvtSessionFactory sessionFactory, DeviceViewArgs args) { yield return sessionFactory.CreateSession(devHolder.Uris).Select(f => { args.nvtSession = f; return (Unit)null; }); args.odmSession = new OdmSession(args.nvtSession); yield return args.nvtSession.GetAllCapabilities().Select(caps => { args.capabilities = caps; return (Unit)null; }); }