Exemplo n.º 1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="VirtualPeripheralPageViewModel" /> class.
 /// </summary>
 public VirtualPeripheralPageViewModel()
 {
     Context.PropertyChanged += Context_PropertyChanged;
     AvailableServices.Add("Battery");
     AvailableServices.Add("Microsoft Service");
     AvailableServices.Add("Heart Rate Service");
     AvailableServices.Add("Blood Pressure Service");
 }
Exemplo n.º 2
0
        private void ScanTypes()
        {
            _logger.Debug($"Scan for services");
            AssemblyUtils.GetAttribute <ArgonServiceAttribute>().ForEach(s =>
            {
                _logger.Debug($"Registering service {s.Name}");

                _containerBuilder.RegisterType(s).As(AssemblyUtils.GetInterfaceOfType(s)).SingleInstance();
                AvailableServices.Add(s);
            });
        }
        private void InsertFixedBotThomas()
        {
            // Create a Service object for the brick bot
            Service service = new Service("Bricker BIM Bot", "Convert limestone walls to bricks",
                                          "Bricker", "http://www.clker.com/cliparts/a/g/Z/8/6/G/blue-ibm-wall-md.png",
                                          new List <string> {
                "IFC_STEP_2X3TC1"
            },
                                          new List <string> {
                "BCF_ZIP_2_0"
            },
                                          null,
                                          "http://ec2-18-218-56-112.us-east-2.compute.amazonaws.com/");

            // Add the service/bot to the list of services
            AvailableServices.Add(service);
        }
        public void GetAvailableServices()
        {
            try
            {
                // Clear the list
                AvailableServices.Clear();

                // Get list of known providers of BIM Bot services from GitHub
                string resstr = ResponseOfGetRequest("https://raw.githubusercontent.com/opensourceBIM/BIMserver-Repository/master/serviceproviders.json");
                if (resstr != null)
                {
                    // modify the response to add the ifcanalysis provider for now (TODO remove in future)
                    resstr = resstr.Insert(resstr.LastIndexOf(']'), ", {\n" +
                                           "\"name\": \"ifcanalysis.bimserver.services\", \n" +
                                           "\"description\": \"Experimental services provider\", \n" +
                                           "\"listUrl\": \"https://ifcanalysis.bimserver.services/servicelist\"\n" +
                                           "}");

                    // Deserialize the JSON response
                    JsonProviderList gitProviders = JsonConvert.DeserializeObject <JsonProviderList>(resstr);

                    // Insert services of each provider
                    foreach (JsonProvider provider in gitProviders.active)
                    {
                        JsonServiceList serviceList = provider.GetJsonServices();
                        if (serviceList != null)
                        {
                            // Add each service in the list from the JSON response
                            foreach (Service service in serviceList.Services)
                            {
                                // Add the service to the service list
                                AvailableServices.Add(service);
                            }
                        }
                    }
                }

                // add the provider of Kalkzandsteen bot (Thomas) for now (TODO remove in future)
                InsertFixedBotThomas();
            }
            catch (Exception e)
            {
                Console.Write(e);
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Gets the service methods.
        /// </summary>
        /// <param name="serviceName">Name of the service.</param>
        /// <returns></returns>
        public List <string> GetServiceMethods(string serviceName)
        {
            if (!_availableTypes.ContainsKey(serviceName))
            {
                throw new Exception("Service Not Available");
            }

            Type type = _availableTypes[serviceName];

            var methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly).Select(method => method.Name).ToList();

            WebServiceMethods = GetWebMethods(type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly));

            foreach (var contractDescription in Contracts)
            {
                if (contractDescription.Name == serviceName && !AvailableServices.ContainsKey(serviceName))
                {
                    AvailableServices.Add(serviceName, WebServiceMethods);
                }
            }

            return(methods);
        }
Exemplo n.º 6
0
        public MainPageViewModel(IServiceProvider serviceProvider, AppViewModel appViewModel)
            : base(serviceProvider, appViewModel)
        {
            m_connectionInfoProperty           = CreateDictionaryProperty(() => ConnectionInfo, () => null);
            m_connectionInfoTaskStatusProperty = CreateDictionaryProperty(() => ConnectionInfoTaskStatus, () => TaskStatus.Created);
            m_dhcpInfoProperty                  = CreateDictionaryProperty(() => DhcpInfo, () => null);
            m_dhcpInfoTaskStatusProperty        = CreateDictionaryProperty(() => DhcpInfoTaskStatus, () => TaskStatus.Created);
            m_externalAddressProperty           = CreateDictionaryProperty(() => ExternalAddress, () => null);
            m_externalAddressTaskStatusProperty = CreateDictionaryProperty(() => ExternalAddressTaskStatus, () => TaskStatus.Created);
            m_statusProperty                  = CreateDictionaryProperty(() => Status, () => String.Empty);
            m_progressPercentProperty         = CreateDictionaryProperty(() => ProgressPercent, () => 0.0d);
            m_isScanInProgressProperty        = CreateDictionaryProperty(() => IsScanInProgress, () => false);
            m_customSelectionCommandsProperty = CreateDictionaryProperty(() => CustomSelectionCommands, () => new ObservableCollection <UICommand>());
            m_startAddressValueProperty       = CreateSettingsProperty(V1SettingsConstants.StartAddressValueKey, () => StartAddressValue, () => 0u, () => { UpdateActionBarControls(); });
            m_isStartAddressValidProperty     = CreateDictionaryProperty(() => IsStartAddressValid, () => false);
            m_endAddressValueProperty         = CreateSettingsProperty(V1SettingsConstants.EndAddressValueKey, () => EndAddressValue, () => 0u, () => { UpdateActionBarControls(); });
            m_isEndAddressValidProperty       = CreateDictionaryProperty(() => IsEndAddressValid, () => false);

            var hostInfoService = ServiceProvider.GetService <IHostInfoService>();
            var hostInfo        = hostInfoService.GetCurrentHostInfo();

            if (hostInfo == null)
            {
                Status = Strings.Status_GetHostInfoFailed;
            }
            else
            {
                var connectionInfoTask  = RunGetConnectionInfoAsync(hostInfo);
                var dhcpInfoTask        = RunGetDhcpInfoAsync(hostInfo);
                var externalAddressTask = RunGetExternalAddressAsync();

                Task.Factory.ContinueWhenAll(new[] { connectionInfoTask, dhcpInfoTask }, t =>
                {
                    if (ConnectionInfo != null)
                    {
                        if (DhcpInfo != null && DhcpInfo.DnsServerAddress != null)
                        {
                            m_dnsResolver = new UdpDnsResolver(
                                new DnsResolverOptions(),
                                new DatagramSocketFactory(),
                                new IPEndpoint(DhcpInfo.DnsServerAddress, Constants.DefaultDnsPort));
                        }

                        SetAddressValues(ConnectionInfo.Network);

                        IsScanInProgress       = false;
                        m_isScanCommandEnabled = true;
                        m_scanCommand.Refresh();
                        m_isCancelScanCommandEnabled = false;
                        m_cancelScanCommand.Refresh();
                    }
                },
                                             CancellationToken.None,
                                             TaskContinuationOptions.None,
                                             TaskScheduler.FromCurrentSynchronizationContext());
            }

            m_scanCommand = new DelegateCommand(async() =>
            {
                var scanStopwatch = new Stopwatch();
                scanStopwatch.Start();

                m_tokenSource = new CancellationTokenSource();

                AvailableServices.Clear();

                IsScanInProgress       = true;
                m_isScanCommandEnabled = false;
                m_scanCommand.Refresh();
                m_isCancelScanCommandEnabled = true;
                m_cancelScanCommand.Refresh();

                Status = Strings.Status_ScanStarted;

                var selectedAddresses = new IPAddressRange(StartAddressValue, EndAddressValue);
                var networkServices   = await GetNetworkServicesAsync();

                var index    = 0;
                var progress = (IProgress <ScanNetworkBatch>) new Progress <ScanNetworkBatch>(batch =>
                {
                    foreach (var result in batch.Results)
                    {
                        if (result.IsAvailable)
                        {
                            AvailableServices.Add(result);
                        }
                    }
                    index          += batch.Results.Count;
                    ProgressPercent = 100.0d * index / (selectedAddresses.Count * networkServices.Length);
                });

                var task = Task.Factory.StartNew(
                    arg => { Scanner.ScanNetwork(m_tokenSource.Token, m_dnsResolver, selectedAddresses, networkServices, progress); },
                    m_tokenSource.Token,
                    TaskCreationOptions.None);
                var t1 = task.ContinueWith(t =>
                {
                    IsScanInProgress       = false;
                    m_isScanCommandEnabled = true;
                    m_scanCommand.Refresh();
                    m_isCancelScanCommandEnabled = false;
                    m_cancelScanCommand.Refresh();

                    var isCancelled = m_tokenSource.Token.IsCancellationRequested;
                    if (isCancelled)
                    {
                        Status          = Strings.Status_ScanCancelled;
                        ProgressPercent = 0.0d;
                    }
                    else
                    {
                        scanStopwatch.Stop();
                        var timeSpan    = scanStopwatch.Elapsed;
                        Status          = Strings.Format_Status_ScanCompleted(timeSpan);
                        ProgressPercent = 100.0d;
                    }

                    m_tokenSource.Dispose();
                },
                                           CancellationToken.None,
                                           TaskContinuationOptions.None,
                                           TaskScheduler.FromCurrentSynchronizationContext());
            },
                                                () => m_isScanCommandEnabled);

            m_cancelScanCommand = new DelegateCommand(() =>
            {
                m_isCancelScanCommandEnabled = false;
                m_cancelScanCommand.Refresh();

                m_tokenSource.Cancel();
            },
                                                      () => m_isCancelScanCommandEnabled);

            m_showServicesCommand = new DelegateCommand(() =>
            {
                AppViewModel.NavigateToServicesPage();
            });

            m_launchUriCommand = new DelegateCommand <IPEndpoint>(endpoint =>
            {
                AppViewModel.NavigateToBrowserPage(endpoint);
            });
        }